mado-ui 0.5.4 → 0.5.7

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.
Files changed (92) hide show
  1. package/css/index.css +283 -8
  2. package/dist/components/drop-down.d.ts +12 -12
  3. package/dist/components/drop-down.d.ts.map +1 -1
  4. package/dist/components/form/human-verification.d.ts +15 -0
  5. package/dist/components/form/human-verification.d.ts.map +1 -0
  6. package/dist/components/form/input/date/views/calendar-view.d.ts +2 -0
  7. package/dist/components/form/input/date/views/calendar-view.d.ts.map +1 -0
  8. package/dist/components/form/input/date/views/clock-view.d.ts +2 -0
  9. package/dist/components/form/input/date/views/clock-view.d.ts.map +1 -0
  10. package/dist/components/form/input/date/views/dropdown-view.d.ts +2 -0
  11. package/dist/components/form/input/date/views/dropdown-view.d.ts.map +1 -0
  12. package/dist/components/form/input/date/views/rotary-view.d.ts +2 -0
  13. package/dist/components/form/input/date/views/rotary-view.d.ts.map +1 -0
  14. package/dist/components/form/input/date/views/view-handler.d.ts +21 -0
  15. package/dist/components/form/input/date/views/view-handler.d.ts.map +1 -0
  16. package/dist/components/form/input/index.d.ts +24 -24
  17. package/dist/components/form/input/index.d.ts.map +1 -1
  18. package/dist/components/form/input/input-types.d.ts +102 -0
  19. package/dist/components/form/input/input-types.d.ts.map +1 -0
  20. package/dist/components/form/input/number-input.d.ts +4 -0
  21. package/dist/components/form/input/number-input.d.ts.map +1 -0
  22. package/dist/components/form/input/text-input.d.ts +36 -0
  23. package/dist/components/form/input/text-input.d.ts.map +1 -0
  24. package/dist/components/form/select.d.ts +41 -0
  25. package/dist/components/form/select.d.ts.map +1 -0
  26. package/dist/components/link.d.ts +14 -13
  27. package/dist/components/link.d.ts.map +1 -1
  28. package/dist/components/tooltip.d.ts +7 -7
  29. package/dist/components/tooltip.d.ts.map +1 -1
  30. package/dist/components/video.d.ts +6 -6
  31. package/dist/components/video.d.ts.map +1 -1
  32. package/dist/components.d.ts +50 -49
  33. package/dist/components.esm.js +600 -459
  34. package/dist/components.esm.js.map +1 -1
  35. package/dist/components.js +598 -456
  36. package/dist/components.js.map +1 -1
  37. package/dist/graphics/index.d.ts +2 -0
  38. package/dist/graphics/index.d.ts.map +1 -0
  39. package/dist/graphics/social-media/facebook-logo.d.ts +33 -0
  40. package/dist/graphics/social-media/facebook-logo.d.ts.map +1 -0
  41. package/dist/graphics/social-media/google-logo.d.ts +13 -0
  42. package/dist/graphics/social-media/google-logo.d.ts.map +1 -0
  43. package/dist/graphics/social-media/index.d.ts +8 -0
  44. package/dist/graphics/social-media/index.d.ts.map +1 -0
  45. package/dist/graphics/social-media/instagram-logo.d.ts +13 -0
  46. package/dist/graphics/social-media/instagram-logo.d.ts.map +1 -0
  47. package/dist/graphics/social-media/linkedin-logo.d.ts +26 -0
  48. package/dist/graphics/social-media/linkedin-logo.d.ts.map +1 -0
  49. package/dist/graphics/social-media/tiktok-logo.d.ts +26 -0
  50. package/dist/graphics/social-media/tiktok-logo.d.ts.map +1 -0
  51. package/dist/graphics/social-media/x-logo.d.ts +6 -0
  52. package/dist/graphics/social-media/x-logo.d.ts.map +1 -0
  53. package/dist/graphics/social-media/youtube-logo.d.ts +26 -0
  54. package/dist/graphics/social-media/youtube-logo.d.ts.map +1 -0
  55. package/dist/graphics.d.ts +141 -0
  56. package/dist/graphics.d.ts.map +1 -0
  57. package/dist/graphics.esm.js +241 -0
  58. package/dist/graphics.esm.js.map +1 -0
  59. package/dist/graphics.js +249 -0
  60. package/dist/graphics.js.map +1 -0
  61. package/dist/icons/index.d.ts +142 -143
  62. package/dist/icons/index.d.ts.map +1 -1
  63. package/dist/icons/square-and-arrow-up-right.d.ts +3 -0
  64. package/dist/icons/square-and-arrow-up-right.d.ts.map +1 -0
  65. package/dist/icons/square-and-pencil.d.ts +2 -2
  66. package/dist/icons/square-and-pencil.d.ts.map +1 -1
  67. package/dist/icons.d.ts +2 -4
  68. package/dist/icons.esm.js +2 -6
  69. package/dist/icons.esm.js.map +1 -1
  70. package/dist/icons.js +1 -6
  71. package/dist/icons.js.map +1 -1
  72. package/dist/index.d.ts +50 -49
  73. package/dist/index.esm.js +600 -459
  74. package/dist/index.esm.js.map +1 -1
  75. package/dist/index.js +598 -456
  76. package/dist/index.js.map +1 -1
  77. package/dist/utils/string-manipulation.d.ts +23 -1
  78. package/dist/utils/string-manipulation.d.ts.map +1 -1
  79. package/dist/utils.d.ts +24 -2
  80. package/dist/utils.esm.js +76 -18
  81. package/dist/utils.esm.js.map +1 -1
  82. package/dist/utils.js +78 -17
  83. package/dist/utils.js.map +1 -1
  84. package/package.json +24 -32
  85. package/dist/components/mado-ui-provider.d.ts +0 -1
  86. package/dist/hooks/use-anime-scope.d.ts +0 -15
  87. package/dist/icons/square-and-pencil-fill.d.ts +0 -3
  88. package/dist/icons/square-and-pencil-fill.d.ts.map +0 -1
  89. package/dist/types.esm.js +0 -2
  90. package/dist/types.esm.js.map +0 -1
  91. package/dist/types.js +0 -3
  92. package/dist/types.js.map +0 -1
@@ -38,8 +38,23 @@
38
38
  */
39
39
  export declare function formatPhoneNumber(phoneNumber: string, options?: Partial<{
40
40
  countryCode: string;
41
- format: 'continuous' | 'dot' | 'hyphenated' | 'none' | 'space' | 'standard';
41
+ format: "continuous" | "dot" | "hyphenated" | "none" | "space" | "standard";
42
42
  }>): string;
43
+ /**
44
+ * ### Split Camel Case
45
+ * - Separates a camel case string with a joiner (default: ' ')
46
+ * @param {string} string
47
+ * @returns {string} string
48
+ */
49
+ export declare function splitCamelCase(string: string, joiner?: string): string;
50
+ /**
51
+ * ### To Camel Case
52
+ * - Converts any string to camel case based on spaces
53
+ * - Eliminates no letter-number characters
54
+ * @param {string} string
55
+ * @returns {string} string
56
+ */
57
+ export declare function toCamelCase(string: string, delimiter?: string): string;
43
58
  /**
44
59
  * # To Lower Case
45
60
  * Converts a string to lowercase, and offers easy string replacements for creating snake case, kebab case, or your own.
@@ -50,4 +65,11 @@ export declare function formatPhoneNumber(phoneNumber: string, options?: Partial
50
65
  * @returns The lowercase version of the input string, with the replacements, if provided.
51
66
  */
52
67
  export declare function toLowerCase(str: string, [delimiter, joiner]: [string | undefined, string | undefined]): string;
68
+ /**
69
+ * ### To Title Case
70
+ * - Converts any string to title case based on spaces
71
+ * @param {string} string
72
+ * @returns {string} string
73
+ */
74
+ export declare function toTitleCase(string: string, delimiter?: string): string;
53
75
  //# sourceMappingURL=string-manipulation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string-manipulation.d.ts","sourceRoot":"","sources":["../../src/utils/string-manipulation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,iBAAiB,CAChC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,YAAY,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;CAC3E,CAAC,GACA,MAAM,CAiDR;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,UAErG"}
1
+ {"version":3,"file":"string-manipulation.d.ts","sourceRoot":"","sources":["../../src/utils/string-manipulation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,iBAAiB,CAChC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,YAAY,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;CAC5E,CAAC,GACA,MAAM,CAoDR;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,MAAM,CAiB3E;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,MAAM,CAY3E;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAC1B,GAAG,EAAE,MAAM,EACX,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC,UAG7D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,MAAM,CAW3E"}
package/dist/utils.d.ts CHANGED
@@ -268,8 +268,23 @@ declare function isPhoneNumber(tel: string): boolean;
268
268
  */
269
269
  declare function formatPhoneNumber(phoneNumber: string, options?: Partial<{
270
270
  countryCode: string;
271
- format: 'continuous' | 'dot' | 'hyphenated' | 'none' | 'space' | 'standard';
271
+ format: "continuous" | "dot" | "hyphenated" | "none" | "space" | "standard";
272
272
  }>): string;
273
+ /**
274
+ * ### Split Camel Case
275
+ * - Separates a camel case string with a joiner (default: ' ')
276
+ * @param {string} string
277
+ * @returns {string} string
278
+ */
279
+ declare function splitCamelCase(string: string, joiner?: string): string;
280
+ /**
281
+ * ### To Camel Case
282
+ * - Converts any string to camel case based on spaces
283
+ * - Eliminates no letter-number characters
284
+ * @param {string} string
285
+ * @returns {string} string
286
+ */
287
+ declare function toCamelCase(string: string, delimiter?: string): string;
273
288
  /**
274
289
  * # To Lower Case
275
290
  * Converts a string to lowercase, and offers easy string replacements for creating snake case, kebab case, or your own.
@@ -280,8 +295,15 @@ declare function formatPhoneNumber(phoneNumber: string, options?: Partial<{
280
295
  * @returns The lowercase version of the input string, with the replacements, if provided.
281
296
  */
282
297
  declare function toLowerCase(str: string, [delimiter, joiner]: [string | undefined, string | undefined]): string;
298
+ /**
299
+ * ### To Title Case
300
+ * - Converts any string to title case based on spaces
301
+ * @param {string} string
302
+ * @returns {string} string
303
+ */
304
+ declare function toTitleCase(string: string, delimiter?: string): string;
283
305
 
284
306
  declare function twSort(className: string): string;
285
307
 
286
- export { addClass, currentMonthName, currentWeekdayName, daysInMonth, easeOutExpo, emailRegex, extendMadoTailwindMerge, findComponentByType, firstOfMonth, formatPhoneNumber, getDate, getHours, getHoursIn12, getLocalTime, getMeridianFromHour, getMilliseconds, getMinutes, getMonth, getMonthIndexFromName, getMonthName, getNextMonth, getPreviousMonth, getSeconds, getTimezone, getUserReadableDate, getUserReadableDateFromTimestampz, getWeekdayName, getYearsInRange, hasClass, isEmail, isPhoneNumber, monthNamesList, removeClass, telRegex, toFullDateString, toLowerCase, toggleClass, twMerge, twSort, weekdayNamesList };
308
+ export { addClass, currentMonthName, currentWeekdayName, daysInMonth, easeOutExpo, emailRegex, extendMadoTailwindMerge, findComponentByType, firstOfMonth, formatPhoneNumber, getDate, getHours, getHoursIn12, getLocalTime, getMeridianFromHour, getMilliseconds, getMinutes, getMonth, getMonthIndexFromName, getMonthName, getNextMonth, getPreviousMonth, getSeconds, getTimezone, getUserReadableDate, getUserReadableDateFromTimestampz, getWeekdayName, getYearsInRange, hasClass, isEmail, isPhoneNumber, monthNamesList, removeClass, splitCamelCase, telRegex, toCamelCase, toFullDateString, toLowerCase, toTitleCase, toggleClass, twMerge, twSort, weekdayNamesList };
287
309
  export type { AdditionalmadoClassGroupIds, DateTimeObject, DayNumber, HourNumber, MinuteNumber, MonthName, MonthNumber, SecondNumber, WeekNumber, WeekdayName, WeekdayNumber };
package/dist/utils.esm.js CHANGED
@@ -765,13 +765,14 @@ function isPhoneNumber(tel) {
765
765
  * @returns {string} string formatted
766
766
  */
767
767
  function formatPhoneNumber(phoneNumber, options) {
768
- const format = options?.format || 'standard';
769
- if (format !== 'none')
770
- phoneNumber = phoneNumber.replace(/\D/g, '').slice(-10);
768
+ const format = options?.format || "standard";
769
+ if (format !== "none") {
770
+ phoneNumber = phoneNumber.replace(/\D/g, "").slice(-10);
771
+ }
771
772
  switch (format) {
772
- case 'dot':
773
+ case "dot":
773
774
  phoneNumber = phoneNumber
774
- .split('')
775
+ .split("")
775
776
  .map((char, index) => {
776
777
  if (index === 2)
777
778
  return `${char}.`;
@@ -779,11 +780,11 @@ function formatPhoneNumber(phoneNumber, options) {
779
780
  return `${char}.`;
780
781
  return char;
781
782
  })
782
- .join('');
783
+ .join("");
783
784
  break;
784
- case 'hyphenated':
785
+ case "hyphenated":
785
786
  phoneNumber = phoneNumber
786
- .split('')
787
+ .split("")
787
788
  .map((char, index) => {
788
789
  if (index === 2)
789
790
  return `${char}-`;
@@ -791,11 +792,11 @@ function formatPhoneNumber(phoneNumber, options) {
791
792
  return `${char}-`;
792
793
  return char;
793
794
  })
794
- .join('');
795
+ .join("");
795
796
  break;
796
- case 'space':
797
+ case "space":
797
798
  phoneNumber = phoneNumber
798
- .split('')
799
+ .split("")
799
800
  .map((char, index) => {
800
801
  if (index === 2)
801
802
  return `${char} `;
@@ -803,11 +804,11 @@ function formatPhoneNumber(phoneNumber, options) {
803
804
  return `${char} `;
804
805
  return char;
805
806
  })
806
- .join('');
807
+ .join("");
807
808
  break;
808
- case 'standard':
809
+ case "standard":
809
810
  phoneNumber = phoneNumber
810
- .split('')
811
+ .split("")
811
812
  .map((char, index) => {
812
813
  if (index === 0)
813
814
  return `(${char}`;
@@ -817,9 +818,50 @@ function formatPhoneNumber(phoneNumber, options) {
817
818
  return `${char}-`;
818
819
  return char;
819
820
  })
820
- .join('');
821
+ .join("");
821
822
  }
822
- return `${options?.countryCode ? `+${options?.countryCode} ` : ''}` + phoneNumber;
823
+ return `${options?.countryCode ? `+${options?.countryCode} ` : ""}` +
824
+ phoneNumber;
825
+ }
826
+ /**
827
+ * ### Split Camel Case
828
+ * - Separates a camel case string with a joiner (default: ' ')
829
+ * @param {string} string
830
+ * @returns {string} string
831
+ */
832
+ function splitCamelCase(string, joiner = " ") {
833
+ if (string[0].match(/[A-Z0-9]/) || string.includes(" "))
834
+ return string;
835
+ let lastChar = "";
836
+ return string.split("")
837
+ .map((char) => {
838
+ let returnedString = char;
839
+ if (char.match(/[A-Z0-9]/))
840
+ returnedString = ` ${char}`;
841
+ if (lastChar.match(/[0-9]/) && char.match(/[0-9]/))
842
+ returnedString = char;
843
+ lastChar = char;
844
+ return returnedString;
845
+ })
846
+ .join(joiner);
847
+ }
848
+ /**
849
+ * ### To Camel Case
850
+ * - Converts any string to camel case based on spaces
851
+ * - Eliminates no letter-number characters
852
+ * @param {string} string
853
+ * @returns {string} string
854
+ */
855
+ function toCamelCase(string, delimiter = " ") {
856
+ if (typeof string !== "string")
857
+ return string;
858
+ return string
859
+ .toLowerCase()
860
+ .replace(/[^a-z0-9]/gi, delimiter)
861
+ .split(delimiter)
862
+ .map((str, index) => index === 0 ? str : str.substring(0, 1).toUpperCase() +
863
+ str.substring(1, str.length).toLowerCase())
864
+ .join("");
823
865
  }
824
866
  /**
825
867
  * # To Lower Case
@@ -831,12 +873,28 @@ function formatPhoneNumber(phoneNumber, options) {
831
873
  * @returns The lowercase version of the input string, with the replacements, if provided.
832
874
  */
833
875
  function toLowerCase(str, [delimiter, joiner]) {
834
- return str.toLowerCase().replaceAll(delimiter || ' ', joiner || ' ');
876
+ return str.toLowerCase().replaceAll(delimiter || " ", joiner || " ");
877
+ }
878
+ /**
879
+ * ### To Title Case
880
+ * - Converts any string to title case based on spaces
881
+ * @param {string} string
882
+ * @returns {string} string
883
+ */
884
+ function toTitleCase(string, delimiter = " ") {
885
+ if (typeof string !== "string")
886
+ return string;
887
+ return string
888
+ .toLowerCase()
889
+ .split(delimiter)
890
+ .map((str) => str.substring(0, 1).toUpperCase() +
891
+ str.substring(1, str.length).toLowerCase())
892
+ .join(" ");
835
893
  }
836
894
 
837
895
  function twSort(className) {
838
896
  return className;
839
897
  }
840
898
 
841
- export { addClass, currentMonthName, currentWeekdayName, daysInMonth, easeOutExpo, emailRegex, extendMadoTailwindMerge, findComponentByType, firstOfMonth, formatPhoneNumber, getDate, getHours, getHoursIn12, getLocalTime, getMeridianFromHour, getMilliseconds, getMinutes, getMonth, getMonthIndexFromName, getMonthName, getNextMonth, getPreviousMonth, getSeconds, getTimezone, getUserReadableDate, getUserReadableDateFromTimestampz, getWeekdayName, getYearsInRange, hasClass, isEmail, isPhoneNumber, monthNamesList, removeClass, telRegex, toFullDateString, toLowerCase, toggleClass, twMerge, twSort, weekdayNamesList };
899
+ export { addClass, currentMonthName, currentWeekdayName, daysInMonth, easeOutExpo, emailRegex, extendMadoTailwindMerge, findComponentByType, firstOfMonth, formatPhoneNumber, getDate, getHours, getHoursIn12, getLocalTime, getMeridianFromHour, getMilliseconds, getMinutes, getMonth, getMonthIndexFromName, getMonthName, getNextMonth, getPreviousMonth, getSeconds, getTimezone, getUserReadableDate, getUserReadableDateFromTimestampz, getWeekdayName, getYearsInRange, hasClass, isEmail, isPhoneNumber, monthNamesList, removeClass, splitCamelCase, telRegex, toCamelCase, toFullDateString, toLowerCase, toTitleCase, toggleClass, twMerge, twSort, weekdayNamesList };
842
900
  //# sourceMappingURL=utils.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.esm.js","sources":["../src/utils/class-management.ts","../src/utils/custom-tailwind-merge.ts","../src/utils/get-date.ts","../src/utils/helpers.tsx","../src/utils/math.ts","../src/utils/regex.ts","../src/utils/string-manipulation.ts","../src/utils/tw-sort.ts"],"sourcesContent":["/**\n * ### Has Class\n * - Returns a boolean based on whether the specified element has the specified class\n * @param {HTMLElement} element Any HTML Element\n * @param {string} className A string of any class to check for\n * @returns {boolean} true if the specified element has the specified class, else false\n */\nexport function hasClass(element: HTMLElement, className: string): boolean {\n return element.classList.contains(className)\n}\n\n/**\n * ### Add Class\n * - Adds the specified classes to the specified elements\n * @param {Element|HTMLElement|HTMLElement[]|NodeList|string|undefined} elements An HTML Element, an array of HTML Elements, a Node List, a string (as a selector for a querySelector)\n * @param {string|string[]} classList A string or an array of classes to add to each element\n */\nexport function addClass(\n elements: Element | HTMLElement | HTMLElement[] | NodeList | string,\n classList: string | string[],\n) {\n const elementsType = elements.constructor.name,\n elementsIsString = typeof elements === 'string',\n classListType = classList.constructor.name,\n classListIsString = typeof classList === 'string'\n\n let elementList: HTMLElement[] | undefined,\n classListGroup: string[] | undefined\n\n // & Convert elements to array\n switch (elementsType) {\n // Selector\n case 'String':\n if (elementsIsString)\n elementList = Array.from(document.querySelectorAll(elements))\n break\n // Multiple HTML Elements\n case 'NodeList':\n if (!elementsIsString)\n elementList = Array.from(elements as NodeList) as HTMLElement[]\n break\n // Array of Elements\n case 'Array':\n if (!elementsIsString) elementList = elements as HTMLElement[]\n break\n // Single HTML Element\n default:\n if (elementsType.startsWith('HTML') && !elementsIsString)\n elementList = [elements as Element & HTMLElement]\n }\n\n // & Convert classList to array\n switch (classListType) {\n case 'String':\n if (classListIsString)\n if (classList.split(' ').length >= 2) {\n classListGroup = classList.split(' ')\n } else {\n classListGroup = [classList]\n }\n break\n case 'Array':\n if (!classListIsString) classListGroup = classList\n break\n }\n\n if (!elementList || elementList.length < 1)\n throw new Error(\n `Elements are invalid or undefined. elements: ${elements} → elementList: ${elementList}`,\n )\n\n if (!classListGroup || classListGroup.length < 1)\n throw new Error(\n `Class List is invalid or undefined. classList: ${classList} → classListGroup: ${classListGroup}`,\n )\n\n elementList.forEach((element) =>\n classListGroup.forEach((classItem) => {\n if (hasClass(element, classItem)) return\n element.classList.add(classItem)\n }),\n )\n}\n\n/**\n * ### Remove Class\n * - Removes the specified classes from the specified elements\n * @param {HTMLElement|HTMLElement[]|NodeList|string|undefined} elements An HTML Element, an array of HTML Elements, a Node List, a string (as a selector for a querySelector)\n * @param {string|string[]} classList A string or an array of classes to remove from each element\n */\nexport function removeClass(\n elements: HTMLElement | HTMLElement[] | NodeList | string,\n classList: string | string[],\n) {\n const elementsType = elements.constructor.name,\n elementsIsString = typeof elements === 'string',\n classListType = classList.constructor.name,\n classListIsString = typeof classList === 'string'\n\n let elementList: HTMLElement[] | undefined,\n classListGroup: string[] | undefined\n\n // & Convert elements to array\n switch (elementsType) {\n // Selector\n case 'String':\n if (elementsIsString)\n elementList = Array.from(document.querySelectorAll(elements))\n break\n // Multiple HTML Elements\n case 'NodeList':\n if (!elementsIsString)\n elementList = Array.from(elements as NodeList) as HTMLElement[]\n break\n // Array of Elements\n case 'Array':\n if (!elementsIsString) elementList = elements as HTMLElement[]\n break\n // Single HTML Element\n default:\n if (elementsType.startsWith('HTML') && !elementsIsString)\n elementList = [elements as Element & HTMLElement]\n }\n\n // & Convert classList to array\n switch (classListType) {\n case 'String':\n if (classListIsString)\n if (classList.split(' ').length >= 2) {\n classListGroup = classList.split(' ')\n } else {\n classListGroup = [classList]\n }\n break\n case 'Array':\n if (!classListIsString) classListGroup = classList\n break\n }\n\n if (!elementList || elementList.length < 1)\n throw new Error(\n `Elements are invalid or undefined. elements: ${elements} → elementList: ${elementList}`,\n )\n\n if (!classListGroup || classListGroup.length < 1)\n throw new Error(\n `Class List is invalid or undefined. classList: ${classList} → classListGroup: ${classListGroup}`,\n )\n\n elementList.forEach((element) =>\n classListGroup.forEach((classItem) => {\n if (!hasClass(element, classItem)) return\n element.classList.remove(classItem)\n }),\n )\n}\n\n/**\n * ### Toggle Class\n * - Toggles the specified classes on the specified elements\n * @param {HTMLElement|HTMLElement[]|NodeList|string|undefined} elements An HTML Element, an array of HTML Elements, a Node List, a string (as a selector for a querySelector)\n * @param {string|string[]} classList A string or an array of classes to toggle on each element\n */\nexport function toggleClass(\n elements: HTMLElement | HTMLElement[] | NodeList | string,\n classList: string | string[],\n) {\n const elementsType = elements.constructor.name,\n elementsIsString = typeof elements === 'string',\n classListType = classList.constructor.name,\n classListIsString = typeof classList === 'string'\n\n let elementList: HTMLElement[] | undefined,\n classListGroup: string[] | undefined\n\n // & Convert elements to array\n switch (elementsType) {\n // Selector\n case 'String':\n if (elementsIsString)\n elementList = Array.from(document.querySelectorAll(elements))\n break\n // Multiple HTML Elements\n case 'NodeList':\n if (!elementsIsString)\n elementList = Array.from(elements as NodeList) as HTMLElement[]\n break\n // Array of Elements\n case 'Array':\n if (!elementsIsString) elementList = elements as HTMLElement[]\n break\n // Single HTML Element\n default:\n if (elementsType.startsWith('HTML') && !elementsIsString)\n elementList = [elements as Element & HTMLElement]\n }\n\n // & Convert classList to array\n switch (classListType) {\n case 'String':\n if (classListIsString)\n if (classList.split(' ').length >= 2) {\n classListGroup = classList.split(' ')\n } else {\n classListGroup = [classList]\n }\n break\n case 'Array':\n if (!classListIsString) classListGroup = classList\n break\n }\n\n if (!elementList || elementList.length < 1)\n throw new Error(\n `Elements are invalid or undefined. elements: ${elements} → elementList: ${elementList}`,\n )\n\n if (!classListGroup || classListGroup.length < 1)\n throw new Error(\n `Class List is invalid or undefined. classList: ${classList} → classListGroup: ${classListGroup}`,\n )\n\n elementList.forEach((element) =>\n classListGroup.forEach((classItem) => {\n element.classList.toggle(classItem)\n }),\n )\n}\n","import { ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds, extendTailwindMerge } from 'tailwind-merge'\n\nexport type AdditionalmadoClassGroupIds =\n\t| 'animation-direction'\n\t| 'animation-fill'\n\t| 'animation-iteration'\n\t| 'animation-state'\n\nconst integerList = Array.from({ length: 100 }, (_, i) => `${i + 1}`)\n\nexport const twMerge = extendTailwindMerge<AdditionalmadoClassGroupIds>({\n\textend: {\n\t\ttheme: {\n\t\t\tcolor: [\n\t\t\t\t{\n\t\t\t\t\tui: [\n\t\t\t\t\t\t'red',\n\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t'green',\n\t\t\t\t\t\t'sky-blue',\n\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t'violet',\n\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t'grey',\n\t\t\t\t\t\t'pink',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tclassGroups: {\n\t\t\tanimate: [\n\t\t\t\t{\n\t\t\t\t\tanimate: [\n\t\t\t\t\t\t'bounce',\n\t\t\t\t\t\t'double-spin',\n\t\t\t\t\t\t'drop-in',\n\t\t\t\t\t\t'flip',\n\t\t\t\t\t\t'flip-again',\n\t\t\t\t\t\t'grid-rows',\n\t\t\t\t\t\t'heartbeat',\n\t\t\t\t\t\t'ping',\n\t\t\t\t\t\t'pulse',\n\t\t\t\t\t\t'slide-up',\n\t\t\t\t\t\t'spin',\n\t\t\t\t\t\t'wave',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-direction': [\n\t\t\t\t{\n\t\t\t\t\t'animation-direction': ['normal', 'reverse', 'alternate', 'alternate-reverse'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-fill': [\n\t\t\t\t{\n\t\t\t\t\t'animation-fill': ['none', 'forwards', 'backwards', 'both'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-iteration': [\n\t\t\t\t{\n\t\t\t\t\t'animation-iteration': [...integerList, 'infinite'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-state': [\n\t\t\t\t{\n\t\t\t\t\t'animation-state': ['running', 'paused'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'grid-cols': [\n\t\t\t\t{\n\t\t\t\t\t'grid-cols': ['0fr', '1fr'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'grid-rows': [\n\t\t\t\t{\n\t\t\t\t\t'grid-rows': ['0fr', '1fr'],\n\t\t\t\t},\n\t\t\t],\n\t\t\ttransition: ['transition-rows'],\n\t\t},\n\t},\n})\n\nexport function extendMadoTailwindMerge<\n\tAdditionalClassGroupIds extends string = AdditionalmadoClassGroupIds,\n\tAdditionalThemeGroupIds extends string = never,\n>(\n\tconfigExtension: ConfigExtension<\n\t\tDefaultClassGroupIds | AdditionalClassGroupIds,\n\t\tDefaultThemeGroupIds | AdditionalThemeGroupIds\n\t>,\n) {\n\tconst extend = configExtension.extend || {}\n\tconst theme = extend.theme || {}\n\tconst color = 'color' in theme ? theme.color : []\n\tconst classGroups = extend.classGroups || {}\n\n\tconst themeRest = { ...theme }\n\tif ('color' in themeRest) delete themeRest.color\n\n\tconst extendRest = { ...extend }\n\tdelete extendRest.theme\n\tdelete extendRest.classGroups\n\n\treturn extendTailwindMerge<AdditionalClassGroupIds, AdditionalThemeGroupIds>({\n\t\textend: {\n\t\t\ttheme: {\n\t\t\t\tcolor: [\n\t\t\t\t\t{\n\t\t\t\t\t\tui: [\n\t\t\t\t\t\t\t'red',\n\t\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t\t'green',\n\t\t\t\t\t\t\t'sky-blue',\n\t\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t\t'violet',\n\t\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t\t'grey',\n\t\t\t\t\t\t\t'pink',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t...(color as { [key: string]: string[] }[]),\n\t\t\t\t],\n\t\t\t\t...themeRest,\n\t\t\t} as { [key: string]: { [key: string]: string[] }[] } | any,\n\t\t\tclassGroups: {\n\t\t\t\tanimate: [\n\t\t\t\t\t{\n\t\t\t\t\t\tanimate: [\n\t\t\t\t\t\t\t'bounce',\n\t\t\t\t\t\t\t'double-spin',\n\t\t\t\t\t\t\t'drop-in',\n\t\t\t\t\t\t\t'flip',\n\t\t\t\t\t\t\t'flip-again',\n\t\t\t\t\t\t\t'grid-rows',\n\t\t\t\t\t\t\t'heartbeat',\n\t\t\t\t\t\t\t'ping',\n\t\t\t\t\t\t\t'pulse',\n\t\t\t\t\t\t\t'slide-up',\n\t\t\t\t\t\t\t'spin',\n\t\t\t\t\t\t\t'wave',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-direction': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-direction': ['normal', 'reverse', 'alternate', 'alternate-reverse'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-fill': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-fill': ['none', 'forwards', 'backwards', 'both'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-iteration': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-iteration': [...integerList, 'infinite'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-state': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-state': ['running', 'paused'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'grid-cols': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'grid-cols': ['0fr', '1fr'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'grid-rows': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'grid-rows': ['0fr', '1fr'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\ttransition: ['transition-rows'],\n\t\t\t\t...classGroups,\n\t\t\t} as { [key: string]: { [key: string]: string[] }[] } | any,\n\t\t\t...extendRest,\n\t\t},\n\t\t...configExtension,\n\t})\n}\n","export type DayNumber =\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\nexport type DateTimeObject = {\n\tday: DayNumber\n\thour: HourNumber\n\tminute: MinuteNumber\n\tmonth: MonthNumber | MonthName\n\tsecond: SecondNumber\n\tyear: number\n}\n\nexport type HourNumber =\n\t| 0\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\nexport type MinuteNumber =\n\t| 0\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\t| 32\n\t| 33\n\t| 34\n\t| 35\n\t| 36\n\t| 37\n\t| 38\n\t| 39\n\t| 40\n\t| 41\n\t| 42\n\t| 43\n\t| 44\n\t| 45\n\t| 46\n\t| 47\n\t| 48\n\t| 49\n\t| 50\n\t| 51\n\t| 52\n\t| 53\n\t| 54\n\t| 55\n\t| 56\n\t| 57\n\t| 58\n\t| 59\n\nexport type MonthName =\n\t| 'January'\n\t| 'February'\n\t| 'March'\n\t| 'April'\n\t| 'May'\n\t| 'June'\n\t| 'July'\n\t| 'August'\n\t| 'September'\n\t| 'October'\n\t| 'November'\n\t| 'December'\n\nexport type MonthNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n\nexport type SecondNumber = MinuteNumber\n\nexport type WeekdayName = 'Sunday' | 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday'\n\nexport type WeekdayNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7\n\nexport type WeekNumber =\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\t| 32\n\t| 33\n\t| 34\n\t| 35\n\t| 36\n\t| 37\n\t| 38\n\t| 39\n\t| 40\n\t| 41\n\t| 42\n\t| 43\n\t| 44\n\t| 45\n\t| 46\n\t| 47\n\t| 48\n\t| 49\n\t| 50\n\t| 51\n\t| 52\n\t| 53\n\n/** The current date as a Date object */\nconst d = new Date()\n\n/** The current minute of the current hour */\nconst minutes = d.getMinutes()\n\n/** The current year */\nconst year = d.getFullYear()\n\n/** An array of the names of month in order */\nexport const monthNamesList: MonthName[] = [\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December',\n]\n\n/** An array of the names of the days of the week in order */\nexport const weekdayNamesList: WeekdayName[] = [\n\t'Sunday',\n\t'Monday',\n\t'Tuesday',\n\t'Wednesday',\n\t'Thursday',\n\t'Friday',\n\t'Saturday',\n]\n\n/** The name of the current month */\nexport const currentMonthName = getMonthName()\n\n/** The name of the current day of the week */\nexport const currentWeekdayName = getWeekdayName()\n\n/**\n * ### Days In Month\n * - Returns the number of days in the specified month.\n * @param {Date} date A Date object representing the month to get the number of days for. (Preset to the current date)\n * @returns {number} The number of days in the specified month.\n */\nexport function daysInMonth(date: Date = d): number {\n\tconst selectedYear = date.getFullYear(),\n\t\tselectedMonth = date.getMonth() + 1\n\treturn new Date(selectedYear, selectedMonth, 0).getDate()\n}\n\n/**\n * ### First of Month\n * - Returns the first day of the specified month.\n * @param {Date} date A Date object representing the month to get the first day for. (Preset to current date)\n * @returns {Date} A Date object of the given month, with the first day.\n */\nexport function firstOfMonth(date: Date = d): Date {\n\t// Return a new Date object with the first of the month selected\n\treturn new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\n/**\n * ### Get Date\n * - Returns the date with two digits\n * @param {number|Date} date The date to get date\n * @returns {string} The date with two digits\n */\nexport function getDate(date: number | Date = d): string {\n\tif (typeof date !== 'number') date = date.getDate()\n\tlet formattedDate = date.toString()\n\tif (formattedDate.length === 1) formattedDate = `0${formattedDate}`\n\treturn formattedDate\n}\n\n/**\n * ### Get Hours\n * - Returns the hours with two digits\n * @param {number|Date} hours The date to get hours\n * @returns {string} The hours with two digits\n */\nexport function getHours(hours: number | Date = d): string {\n\tif (typeof hours !== 'number') hours = hours.getHours()\n\tlet formattedHours = hours.toString()\n\tif (formattedHours.length === 1) formattedHours = `0${formattedHours}`\n\treturn formattedHours\n}\n\n/**\n * ### Get Hours in 12\n * - Returns the hour based on the specified 24 hour value in a 12 hour format\n * @param {number|Date} hour The hour to be converted to 12 hour format\n * @returns {number} The hour in a 12 hour format\n */\nexport function getHoursIn12(hour: number | Date = d): number {\n\tif (typeof hour !== 'number') hour = hour.getHours()\n\tif (hour > 12) return hour - 12\n\treturn hour\n}\n\n/**\n * ### Get Meridian from Hour\n * - Returns either 'pm' or 'am' based on the specified 24 hour value\n * @param {number|Date} hour The hour to get the meridian from\n * @returns {'am'|'pm'} The meridian for the given hour\n */\nexport function getMeridianFromHour(hour: number | Date = d): 'am' | 'pm' {\n\tif (typeof hour !== 'number') hour = hour.getHours()\n\tif (hour >= 12) return 'pm'\n\treturn 'am'\n}\n\n/**\n * ### Get Milliseconds\n * - Returns the milliseconds with two digits\n * @param {number|Date} milliseconds The date to get milliseconds\n * @returns {string} The milliseconds with two digits\n */\nexport function getMilliseconds(milliseconds: number | Date = d): string {\n\tif (typeof milliseconds !== 'number') milliseconds = milliseconds.getMilliseconds()\n\tlet formattedMilliseconds = minutes.toString()\n\tif (formattedMilliseconds.length === 1) formattedMilliseconds = `0${formattedMilliseconds}`\n\treturn formattedMilliseconds\n}\n\n/**\n * ### Get Minutes\n * - Returns the minutes with two digits\n * @param {number|Date} minutes The date to get minutes\n * @returns {string} The minutes with two digits\n */\nexport function getMinutes(minutes: number | Date = d): string {\n\tif (typeof minutes !== 'number') minutes = minutes.getMinutes()\n\tlet formattedMinutes = minutes.toString()\n\tif (formattedMinutes.length === 1) formattedMinutes = `0${formattedMinutes}`\n\treturn formattedMinutes\n}\n\n/**\n * ### Get Month\n * - Returns the month with two digits\n * @param {number|Date} month The date to get month\n * @returns {string} The month with two digits\n */\nexport function getMonth(month: number | Date = d): string {\n\tif (typeof month !== 'number') month = month.getMonth() + 1\n\tlet formattedMonth = month.toString()\n\tif (formattedMonth.length === 1) formattedMonth = `0${formattedMonth}`\n\treturn formattedMonth\n}\n\nexport function getMonthIndexFromName(name: MonthName): number {\n\treturn monthNamesList.findIndex(monthName => monthName === name)\n}\n\n/**\n * ### Get Month Name\n * - Returns the name of the specified month\n * @param {Date} date A Date object representing the month to get the name of the month from. (Preset to the current date)\n * @returns {MonthName} The name of the specified month\n */\nexport function getMonthName(date: number | Date = d): MonthName {\n\tif (typeof date === 'number') return monthNamesList[date]\n\treturn monthNamesList[date.getMonth()]\n}\n\n/**\n * ### Get Next Month\n * - Returns the number of the following month from the specified month\n * @param {Date} date The Date object representing the month to get the following month from (Preset to current date)\n * @returns {number} The indexed month of the following month\n */\nexport function getNextMonth(date: Date = d): number {\n\tconst givenMonth = date.getMonth() // Get the month from date\n\t// Return the indexed month. min 0, max 11\n\treturn givenMonth === 11 ? 0 : givenMonth + 1\n}\n\n/**\n * ### Get Previous Month\n * - Returns the number of the previous month from the specified month\n * @param {Date} date The Date object representing the month to get the previous month from (Preset to current date)\n * @returns {number} The indexed month of the previous month\n */\nexport function getPreviousMonth(date: Date = d): number {\n\tconst givenMonth = date.getMonth() // Get the month from date\n\t// Return the indexed month. min 0, max 11\n\treturn givenMonth === 0 ? 11 : givenMonth - 1\n}\n\n/**\n * ### Get Seconds\n * - Returns the seconds with two digits\n * @param {number|Date} seconds The date to get seconds\n * @returns {string} The seconds with two digits\n */\nexport function getSeconds(seconds: number | Date = d): string {\n\tif (typeof seconds !== 'number') seconds = seconds.getSeconds()\n\tlet formattedSeconds = seconds.toString()\n\tif (formattedSeconds.length === 1) formattedSeconds = `0${formattedSeconds}`\n\treturn formattedSeconds\n}\n\n/**\n * ### Get User Readable Date\n * - Returns a string of the current date in a user-friendly way\n * - Includes `'Yesterday'`, '`Today'`, and `'Tomorrow'`\n * @param date (default: `new Date()`)\n * @returns {'Today'|'Tomorrow'|'Yesterday'|string} `'weekday, month day, year'` | `'Yesterday'` | `'Today'` | `'Tomorrow'`\n */\nexport function getUserReadableDate(date: Date = d): 'Today' | 'Tomorrow' | 'Yesterday' | string {\n\tconst dateTime = date.getTime()\n\n\tconst today = new Date(),\n\t\tisToday = dateTime === today.getTime()\n\n\tif (isToday) return 'Today'\n\n\tconst yesterday = new Date(today.getDate() - 1),\n\t\tisYesterday = dateTime === yesterday.getTime()\n\n\tif (isYesterday) return 'Yesterday'\n\n\tconst tomorrow = new Date(today.getDate() + 1),\n\t\tisTomorrow = dateTime === tomorrow.getTime()\n\n\tif (isTomorrow) return 'Tomorrow'\n\n\tconst thisYear = today.getFullYear(),\n\t\tisSameYear = date.getFullYear() === thisYear\n\n\tconst fullDateString = toFullDateString(date, {\n\t\tweekday: 'code',\n\t\tyear: !isSameYear,\n\t})\n\n\treturn fullDateString\n}\n\n/**\n * ### Get Weekday Name\n * - Returns the weekday name of the specified day\n * @param {number | Date} weekday A Date object or number representing the day to get the weekday name from. (Preset to the current date)\n * @returns {WeekdayName} The name of the specified weekday\n */\nexport function getWeekdayName(weekday: number | Date = d): WeekdayName {\n\tif (typeof weekday === 'number') return weekdayNamesList[weekday]\n\t// Return the name of the day of the week\n\treturn weekdayNamesList[weekday.getDay()]\n}\n\n/**\n * ### Get Years in Range\n * - Returns an array of years in between the specified minimum and maximum years\n * @param {number} minYear The minimum year\n * @param {number} maxYear The maximum year\n * @returns {number[]} Array of years\n */\nexport function getYearsInRange(minYear: number = 0, maxYear: number = year): number[] {\n\tconst yearList = []\n\n\tfor (let selectedYear = minYear; selectedYear <= maxYear; selectedYear++) {\n\t\tyearList.push(selectedYear)\n\t}\n\n\treturn yearList\n}\n\n/** Change how to display the weekday, month name, day of the month, and year. */\ntype ToFullDateStringOptionsProps = Partial<{\n\t/** Inclusion of the day of the month. (default: `true`) */\n\tday: boolean\n\t/** Inclusion of the month name. (default: `true`/`'full'`) */\n\tmonth: boolean | 'full' | 'code'\n\t/** Inclusion of the day of the week. (default: `true`/`'full'`) */\n\tweekday: boolean | 'full' | 'code'\n\t/** Inclusion of the year. (default: `true`) */\n\tyear: boolean | 'full' | 'code'\n}>\n\n/**\n * ### To Full Date String\n * - Returns a formatted string to display the date\n * @param {Date} date (default: `new Date()`)\n * @param {ToFullDateStringOptionsProps} options Change how to display the weekday, month name, day of the month, and year.\n * @returns {string} '`weekday`, `month` `day`, `year`'\n */\nexport function toFullDateString(date: Date = d, options?: ToFullDateStringOptionsProps): string {\n\tlet weekdayName: string = getWeekdayName(date),\n\t\tmonthName: string = getMonthName(date),\n\t\tdayOfMonth: number | string = date.getDate(),\n\t\tyear = date.getFullYear().toString()\n\n\tif (options) {\n\t\tconst includesWeekday = options.weekday !== false,\n\t\t\tincludesDay = options.day !== false,\n\t\t\tincludesMonth = options.month !== false,\n\t\t\tincludesYear = options.year !== false\n\n\t\tif (includesWeekday) {\n\t\t\tif (options.weekday === 'code') weekdayName = weekdayName.slice(0, 3)\n\n\t\t\tif (includesMonth || includesDay || includesYear) weekdayName += ', '\n\t\t} else {\n\t\t\tweekdayName = ''\n\t\t}\n\n\t\tif (includesMonth) {\n\t\t\tif (options.month === 'code') monthName = monthName.slice(0, 3)\n\n\t\t\tif (includesDay) monthName += ' '\n\t\t} else {\n\t\t\tmonthName = ''\n\t\t}\n\n\t\tif (!includesDay) dayOfMonth = ''\n\n\t\tif (includesYear) {\n\t\t\tif (options.year === 'code') year = year.slice(-2)\n\n\t\t\tif (includesMonth || includesDay) year = ', ' + year\n\t\t} else {\n\t\t\tyear = ''\n\t\t}\n\t}\n\n\treturn weekdayName + monthName + dayOfMonth + year\n}\n\n/**\n * ### Get User Readable Date From Timestampz\n * - Returns a string of the current date in a user-friendly way\n * - Includes `'Yesterday'`, '`Today'`, and `'Tomorrow'`\n * @param string\n * @returns {'Today'|'Tomorrow'|'Yesterday'|string} `'weekday, month day, year'` | `'Yesterday'` | `'Today'` | `'Tomorrow'`\n */\nexport function getUserReadableDateFromTimestampz(timestampz: string): 'Today' | 'Tomorrow' | 'Yesterday' | string {\n\tconst [date, time] = timestampz.split('T') || []\n\n\tconst [year, month, day] = date?.split('-').map(string => Number(string)) || []\n\n\tconst timezoneIsAheadOfUTC = time?.includes('+')\n\n\tconst [hms, timezone] = timezoneIsAheadOfUTC ? time?.split('+') : time?.split('-') || []\n\n\tconst [hours, minutes, seconds] = hms?.split(':').map(string => Number(string)) || []\n\n\tconst [timezoneHours, timezoneMinutes] = timezone?.split(':').map(string => Number(string)) || []\n\n\tconst dateAndTime = new Date(year, month - 1, day, hours, minutes, seconds),\n\t\tuserReadableDateAndTime = getUserReadableDate(dateAndTime)\n\n\treturn userReadableDateAndTime\n}\n\nexport function getLocalTime(time: string | [number, number]) {\n\tconst date = new Date(),\n\t\t[hours, minutes] = typeof time === 'string' ? time.split(':') : time\n\n\tconst timezone = getTimezone()\n\n\tconsole.log(timezone)\n\n\tdate.setUTCHours(Number(hours))\n\tdate.setMinutes(Number(minutes))\n\n\treturn date.toLocaleTimeString([], {\n\t\thour: 'numeric',\n\t\tminute: '2-digit',\n\t\thour12: true,\n\t})\n}\n\nexport function getTimezone() {\n\tconst date = new Date()\n\n\tconst timezonePart = Intl.DateTimeFormat('en-US', { timeZoneName: 'short' })\n\t\t.formatToParts(date)\n\t\t.find(part => part.type === 'timeZoneName')\n\n\treturn timezonePart ? timezonePart.value : ''\n}\n","import { Children, ElementType, Fragment, isValidElement, ReactElement, ReactNode } from 'react'\n\nexport function findComponentByType<P extends { children?: ReactNode; [key: string]: any } = { children?: ReactNode }>(\n\tchildren: ReactNode,\n\tcomponentType: ElementType,\n): ReactElement<P> | null {\n\tconst childrenArray = Children.toArray(children)\n\n\tfor (const child of childrenArray) {\n\t\tif (isValidElement(child) && child.type === componentType) return child as ReactElement<P>\n\t}\n\n\tfor (const child of childrenArray) {\n\t\tif (isValidElement(child)) {\n\t\t\tif (child.type === Fragment && (child as ReactElement<P>).props.children) {\n\t\t\t\tconst found = findComponentByType<P>((child as ReactElement<P>).props.children, componentType)\n\n\t\t\t\tif (found) return found as ReactElement<P>\n\t\t\t} else if ((child as ReactElement<P>).props.children) {\n\t\t\t\tconst found = findComponentByType<P>((child as ReactElement<P>).props.children, componentType)\n\n\t\t\t\tif (found) return found as ReactElement<P>\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null\n}\n","export function easeOutExpo(time: number, start: number, end: number, duration: number) {\n\treturn time == duration ? start + end : end * (-Math.pow(2, (-10 * time) / duration) + 1) + start\n}\n","export const emailRegex =\n\t/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n/**\n * # Is Email\n * Checks whether the specified string is in email format\n */\nexport function isEmail(email: string) {\n\treturn emailRegex.test(email)\n}\n\nexport const telRegex =\n\t/(?:\\+1\\s|1\\s|)?\\d{3}\\.\\d{3}\\.\\d{4}|(?:\\+1\\s|1\\s|)?\\d{3}-\\d{3}-\\d{4}|(?:\\+1\\s|1\\s|)?\\(\\d{3}\\) \\d{3}-\\d{4}|(?:\\+1\\s|1\\s|\\+1|1|)?\\d{10}/\n\n/**\n * # Is Phone Number\n * Checks whether the specified string is in phone number format\n */\nexport function isPhoneNumber(tel: string) {\n\treturn telRegex.test(tel)\n}\n","/**\n * # Format Phone Number\n * Converts any string containing at least 10 numbers to a formatted phone number\n * @param {string} phoneNumber\n * @param options\n * @property {string} `countryCode`\n * @property {'continuous' | 'dot' | 'hyphenated' | 'none' | 'space' | 'standard'} `format`\n *\n * Input: a555b555c5555d\n *\n * @example\n * format: 'continuous'\n * countryCode: '1'\n * returns: +1 5555555555\n *\n * @example\n * format: 'dot'\n * returns: 555.555.5555\n *\n * @example\n * format: 'hyphenated'\n * returns: 555-555-5555\n *\n * @example\n * format: 'none'\n * countryCode: '1'\n * returns: +1 a555b555c5555d\n *\n * @example\n * format: 'space'\n * returns: 555 555 5555\n *\n * @example\n * format: 'standard' (default)\n * returns: (555) 555-5555\n *\n * @returns {string} string formatted\n */\nexport function formatPhoneNumber(\n\tphoneNumber: string,\n\toptions?: Partial<{\n\t\tcountryCode: string\n\t\tformat: 'continuous' | 'dot' | 'hyphenated' | 'none' | 'space' | 'standard'\n\t}>,\n): string {\n\tconst format = options?.format || 'standard'\n\n\tif (format !== 'none') phoneNumber = phoneNumber.replace(/\\D/g, '').slice(-10)\n\n\tswitch (format) {\n\t\tcase 'dot':\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split('')\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char}.`\n\t\t\t\t\tif (index === 5) return `${char}.`\n\t\t\t\t\treturn char\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\tbreak\n\t\tcase 'hyphenated':\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split('')\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char}-`\n\t\t\t\t\tif (index === 5) return `${char}-`\n\t\t\t\t\treturn char\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\tbreak\n\t\tcase 'space':\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split('')\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char} `\n\t\t\t\t\tif (index === 5) return `${char} `\n\t\t\t\t\treturn char\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\tbreak\n\t\tcase 'standard':\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split('')\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 0) return `(${char}`\n\t\t\t\t\tif (index === 2) return `${char}) `\n\t\t\t\t\tif (index === 5) return `${char}-`\n\t\t\t\t\treturn char\n\t\t\t\t})\n\t\t\t\t.join('')\n\t}\n\n\treturn `${options?.countryCode ? `+${options?.countryCode} ` : ''}` + phoneNumber\n}\n\n/**\n * # To Lower Case\n * Converts a string to lowercase, and offers easy string replacements for creating snake case, kebab case, or your own.\n * @param str - The string to convert to lowercase.\n * @param options - Configuration options.\n * @param options[0] - The delimiter to split the string. Defaults to space.\n * @param options[1] - The string to join the parts back together. Defaults to space.\n * @returns The lowercase version of the input string, with the replacements, if provided.\n */\nexport function toLowerCase(str: string, [delimiter, joiner]: [string | undefined, string | undefined]) {\n\treturn str.toLowerCase().replaceAll(delimiter || ' ', joiner || ' ')\n}\n","export function twSort(className: string) {\n\treturn className\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.esm.js","sources":["../src/utils/class-management.ts","../src/utils/custom-tailwind-merge.ts","../src/utils/get-date.ts","../src/utils/helpers.tsx","../src/utils/math.ts","../src/utils/regex.ts","../src/utils/string-manipulation.ts","../src/utils/tw-sort.ts"],"sourcesContent":["/**\n * ### Has Class\n * - Returns a boolean based on whether the specified element has the specified class\n * @param {HTMLElement} element Any HTML Element\n * @param {string} className A string of any class to check for\n * @returns {boolean} true if the specified element has the specified class, else false\n */\nexport function hasClass(element: HTMLElement, className: string): boolean {\n return element.classList.contains(className)\n}\n\n/**\n * ### Add Class\n * - Adds the specified classes to the specified elements\n * @param {Element|HTMLElement|HTMLElement[]|NodeList|string|undefined} elements An HTML Element, an array of HTML Elements, a Node List, a string (as a selector for a querySelector)\n * @param {string|string[]} classList A string or an array of classes to add to each element\n */\nexport function addClass(\n elements: Element | HTMLElement | HTMLElement[] | NodeList | string,\n classList: string | string[],\n) {\n const elementsType = elements.constructor.name,\n elementsIsString = typeof elements === 'string',\n classListType = classList.constructor.name,\n classListIsString = typeof classList === 'string'\n\n let elementList: HTMLElement[] | undefined,\n classListGroup: string[] | undefined\n\n // & Convert elements to array\n switch (elementsType) {\n // Selector\n case 'String':\n if (elementsIsString)\n elementList = Array.from(document.querySelectorAll(elements))\n break\n // Multiple HTML Elements\n case 'NodeList':\n if (!elementsIsString)\n elementList = Array.from(elements as NodeList) as HTMLElement[]\n break\n // Array of Elements\n case 'Array':\n if (!elementsIsString) elementList = elements as HTMLElement[]\n break\n // Single HTML Element\n default:\n if (elementsType.startsWith('HTML') && !elementsIsString)\n elementList = [elements as Element & HTMLElement]\n }\n\n // & Convert classList to array\n switch (classListType) {\n case 'String':\n if (classListIsString)\n if (classList.split(' ').length >= 2) {\n classListGroup = classList.split(' ')\n } else {\n classListGroup = [classList]\n }\n break\n case 'Array':\n if (!classListIsString) classListGroup = classList\n break\n }\n\n if (!elementList || elementList.length < 1)\n throw new Error(\n `Elements are invalid or undefined. elements: ${elements} → elementList: ${elementList}`,\n )\n\n if (!classListGroup || classListGroup.length < 1)\n throw new Error(\n `Class List is invalid or undefined. classList: ${classList} → classListGroup: ${classListGroup}`,\n )\n\n elementList.forEach((element) =>\n classListGroup.forEach((classItem) => {\n if (hasClass(element, classItem)) return\n element.classList.add(classItem)\n }),\n )\n}\n\n/**\n * ### Remove Class\n * - Removes the specified classes from the specified elements\n * @param {HTMLElement|HTMLElement[]|NodeList|string|undefined} elements An HTML Element, an array of HTML Elements, a Node List, a string (as a selector for a querySelector)\n * @param {string|string[]} classList A string or an array of classes to remove from each element\n */\nexport function removeClass(\n elements: HTMLElement | HTMLElement[] | NodeList | string,\n classList: string | string[],\n) {\n const elementsType = elements.constructor.name,\n elementsIsString = typeof elements === 'string',\n classListType = classList.constructor.name,\n classListIsString = typeof classList === 'string'\n\n let elementList: HTMLElement[] | undefined,\n classListGroup: string[] | undefined\n\n // & Convert elements to array\n switch (elementsType) {\n // Selector\n case 'String':\n if (elementsIsString)\n elementList = Array.from(document.querySelectorAll(elements))\n break\n // Multiple HTML Elements\n case 'NodeList':\n if (!elementsIsString)\n elementList = Array.from(elements as NodeList) as HTMLElement[]\n break\n // Array of Elements\n case 'Array':\n if (!elementsIsString) elementList = elements as HTMLElement[]\n break\n // Single HTML Element\n default:\n if (elementsType.startsWith('HTML') && !elementsIsString)\n elementList = [elements as Element & HTMLElement]\n }\n\n // & Convert classList to array\n switch (classListType) {\n case 'String':\n if (classListIsString)\n if (classList.split(' ').length >= 2) {\n classListGroup = classList.split(' ')\n } else {\n classListGroup = [classList]\n }\n break\n case 'Array':\n if (!classListIsString) classListGroup = classList\n break\n }\n\n if (!elementList || elementList.length < 1)\n throw new Error(\n `Elements are invalid or undefined. elements: ${elements} → elementList: ${elementList}`,\n )\n\n if (!classListGroup || classListGroup.length < 1)\n throw new Error(\n `Class List is invalid or undefined. classList: ${classList} → classListGroup: ${classListGroup}`,\n )\n\n elementList.forEach((element) =>\n classListGroup.forEach((classItem) => {\n if (!hasClass(element, classItem)) return\n element.classList.remove(classItem)\n }),\n )\n}\n\n/**\n * ### Toggle Class\n * - Toggles the specified classes on the specified elements\n * @param {HTMLElement|HTMLElement[]|NodeList|string|undefined} elements An HTML Element, an array of HTML Elements, a Node List, a string (as a selector for a querySelector)\n * @param {string|string[]} classList A string or an array of classes to toggle on each element\n */\nexport function toggleClass(\n elements: HTMLElement | HTMLElement[] | NodeList | string,\n classList: string | string[],\n) {\n const elementsType = elements.constructor.name,\n elementsIsString = typeof elements === 'string',\n classListType = classList.constructor.name,\n classListIsString = typeof classList === 'string'\n\n let elementList: HTMLElement[] | undefined,\n classListGroup: string[] | undefined\n\n // & Convert elements to array\n switch (elementsType) {\n // Selector\n case 'String':\n if (elementsIsString)\n elementList = Array.from(document.querySelectorAll(elements))\n break\n // Multiple HTML Elements\n case 'NodeList':\n if (!elementsIsString)\n elementList = Array.from(elements as NodeList) as HTMLElement[]\n break\n // Array of Elements\n case 'Array':\n if (!elementsIsString) elementList = elements as HTMLElement[]\n break\n // Single HTML Element\n default:\n if (elementsType.startsWith('HTML') && !elementsIsString)\n elementList = [elements as Element & HTMLElement]\n }\n\n // & Convert classList to array\n switch (classListType) {\n case 'String':\n if (classListIsString)\n if (classList.split(' ').length >= 2) {\n classListGroup = classList.split(' ')\n } else {\n classListGroup = [classList]\n }\n break\n case 'Array':\n if (!classListIsString) classListGroup = classList\n break\n }\n\n if (!elementList || elementList.length < 1)\n throw new Error(\n `Elements are invalid or undefined. elements: ${elements} → elementList: ${elementList}`,\n )\n\n if (!classListGroup || classListGroup.length < 1)\n throw new Error(\n `Class List is invalid or undefined. classList: ${classList} → classListGroup: ${classListGroup}`,\n )\n\n elementList.forEach((element) =>\n classListGroup.forEach((classItem) => {\n element.classList.toggle(classItem)\n }),\n )\n}\n","import { ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds, extendTailwindMerge } from 'tailwind-merge'\n\nexport type AdditionalmadoClassGroupIds =\n\t| 'animation-direction'\n\t| 'animation-fill'\n\t| 'animation-iteration'\n\t| 'animation-state'\n\nconst integerList = Array.from({ length: 100 }, (_, i) => `${i + 1}`)\n\nexport const twMerge = extendTailwindMerge<AdditionalmadoClassGroupIds>({\n\textend: {\n\t\ttheme: {\n\t\t\tcolor: [\n\t\t\t\t{\n\t\t\t\t\tui: [\n\t\t\t\t\t\t'red',\n\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t'green',\n\t\t\t\t\t\t'sky-blue',\n\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t'violet',\n\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t'grey',\n\t\t\t\t\t\t'pink',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tclassGroups: {\n\t\t\tanimate: [\n\t\t\t\t{\n\t\t\t\t\tanimate: [\n\t\t\t\t\t\t'bounce',\n\t\t\t\t\t\t'double-spin',\n\t\t\t\t\t\t'drop-in',\n\t\t\t\t\t\t'flip',\n\t\t\t\t\t\t'flip-again',\n\t\t\t\t\t\t'grid-rows',\n\t\t\t\t\t\t'heartbeat',\n\t\t\t\t\t\t'ping',\n\t\t\t\t\t\t'pulse',\n\t\t\t\t\t\t'slide-up',\n\t\t\t\t\t\t'spin',\n\t\t\t\t\t\t'wave',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-direction': [\n\t\t\t\t{\n\t\t\t\t\t'animation-direction': ['normal', 'reverse', 'alternate', 'alternate-reverse'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-fill': [\n\t\t\t\t{\n\t\t\t\t\t'animation-fill': ['none', 'forwards', 'backwards', 'both'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-iteration': [\n\t\t\t\t{\n\t\t\t\t\t'animation-iteration': [...integerList, 'infinite'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-state': [\n\t\t\t\t{\n\t\t\t\t\t'animation-state': ['running', 'paused'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'grid-cols': [\n\t\t\t\t{\n\t\t\t\t\t'grid-cols': ['0fr', '1fr'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'grid-rows': [\n\t\t\t\t{\n\t\t\t\t\t'grid-rows': ['0fr', '1fr'],\n\t\t\t\t},\n\t\t\t],\n\t\t\ttransition: ['transition-rows'],\n\t\t},\n\t},\n})\n\nexport function extendMadoTailwindMerge<\n\tAdditionalClassGroupIds extends string = AdditionalmadoClassGroupIds,\n\tAdditionalThemeGroupIds extends string = never,\n>(\n\tconfigExtension: ConfigExtension<\n\t\tDefaultClassGroupIds | AdditionalClassGroupIds,\n\t\tDefaultThemeGroupIds | AdditionalThemeGroupIds\n\t>,\n) {\n\tconst extend = configExtension.extend || {}\n\tconst theme = extend.theme || {}\n\tconst color = 'color' in theme ? theme.color : []\n\tconst classGroups = extend.classGroups || {}\n\n\tconst themeRest = { ...theme }\n\tif ('color' in themeRest) delete themeRest.color\n\n\tconst extendRest = { ...extend }\n\tdelete extendRest.theme\n\tdelete extendRest.classGroups\n\n\treturn extendTailwindMerge<AdditionalClassGroupIds, AdditionalThemeGroupIds>({\n\t\textend: {\n\t\t\ttheme: {\n\t\t\t\tcolor: [\n\t\t\t\t\t{\n\t\t\t\t\t\tui: [\n\t\t\t\t\t\t\t'red',\n\t\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t\t'green',\n\t\t\t\t\t\t\t'sky-blue',\n\t\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t\t'violet',\n\t\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t\t'grey',\n\t\t\t\t\t\t\t'pink',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t...(color as { [key: string]: string[] }[]),\n\t\t\t\t],\n\t\t\t\t...themeRest,\n\t\t\t} as { [key: string]: { [key: string]: string[] }[] } | any,\n\t\t\tclassGroups: {\n\t\t\t\tanimate: [\n\t\t\t\t\t{\n\t\t\t\t\t\tanimate: [\n\t\t\t\t\t\t\t'bounce',\n\t\t\t\t\t\t\t'double-spin',\n\t\t\t\t\t\t\t'drop-in',\n\t\t\t\t\t\t\t'flip',\n\t\t\t\t\t\t\t'flip-again',\n\t\t\t\t\t\t\t'grid-rows',\n\t\t\t\t\t\t\t'heartbeat',\n\t\t\t\t\t\t\t'ping',\n\t\t\t\t\t\t\t'pulse',\n\t\t\t\t\t\t\t'slide-up',\n\t\t\t\t\t\t\t'spin',\n\t\t\t\t\t\t\t'wave',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-direction': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-direction': ['normal', 'reverse', 'alternate', 'alternate-reverse'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-fill': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-fill': ['none', 'forwards', 'backwards', 'both'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-iteration': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-iteration': [...integerList, 'infinite'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-state': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-state': ['running', 'paused'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'grid-cols': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'grid-cols': ['0fr', '1fr'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'grid-rows': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'grid-rows': ['0fr', '1fr'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\ttransition: ['transition-rows'],\n\t\t\t\t...classGroups,\n\t\t\t} as { [key: string]: { [key: string]: string[] }[] } | any,\n\t\t\t...extendRest,\n\t\t},\n\t\t...configExtension,\n\t})\n}\n","export type DayNumber =\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\nexport type DateTimeObject = {\n\tday: DayNumber\n\thour: HourNumber\n\tminute: MinuteNumber\n\tmonth: MonthNumber | MonthName\n\tsecond: SecondNumber\n\tyear: number\n}\n\nexport type HourNumber =\n\t| 0\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\nexport type MinuteNumber =\n\t| 0\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\t| 32\n\t| 33\n\t| 34\n\t| 35\n\t| 36\n\t| 37\n\t| 38\n\t| 39\n\t| 40\n\t| 41\n\t| 42\n\t| 43\n\t| 44\n\t| 45\n\t| 46\n\t| 47\n\t| 48\n\t| 49\n\t| 50\n\t| 51\n\t| 52\n\t| 53\n\t| 54\n\t| 55\n\t| 56\n\t| 57\n\t| 58\n\t| 59\n\nexport type MonthName =\n\t| 'January'\n\t| 'February'\n\t| 'March'\n\t| 'April'\n\t| 'May'\n\t| 'June'\n\t| 'July'\n\t| 'August'\n\t| 'September'\n\t| 'October'\n\t| 'November'\n\t| 'December'\n\nexport type MonthNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n\nexport type SecondNumber = MinuteNumber\n\nexport type WeekdayName = 'Sunday' | 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday'\n\nexport type WeekdayNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7\n\nexport type WeekNumber =\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\t| 32\n\t| 33\n\t| 34\n\t| 35\n\t| 36\n\t| 37\n\t| 38\n\t| 39\n\t| 40\n\t| 41\n\t| 42\n\t| 43\n\t| 44\n\t| 45\n\t| 46\n\t| 47\n\t| 48\n\t| 49\n\t| 50\n\t| 51\n\t| 52\n\t| 53\n\n/** The current date as a Date object */\nconst d = new Date()\n\n/** The current minute of the current hour */\nconst minutes = d.getMinutes()\n\n/** The current year */\nconst year = d.getFullYear()\n\n/** An array of the names of month in order */\nexport const monthNamesList: MonthName[] = [\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December',\n]\n\n/** An array of the names of the days of the week in order */\nexport const weekdayNamesList: WeekdayName[] = [\n\t'Sunday',\n\t'Monday',\n\t'Tuesday',\n\t'Wednesday',\n\t'Thursday',\n\t'Friday',\n\t'Saturday',\n]\n\n/** The name of the current month */\nexport const currentMonthName = getMonthName()\n\n/** The name of the current day of the week */\nexport const currentWeekdayName = getWeekdayName()\n\n/**\n * ### Days In Month\n * - Returns the number of days in the specified month.\n * @param {Date} date A Date object representing the month to get the number of days for. (Preset to the current date)\n * @returns {number} The number of days in the specified month.\n */\nexport function daysInMonth(date: Date = d): number {\n\tconst selectedYear = date.getFullYear(),\n\t\tselectedMonth = date.getMonth() + 1\n\treturn new Date(selectedYear, selectedMonth, 0).getDate()\n}\n\n/**\n * ### First of Month\n * - Returns the first day of the specified month.\n * @param {Date} date A Date object representing the month to get the first day for. (Preset to current date)\n * @returns {Date} A Date object of the given month, with the first day.\n */\nexport function firstOfMonth(date: Date = d): Date {\n\t// Return a new Date object with the first of the month selected\n\treturn new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\n/**\n * ### Get Date\n * - Returns the date with two digits\n * @param {number|Date} date The date to get date\n * @returns {string} The date with two digits\n */\nexport function getDate(date: number | Date = d): string {\n\tif (typeof date !== 'number') date = date.getDate()\n\tlet formattedDate = date.toString()\n\tif (formattedDate.length === 1) formattedDate = `0${formattedDate}`\n\treturn formattedDate\n}\n\n/**\n * ### Get Hours\n * - Returns the hours with two digits\n * @param {number|Date} hours The date to get hours\n * @returns {string} The hours with two digits\n */\nexport function getHours(hours: number | Date = d): string {\n\tif (typeof hours !== 'number') hours = hours.getHours()\n\tlet formattedHours = hours.toString()\n\tif (formattedHours.length === 1) formattedHours = `0${formattedHours}`\n\treturn formattedHours\n}\n\n/**\n * ### Get Hours in 12\n * - Returns the hour based on the specified 24 hour value in a 12 hour format\n * @param {number|Date} hour The hour to be converted to 12 hour format\n * @returns {number} The hour in a 12 hour format\n */\nexport function getHoursIn12(hour: number | Date = d): number {\n\tif (typeof hour !== 'number') hour = hour.getHours()\n\tif (hour > 12) return hour - 12\n\treturn hour\n}\n\n/**\n * ### Get Meridian from Hour\n * - Returns either 'pm' or 'am' based on the specified 24 hour value\n * @param {number|Date} hour The hour to get the meridian from\n * @returns {'am'|'pm'} The meridian for the given hour\n */\nexport function getMeridianFromHour(hour: number | Date = d): 'am' | 'pm' {\n\tif (typeof hour !== 'number') hour = hour.getHours()\n\tif (hour >= 12) return 'pm'\n\treturn 'am'\n}\n\n/**\n * ### Get Milliseconds\n * - Returns the milliseconds with two digits\n * @param {number|Date} milliseconds The date to get milliseconds\n * @returns {string} The milliseconds with two digits\n */\nexport function getMilliseconds(milliseconds: number | Date = d): string {\n\tif (typeof milliseconds !== 'number') milliseconds = milliseconds.getMilliseconds()\n\tlet formattedMilliseconds = minutes.toString()\n\tif (formattedMilliseconds.length === 1) formattedMilliseconds = `0${formattedMilliseconds}`\n\treturn formattedMilliseconds\n}\n\n/**\n * ### Get Minutes\n * - Returns the minutes with two digits\n * @param {number|Date} minutes The date to get minutes\n * @returns {string} The minutes with two digits\n */\nexport function getMinutes(minutes: number | Date = d): string {\n\tif (typeof minutes !== 'number') minutes = minutes.getMinutes()\n\tlet formattedMinutes = minutes.toString()\n\tif (formattedMinutes.length === 1) formattedMinutes = `0${formattedMinutes}`\n\treturn formattedMinutes\n}\n\n/**\n * ### Get Month\n * - Returns the month with two digits\n * @param {number|Date} month The date to get month\n * @returns {string} The month with two digits\n */\nexport function getMonth(month: number | Date = d): string {\n\tif (typeof month !== 'number') month = month.getMonth() + 1\n\tlet formattedMonth = month.toString()\n\tif (formattedMonth.length === 1) formattedMonth = `0${formattedMonth}`\n\treturn formattedMonth\n}\n\nexport function getMonthIndexFromName(name: MonthName): number {\n\treturn monthNamesList.findIndex(monthName => monthName === name)\n}\n\n/**\n * ### Get Month Name\n * - Returns the name of the specified month\n * @param {Date} date A Date object representing the month to get the name of the month from. (Preset to the current date)\n * @returns {MonthName} The name of the specified month\n */\nexport function getMonthName(date: number | Date = d): MonthName {\n\tif (typeof date === 'number') return monthNamesList[date]\n\treturn monthNamesList[date.getMonth()]\n}\n\n/**\n * ### Get Next Month\n * - Returns the number of the following month from the specified month\n * @param {Date} date The Date object representing the month to get the following month from (Preset to current date)\n * @returns {number} The indexed month of the following month\n */\nexport function getNextMonth(date: Date = d): number {\n\tconst givenMonth = date.getMonth() // Get the month from date\n\t// Return the indexed month. min 0, max 11\n\treturn givenMonth === 11 ? 0 : givenMonth + 1\n}\n\n/**\n * ### Get Previous Month\n * - Returns the number of the previous month from the specified month\n * @param {Date} date The Date object representing the month to get the previous month from (Preset to current date)\n * @returns {number} The indexed month of the previous month\n */\nexport function getPreviousMonth(date: Date = d): number {\n\tconst givenMonth = date.getMonth() // Get the month from date\n\t// Return the indexed month. min 0, max 11\n\treturn givenMonth === 0 ? 11 : givenMonth - 1\n}\n\n/**\n * ### Get Seconds\n * - Returns the seconds with two digits\n * @param {number|Date} seconds The date to get seconds\n * @returns {string} The seconds with two digits\n */\nexport function getSeconds(seconds: number | Date = d): string {\n\tif (typeof seconds !== 'number') seconds = seconds.getSeconds()\n\tlet formattedSeconds = seconds.toString()\n\tif (formattedSeconds.length === 1) formattedSeconds = `0${formattedSeconds}`\n\treturn formattedSeconds\n}\n\n/**\n * ### Get User Readable Date\n * - Returns a string of the current date in a user-friendly way\n * - Includes `'Yesterday'`, '`Today'`, and `'Tomorrow'`\n * @param date (default: `new Date()`)\n * @returns {'Today'|'Tomorrow'|'Yesterday'|string} `'weekday, month day, year'` | `'Yesterday'` | `'Today'` | `'Tomorrow'`\n */\nexport function getUserReadableDate(date: Date = d): 'Today' | 'Tomorrow' | 'Yesterday' | string {\n\tconst dateTime = date.getTime()\n\n\tconst today = new Date(),\n\t\tisToday = dateTime === today.getTime()\n\n\tif (isToday) return 'Today'\n\n\tconst yesterday = new Date(today.getDate() - 1),\n\t\tisYesterday = dateTime === yesterday.getTime()\n\n\tif (isYesterday) return 'Yesterday'\n\n\tconst tomorrow = new Date(today.getDate() + 1),\n\t\tisTomorrow = dateTime === tomorrow.getTime()\n\n\tif (isTomorrow) return 'Tomorrow'\n\n\tconst thisYear = today.getFullYear(),\n\t\tisSameYear = date.getFullYear() === thisYear\n\n\tconst fullDateString = toFullDateString(date, {\n\t\tweekday: 'code',\n\t\tyear: !isSameYear,\n\t})\n\n\treturn fullDateString\n}\n\n/**\n * ### Get Weekday Name\n * - Returns the weekday name of the specified day\n * @param {number | Date} weekday A Date object or number representing the day to get the weekday name from. (Preset to the current date)\n * @returns {WeekdayName} The name of the specified weekday\n */\nexport function getWeekdayName(weekday: number | Date = d): WeekdayName {\n\tif (typeof weekday === 'number') return weekdayNamesList[weekday]\n\t// Return the name of the day of the week\n\treturn weekdayNamesList[weekday.getDay()]\n}\n\n/**\n * ### Get Years in Range\n * - Returns an array of years in between the specified minimum and maximum years\n * @param {number} minYear The minimum year\n * @param {number} maxYear The maximum year\n * @returns {number[]} Array of years\n */\nexport function getYearsInRange(minYear: number = 0, maxYear: number = year): number[] {\n\tconst yearList = []\n\n\tfor (let selectedYear = minYear; selectedYear <= maxYear; selectedYear++) {\n\t\tyearList.push(selectedYear)\n\t}\n\n\treturn yearList\n}\n\n/** Change how to display the weekday, month name, day of the month, and year. */\ntype ToFullDateStringOptionsProps = Partial<{\n\t/** Inclusion of the day of the month. (default: `true`) */\n\tday: boolean\n\t/** Inclusion of the month name. (default: `true`/`'full'`) */\n\tmonth: boolean | 'full' | 'code'\n\t/** Inclusion of the day of the week. (default: `true`/`'full'`) */\n\tweekday: boolean | 'full' | 'code'\n\t/** Inclusion of the year. (default: `true`) */\n\tyear: boolean | 'full' | 'code'\n}>\n\n/**\n * ### To Full Date String\n * - Returns a formatted string to display the date\n * @param {Date} date (default: `new Date()`)\n * @param {ToFullDateStringOptionsProps} options Change how to display the weekday, month name, day of the month, and year.\n * @returns {string} '`weekday`, `month` `day`, `year`'\n */\nexport function toFullDateString(date: Date = d, options?: ToFullDateStringOptionsProps): string {\n\tlet weekdayName: string = getWeekdayName(date),\n\t\tmonthName: string = getMonthName(date),\n\t\tdayOfMonth: number | string = date.getDate(),\n\t\tyear = date.getFullYear().toString()\n\n\tif (options) {\n\t\tconst includesWeekday = options.weekday !== false,\n\t\t\tincludesDay = options.day !== false,\n\t\t\tincludesMonth = options.month !== false,\n\t\t\tincludesYear = options.year !== false\n\n\t\tif (includesWeekday) {\n\t\t\tif (options.weekday === 'code') weekdayName = weekdayName.slice(0, 3)\n\n\t\t\tif (includesMonth || includesDay || includesYear) weekdayName += ', '\n\t\t} else {\n\t\t\tweekdayName = ''\n\t\t}\n\n\t\tif (includesMonth) {\n\t\t\tif (options.month === 'code') monthName = monthName.slice(0, 3)\n\n\t\t\tif (includesDay) monthName += ' '\n\t\t} else {\n\t\t\tmonthName = ''\n\t\t}\n\n\t\tif (!includesDay) dayOfMonth = ''\n\n\t\tif (includesYear) {\n\t\t\tif (options.year === 'code') year = year.slice(-2)\n\n\t\t\tif (includesMonth || includesDay) year = ', ' + year\n\t\t} else {\n\t\t\tyear = ''\n\t\t}\n\t}\n\n\treturn weekdayName + monthName + dayOfMonth + year\n}\n\n/**\n * ### Get User Readable Date From Timestampz\n * - Returns a string of the current date in a user-friendly way\n * - Includes `'Yesterday'`, '`Today'`, and `'Tomorrow'`\n * @param string\n * @returns {'Today'|'Tomorrow'|'Yesterday'|string} `'weekday, month day, year'` | `'Yesterday'` | `'Today'` | `'Tomorrow'`\n */\nexport function getUserReadableDateFromTimestampz(timestampz: string): 'Today' | 'Tomorrow' | 'Yesterday' | string {\n\tconst [date, time] = timestampz.split('T') || []\n\n\tconst [year, month, day] = date?.split('-').map(string => Number(string)) || []\n\n\tconst timezoneIsAheadOfUTC = time?.includes('+')\n\n\tconst [hms, timezone] = timezoneIsAheadOfUTC ? time?.split('+') : time?.split('-') || []\n\n\tconst [hours, minutes, seconds] = hms?.split(':').map(string => Number(string)) || []\n\n\tconst [timezoneHours, timezoneMinutes] = timezone?.split(':').map(string => Number(string)) || []\n\n\tconst dateAndTime = new Date(year, month - 1, day, hours, minutes, seconds),\n\t\tuserReadableDateAndTime = getUserReadableDate(dateAndTime)\n\n\treturn userReadableDateAndTime\n}\n\nexport function getLocalTime(time: string | [number, number]) {\n\tconst date = new Date(),\n\t\t[hours, minutes] = typeof time === 'string' ? time.split(':') : time\n\n\tconst timezone = getTimezone()\n\n\tconsole.log(timezone)\n\n\tdate.setUTCHours(Number(hours))\n\tdate.setMinutes(Number(minutes))\n\n\treturn date.toLocaleTimeString([], {\n\t\thour: 'numeric',\n\t\tminute: '2-digit',\n\t\thour12: true,\n\t})\n}\n\nexport function getTimezone() {\n\tconst date = new Date()\n\n\tconst timezonePart = Intl.DateTimeFormat('en-US', { timeZoneName: 'short' })\n\t\t.formatToParts(date)\n\t\t.find(part => part.type === 'timeZoneName')\n\n\treturn timezonePart ? timezonePart.value : ''\n}\n","import { Children, ElementType, Fragment, isValidElement, ReactElement, ReactNode } from 'react'\n\nexport function findComponentByType<P extends { children?: ReactNode; [key: string]: any } = { children?: ReactNode }>(\n\tchildren: ReactNode,\n\tcomponentType: ElementType,\n): ReactElement<P> | null {\n\tconst childrenArray = Children.toArray(children)\n\n\tfor (const child of childrenArray) {\n\t\tif (isValidElement(child) && child.type === componentType) return child as ReactElement<P>\n\t}\n\n\tfor (const child of childrenArray) {\n\t\tif (isValidElement(child)) {\n\t\t\tif (child.type === Fragment && (child as ReactElement<P>).props.children) {\n\t\t\t\tconst found = findComponentByType<P>((child as ReactElement<P>).props.children, componentType)\n\n\t\t\t\tif (found) return found as ReactElement<P>\n\t\t\t} else if ((child as ReactElement<P>).props.children) {\n\t\t\t\tconst found = findComponentByType<P>((child as ReactElement<P>).props.children, componentType)\n\n\t\t\t\tif (found) return found as ReactElement<P>\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null\n}\n","export function easeOutExpo(time: number, start: number, end: number, duration: number) {\n\treturn time == duration ? start + end : end * (-Math.pow(2, (-10 * time) / duration) + 1) + start\n}\n","export const emailRegex =\n\t/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n\n/**\n * # Is Email\n * Checks whether the specified string is in email format\n */\nexport function isEmail(email: string) {\n\treturn emailRegex.test(email)\n}\n\nexport const telRegex =\n\t/(?:\\+1\\s|1\\s|)?\\d{3}\\.\\d{3}\\.\\d{4}|(?:\\+1\\s|1\\s|)?\\d{3}-\\d{3}-\\d{4}|(?:\\+1\\s|1\\s|)?\\(\\d{3}\\) \\d{3}-\\d{4}|(?:\\+1\\s|1\\s|\\+1|1|)?\\d{10}/\n\n/**\n * # Is Phone Number\n * Checks whether the specified string is in phone number format\n */\nexport function isPhoneNumber(tel: string) {\n\treturn telRegex.test(tel)\n}\n","/**\n * # Format Phone Number\n * Converts any string containing at least 10 numbers to a formatted phone number\n * @param {string} phoneNumber\n * @param options\n * @property {string} `countryCode`\n * @property {'continuous' | 'dot' | 'hyphenated' | 'none' | 'space' | 'standard'} `format`\n *\n * Input: a555b555c5555d\n *\n * @example\n * format: 'continuous'\n * countryCode: '1'\n * returns: +1 5555555555\n *\n * @example\n * format: 'dot'\n * returns: 555.555.5555\n *\n * @example\n * format: 'hyphenated'\n * returns: 555-555-5555\n *\n * @example\n * format: 'none'\n * countryCode: '1'\n * returns: +1 a555b555c5555d\n *\n * @example\n * format: 'space'\n * returns: 555 555 5555\n *\n * @example\n * format: 'standard' (default)\n * returns: (555) 555-5555\n *\n * @returns {string} string formatted\n */\nexport function formatPhoneNumber(\n\tphoneNumber: string,\n\toptions?: Partial<{\n\t\tcountryCode: string;\n\t\tformat: \"continuous\" | \"dot\" | \"hyphenated\" | \"none\" | \"space\" | \"standard\";\n\t}>,\n): string {\n\tconst format = options?.format || \"standard\";\n\n\tif (format !== \"none\") {\n\t\tphoneNumber = phoneNumber.replace(/\\D/g, \"\").slice(-10);\n\t}\n\n\tswitch (format) {\n\t\tcase \"dot\":\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split(\"\")\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char}.`;\n\t\t\t\t\tif (index === 5) return `${char}.`;\n\t\t\t\t\treturn char;\n\t\t\t\t})\n\t\t\t\t.join(\"\");\n\t\t\tbreak;\n\t\tcase \"hyphenated\":\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split(\"\")\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char}-`;\n\t\t\t\t\tif (index === 5) return `${char}-`;\n\t\t\t\t\treturn char;\n\t\t\t\t})\n\t\t\t\t.join(\"\");\n\t\t\tbreak;\n\t\tcase \"space\":\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split(\"\")\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 2) return `${char} `;\n\t\t\t\t\tif (index === 5) return `${char} `;\n\t\t\t\t\treturn char;\n\t\t\t\t})\n\t\t\t\t.join(\"\");\n\t\t\tbreak;\n\t\tcase \"standard\":\n\t\t\tphoneNumber = phoneNumber\n\t\t\t\t.split(\"\")\n\t\t\t\t.map((char, index) => {\n\t\t\t\t\tif (index === 0) return `(${char}`;\n\t\t\t\t\tif (index === 2) return `${char}) `;\n\t\t\t\t\tif (index === 5) return `${char}-`;\n\t\t\t\t\treturn char;\n\t\t\t\t})\n\t\t\t\t.join(\"\");\n\t}\n\n\treturn `${options?.countryCode ? `+${options?.countryCode} ` : \"\"}` +\n\t\tphoneNumber;\n}\n\n/**\n * ### Split Camel Case\n * - Separates a camel case string with a joiner (default: ' ')\n * @param {string} string\n * @returns {string} string\n */\nexport function splitCamelCase(string: string, joiner: string = \" \"): string {\n\tif (string[0].match(/[A-Z0-9]/) || string.includes(\" \")) return string;\n\n\tlet lastChar = \"\";\n\n\treturn string.split(\"\")\n\t\t.map((char) => {\n\t\t\tlet returnedString = char;\n\n\t\t\tif (char.match(/[A-Z0-9]/)) returnedString = ` ${char}`;\n\n\t\t\tif (lastChar.match(/[0-9]/) && char.match(/[0-9]/)) returnedString = char;\n\n\t\t\tlastChar = char;\n\t\t\treturn returnedString;\n\t\t})\n\t\t.join(joiner);\n}\n\n/**\n * ### To Camel Case\n * - Converts any string to camel case based on spaces\n * - Eliminates no letter-number characters\n * @param {string} string\n * @returns {string} string\n */\nexport function toCamelCase(string: string, delimiter: string = \" \"): string {\n\tif (typeof string !== \"string\") return string;\n\n\treturn string\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]/gi, delimiter)\n\t\t.split(delimiter)\n\t\t.map((str: string, index: number) =>\n\t\t\tindex === 0 ? str : str.substring(0, 1).toUpperCase() +\n\t\t\t\tstr.substring(1, str.length).toLowerCase()\n\t\t)\n\t\t.join(\"\");\n}\n\n/**\n * # To Lower Case\n * Converts a string to lowercase, and offers easy string replacements for creating snake case, kebab case, or your own.\n * @param str - The string to convert to lowercase.\n * @param options - Configuration options.\n * @param options[0] - The delimiter to split the string. Defaults to space.\n * @param options[1] - The string to join the parts back together. Defaults to space.\n * @returns The lowercase version of the input string, with the replacements, if provided.\n */\nexport function toLowerCase(\n\tstr: string,\n\t[delimiter, joiner]: [string | undefined, string | undefined],\n) {\n\treturn str.toLowerCase().replaceAll(delimiter || \" \", joiner || \" \");\n}\n\n/**\n * ### To Title Case\n * - Converts any string to title case based on spaces\n * @param {string} string\n * @returns {string} string\n */\nexport function toTitleCase(string: string, delimiter: string = \" \"): string {\n\tif (typeof string !== \"string\") return string;\n\n\treturn string\n\t\t.toLowerCase()\n\t\t.split(delimiter)\n\t\t.map((str) =>\n\t\t\tstr.substring(0, 1).toUpperCase() +\n\t\t\tstr.substring(1, str.length).toLowerCase()\n\t\t)\n\t\t.join(\" \");\n}\n","export function twSort(className: string) {\n\treturn className\n}\n"],"names":[],"mappings":"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"}