@x15ventures/x15-ui-library 3.13.5 → 3.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/cjs/autoGenerated/libraryThemes.js +12 -12
  2. package/dist/cjs/autoGenerated/libraryThemes.js.map +1 -1
  3. package/dist/cjs/autoGenerated/libraryThemes.json +12 -12
  4. package/dist/cjs/components/design/skeleton/Skeleton.js +48 -0
  5. package/dist/cjs/components/design/skeleton/Skeleton.js.map +1 -0
  6. package/dist/cjs/components/design/skeleton/_skeletonVariables.css +0 -0
  7. package/dist/cjs/components/design/skeleton/skeleton.css +86 -0
  8. package/dist/cjs/components/form/formFields/formFieldWrapper/FormField.js +1 -1
  9. package/dist/cjs/components/form/formFields/formFieldWrapper/FormField.js.map +1 -1
  10. package/dist/cjs/components/form/formFields/formFieldWrapper/formFieldProps.js.map +1 -1
  11. package/dist/cjs/components/form/formFields/subComponents/textarea/Textarea.js +159 -18
  12. package/dist/cjs/components/form/formFields/subComponents/textarea/Textarea.js.map +1 -1
  13. package/dist/cjs/components/form/validation/ValidationMessages.js +2 -1
  14. package/dist/cjs/components/form/validation/ValidationMessages.js.map +1 -1
  15. package/dist/cjs/components/index.js +7 -0
  16. package/dist/cjs/components/index.js.map +1 -1
  17. package/dist/cjs/index.js +7 -0
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/cjs/package.json +1 -1
  20. package/dist/cjs/styles/index.css +39 -0
  21. package/dist/cjs/styles/shared/_allPartials.css +25 -0
  22. package/dist/cjs/styles/shared/forms/_forms.css +25 -0
  23. package/dist/cjs/styles/variables/cssVars/_darkModeVariables.css +3 -0
  24. package/dist/cjs/styles/variables/cssVars/_designVariables.css +11 -0
  25. package/dist/components/design/skeleton/Skeleton.d.ts +27 -0
  26. package/dist/components/design/skeleton/Skeleton.d.ts.map +1 -0
  27. package/dist/components/form/formFields/formFieldWrapper/FormField.test.d.ts +5 -0
  28. package/dist/components/form/formFields/formFieldWrapper/FormField.test.d.ts.map +1 -0
  29. package/dist/components/form/formFields/formFieldWrapper/formFieldProps.d.ts +11 -1
  30. package/dist/components/form/formFields/formFieldWrapper/formFieldProps.d.ts.map +1 -1
  31. package/dist/components/form/formFields/subComponents/textarea/Textarea.d.ts.map +1 -1
  32. package/dist/components/form/formFields/subComponents/textarea/Textarea.test.d.ts +5 -0
  33. package/dist/components/form/formFields/subComponents/textarea/Textarea.test.d.ts.map +1 -0
  34. package/dist/components/form/validation/ValidationMessages.d.ts +2 -0
  35. package/dist/components/form/validation/ValidationMessages.d.ts.map +1 -1
  36. package/dist/components/index.d.ts +2 -0
  37. package/dist/components/index.d.ts.map +1 -1
  38. package/dist/esm/autoGenerated/libraryThemes.js +12 -12
  39. package/dist/esm/autoGenerated/libraryThemes.js.map +1 -1
  40. package/dist/esm/autoGenerated/libraryThemes.json +12 -12
  41. package/dist/esm/components/design/skeleton/Skeleton.js +40 -0
  42. package/dist/esm/components/design/skeleton/Skeleton.js.map +1 -0
  43. package/dist/esm/components/design/skeleton/_skeletonVariables.css +0 -0
  44. package/dist/esm/components/design/skeleton/skeleton.css +86 -0
  45. package/dist/esm/components/form/formFields/formFieldWrapper/FormField.js +1 -1
  46. package/dist/esm/components/form/formFields/formFieldWrapper/FormField.js.map +1 -1
  47. package/dist/esm/components/form/formFields/formFieldWrapper/formFieldProps.js.map +1 -1
  48. package/dist/esm/components/form/formFields/subComponents/textarea/Textarea.js +158 -17
  49. package/dist/esm/components/form/formFields/subComponents/textarea/Textarea.js.map +1 -1
  50. package/dist/esm/components/form/validation/ValidationMessages.js +1 -1
  51. package/dist/esm/components/form/validation/ValidationMessages.js.map +1 -1
  52. package/dist/esm/components/index.js +1 -0
  53. package/dist/esm/components/index.js.map +1 -1
  54. package/dist/esm/index.js +1 -1
  55. package/dist/esm/index.js.map +1 -1
  56. package/dist/esm/package.json +1 -1
  57. package/dist/esm/styles/index.css +39 -0
  58. package/dist/esm/styles/shared/_allPartials.css +25 -0
  59. package/dist/esm/styles/shared/forms/_forms.css +25 -0
  60. package/dist/esm/styles/variables/cssVars/_darkModeVariables.css +3 -0
  61. package/dist/esm/styles/variables/cssVars/_designVariables.css +11 -0
  62. package/dist/index.d.ts +2 -2
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/package.json +1 -1
  65. package/package.json +1 -1
  66. package/readme.md +1 -0
@@ -17,8 +17,8 @@ const libraryThemes = exports.libraryThemes = {
17
17
  "map": "index.min.css.map"
18
18
  },
19
19
  "versioned": {
20
- "css": "index.min.3.13.5.css",
21
- "map": "index.min.3.13.5.css.map"
20
+ "css": "index.min.3.15.0.css",
21
+ "map": "index.min.3.15.0.css.map"
22
22
  }
23
23
  },
24
24
  "cba": {
@@ -32,8 +32,8 @@ const libraryThemes = exports.libraryThemes = {
32
32
  "map": "cba.min.css.map"
33
33
  },
34
34
  "versioned": {
35
- "css": "cba.min.3.13.5.css",
36
- "map": "cba.min.3.13.5.css.map"
35
+ "css": "cba.min.3.15.0.css",
36
+ "map": "cba.min.3.15.0.css.map"
37
37
  }
38
38
  },
39
39
  "creditSavvy": {
@@ -47,8 +47,8 @@ const libraryThemes = exports.libraryThemes = {
47
47
  "map": "creditSavvy.min.css.map"
48
48
  },
49
49
  "versioned": {
50
- "css": "creditSavvy.min.3.13.5.css",
51
- "map": "creditSavvy.min.3.13.5.css.map"
50
+ "css": "creditSavvy.min.3.15.0.css",
51
+ "map": "creditSavvy.min.3.15.0.css.map"
52
52
  }
53
53
  },
54
54
  "doshii": {
@@ -62,8 +62,8 @@ const libraryThemes = exports.libraryThemes = {
62
62
  "map": "doshii.min.css.map"
63
63
  },
64
64
  "versioned": {
65
- "css": "doshii.min.3.13.5.css",
66
- "map": "doshii.min.3.13.5.css.map"
65
+ "css": "doshii.min.3.15.0.css",
66
+ "map": "doshii.min.3.15.0.css.map"
67
67
  }
68
68
  },
69
69
  "homeIn": {
@@ -77,8 +77,8 @@ const libraryThemes = exports.libraryThemes = {
77
77
  "map": "homeIn.min.css.map"
78
78
  },
79
79
  "versioned": {
80
- "css": "homeIn.min.3.13.5.css",
81
- "map": "homeIn.min.3.13.5.css.map"
80
+ "css": "homeIn.min.3.15.0.css",
81
+ "map": "homeIn.min.3.15.0.css.map"
82
82
  }
83
83
  },
84
84
  "x15Core": {
@@ -92,8 +92,8 @@ const libraryThemes = exports.libraryThemes = {
92
92
  "map": "x15Core.min.css.map"
93
93
  },
94
94
  "versioned": {
95
- "css": "x15Core.min.3.13.5.css",
96
- "map": "x15Core.min.3.13.5.css.map"
95
+ "css": "x15Core.min.3.15.0.css",
96
+ "map": "x15Core.min.3.15.0.css.map"
97
97
  }
98
98
  }
99
99
  };
@@ -1 +1 @@
1
- {"version":3,"file":"libraryThemes.js","names":["libraryThemes","exports","_default","default"],"sources":["../../../src/autoGenerated/libraryThemes.ts"],"sourcesContent":["/* eslint-disable */\nexport const libraryThemes = {\n \"base\": {\n \"buildPath\": \"styles\",\n \"dev\": {\n \"css\": \"index.css\",\n \"map\": \"index.css.map\"\n },\n \"min\": {\n \"css\": \"index.min.css\",\n \"map\": \"index.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"index.min.3.13.5.css\",\n \"map\": \"index.min.3.13.5.css.map\"\n }\n },\n \"cba\": {\n \"buildPath\": \"styles/themes/cba\",\n \"dev\": {\n \"css\": \"cba.css\",\n \"map\": \"cba.css.map\"\n },\n \"min\": {\n \"css\": \"cba.min.css\",\n \"map\": \"cba.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"cba.min.3.13.5.css\",\n \"map\": \"cba.min.3.13.5.css.map\"\n }\n },\n \"creditSavvy\": {\n \"buildPath\": \"styles/themes/creditSavvy\",\n \"dev\": {\n \"css\": \"creditSavvy.css\",\n \"map\": \"creditSavvy.css.map\"\n },\n \"min\": {\n \"css\": \"creditSavvy.min.css\",\n \"map\": \"creditSavvy.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"creditSavvy.min.3.13.5.css\",\n \"map\": \"creditSavvy.min.3.13.5.css.map\"\n }\n },\n \"doshii\": {\n \"buildPath\": \"styles/themes/doshii\",\n \"dev\": {\n \"css\": \"doshii.css\",\n \"map\": \"doshii.css.map\"\n },\n \"min\": {\n \"css\": \"doshii.min.css\",\n \"map\": \"doshii.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"doshii.min.3.13.5.css\",\n \"map\": \"doshii.min.3.13.5.css.map\"\n }\n },\n \"homeIn\": {\n \"buildPath\": \"styles/themes/homeIn\",\n \"dev\": {\n \"css\": \"homeIn.css\",\n \"map\": \"homeIn.css.map\"\n },\n \"min\": {\n \"css\": \"homeIn.min.css\",\n \"map\": \"homeIn.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"homeIn.min.3.13.5.css\",\n \"map\": \"homeIn.min.3.13.5.css.map\"\n }\n },\n \"x15Core\": {\n \"buildPath\": \"styles/themes/x15Core\",\n \"dev\": {\n \"css\": \"x15Core.css\",\n \"map\": \"x15Core.css.map\"\n },\n \"min\": {\n \"css\": \"x15Core.min.css\",\n \"map\": \"x15Core.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"x15Core.min.3.13.5.css\",\n \"map\": \"x15Core.min.3.13.5.css.map\"\n }\n }\n}; export default libraryThemes;"],"mappings":";;;;;;AAAA;AACO,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EAC3B,MAAM,EAAE;IACN,WAAW,EAAE,QAAQ;IACrB,KAAK,EAAE;MACL,KAAK,EAAE,WAAW;MAClB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,eAAe;MACtB,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,sBAAsB;MAC7B,KAAK,EAAE;IACT;EACF,CAAC;EACD,KAAK,EAAE;IACL,WAAW,EAAE,mBAAmB;IAChC,KAAK,EAAE;MACL,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,aAAa;MACpB,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,oBAAoB;MAC3B,KAAK,EAAE;IACT;EACF,CAAC;EACD,aAAa,EAAE;IACb,WAAW,EAAE,2BAA2B;IACxC,KAAK,EAAE;MACL,KAAK,EAAE,iBAAiB;MACxB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,qBAAqB;MAC5B,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,4BAA4B;MACnC,KAAK,EAAE;IACT;EACF,CAAC;EACD,QAAQ,EAAE;IACR,WAAW,EAAE,sBAAsB;IACnC,KAAK,EAAE;MACL,KAAK,EAAE,YAAY;MACnB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,gBAAgB;MACvB,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,uBAAuB;MAC9B,KAAK,EAAE;IACT;EACF,CAAC;EACD,QAAQ,EAAE;IACR,WAAW,EAAE,sBAAsB;IACnC,KAAK,EAAE;MACL,KAAK,EAAE,YAAY;MACnB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,gBAAgB;MACvB,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,uBAAuB;MAC9B,KAAK,EAAE;IACT;EACF,CAAC;EACD,SAAS,EAAE;IACT,WAAW,EAAE,uBAAuB;IACpC,KAAK,EAAE;MACL,KAAK,EAAE,aAAa;MACpB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,iBAAiB;MACxB,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,wBAAwB;MAC/B,KAAK,EAAE;IACT;EACF;AACF,CAAC;AAAC,IAAAE,QAAA,GAAAD,OAAA,CAAAE,OAAA,GAAgBH,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"libraryThemes.js","names":["libraryThemes","exports","_default","default"],"sources":["../../../src/autoGenerated/libraryThemes.ts"],"sourcesContent":["/* eslint-disable */\nexport const libraryThemes = {\n \"base\": {\n \"buildPath\": \"styles\",\n \"dev\": {\n \"css\": \"index.css\",\n \"map\": \"index.css.map\"\n },\n \"min\": {\n \"css\": \"index.min.css\",\n \"map\": \"index.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"index.min.3.15.0.css\",\n \"map\": \"index.min.3.15.0.css.map\"\n }\n },\n \"cba\": {\n \"buildPath\": \"styles/themes/cba\",\n \"dev\": {\n \"css\": \"cba.css\",\n \"map\": \"cba.css.map\"\n },\n \"min\": {\n \"css\": \"cba.min.css\",\n \"map\": \"cba.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"cba.min.3.15.0.css\",\n \"map\": \"cba.min.3.15.0.css.map\"\n }\n },\n \"creditSavvy\": {\n \"buildPath\": \"styles/themes/creditSavvy\",\n \"dev\": {\n \"css\": \"creditSavvy.css\",\n \"map\": \"creditSavvy.css.map\"\n },\n \"min\": {\n \"css\": \"creditSavvy.min.css\",\n \"map\": \"creditSavvy.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"creditSavvy.min.3.15.0.css\",\n \"map\": \"creditSavvy.min.3.15.0.css.map\"\n }\n },\n \"doshii\": {\n \"buildPath\": \"styles/themes/doshii\",\n \"dev\": {\n \"css\": \"doshii.css\",\n \"map\": \"doshii.css.map\"\n },\n \"min\": {\n \"css\": \"doshii.min.css\",\n \"map\": \"doshii.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"doshii.min.3.15.0.css\",\n \"map\": \"doshii.min.3.15.0.css.map\"\n }\n },\n \"homeIn\": {\n \"buildPath\": \"styles/themes/homeIn\",\n \"dev\": {\n \"css\": \"homeIn.css\",\n \"map\": \"homeIn.css.map\"\n },\n \"min\": {\n \"css\": \"homeIn.min.css\",\n \"map\": \"homeIn.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"homeIn.min.3.15.0.css\",\n \"map\": \"homeIn.min.3.15.0.css.map\"\n }\n },\n \"x15Core\": {\n \"buildPath\": \"styles/themes/x15Core\",\n \"dev\": {\n \"css\": \"x15Core.css\",\n \"map\": \"x15Core.css.map\"\n },\n \"min\": {\n \"css\": \"x15Core.min.css\",\n \"map\": \"x15Core.min.css.map\"\n },\n \"versioned\": {\n \"css\": \"x15Core.min.3.15.0.css\",\n \"map\": \"x15Core.min.3.15.0.css.map\"\n }\n }\n}; export default libraryThemes;"],"mappings":";;;;;;AAAA;AACO,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EAC3B,MAAM,EAAE;IACN,WAAW,EAAE,QAAQ;IACrB,KAAK,EAAE;MACL,KAAK,EAAE,WAAW;MAClB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,eAAe;MACtB,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,sBAAsB;MAC7B,KAAK,EAAE;IACT;EACF,CAAC;EACD,KAAK,EAAE;IACL,WAAW,EAAE,mBAAmB;IAChC,KAAK,EAAE;MACL,KAAK,EAAE,SAAS;MAChB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,aAAa;MACpB,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,oBAAoB;MAC3B,KAAK,EAAE;IACT;EACF,CAAC;EACD,aAAa,EAAE;IACb,WAAW,EAAE,2BAA2B;IACxC,KAAK,EAAE;MACL,KAAK,EAAE,iBAAiB;MACxB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,qBAAqB;MAC5B,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,4BAA4B;MACnC,KAAK,EAAE;IACT;EACF,CAAC;EACD,QAAQ,EAAE;IACR,WAAW,EAAE,sBAAsB;IACnC,KAAK,EAAE;MACL,KAAK,EAAE,YAAY;MACnB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,gBAAgB;MACvB,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,uBAAuB;MAC9B,KAAK,EAAE;IACT;EACF,CAAC;EACD,QAAQ,EAAE;IACR,WAAW,EAAE,sBAAsB;IACnC,KAAK,EAAE;MACL,KAAK,EAAE,YAAY;MACnB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,gBAAgB;MACvB,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,uBAAuB;MAC9B,KAAK,EAAE;IACT;EACF,CAAC;EACD,SAAS,EAAE;IACT,WAAW,EAAE,uBAAuB;IACpC,KAAK,EAAE;MACL,KAAK,EAAE,aAAa;MACpB,KAAK,EAAE;IACT,CAAC;IACD,KAAK,EAAE;MACL,KAAK,EAAE,iBAAiB;MACxB,KAAK,EAAE;IACT,CAAC;IACD,WAAW,EAAE;MACX,KAAK,EAAE,wBAAwB;MAC/B,KAAK,EAAE;IACT;EACF;AACF,CAAC;AAAC,IAAAE,QAAA,GAAAD,OAAA,CAAAE,OAAA,GAAgBH,aAAa","ignoreList":[]}
@@ -10,8 +10,8 @@
10
10
  "map": "index.min.css.map"
11
11
  },
12
12
  "versioned": {
13
- "css": "base.min.3.13.5.css",
14
- "map": "base.min.3.13.5.css.map"
13
+ "css": "base.min.3.15.0.css",
14
+ "map": "base.min.3.15.0.css.map"
15
15
  }
16
16
  },
17
17
  "cba": {
@@ -25,8 +25,8 @@
25
25
  "map": "cba.min.css.map"
26
26
  },
27
27
  "versioned": {
28
- "css": "cba.min.3.13.5.css",
29
- "map": "cba.min.3.13.5.css.map"
28
+ "css": "cba.min.3.15.0.css",
29
+ "map": "cba.min.3.15.0.css.map"
30
30
  }
31
31
  },
32
32
  "creditSavvy": {
@@ -40,8 +40,8 @@
40
40
  "map": "creditSavvy.min.css.map"
41
41
  },
42
42
  "versioned": {
43
- "css": "creditSavvy.min.3.13.5.css",
44
- "map": "creditSavvy.min.3.13.5.css.map"
43
+ "css": "creditSavvy.min.3.15.0.css",
44
+ "map": "creditSavvy.min.3.15.0.css.map"
45
45
  }
46
46
  },
47
47
  "doshii": {
@@ -55,8 +55,8 @@
55
55
  "map": "doshii.min.css.map"
56
56
  },
57
57
  "versioned": {
58
- "css": "doshii.min.3.13.5.css",
59
- "map": "doshii.min.3.13.5.css.map"
58
+ "css": "doshii.min.3.15.0.css",
59
+ "map": "doshii.min.3.15.0.css.map"
60
60
  }
61
61
  },
62
62
  "homeIn": {
@@ -70,8 +70,8 @@
70
70
  "map": "homeIn.min.css.map"
71
71
  },
72
72
  "versioned": {
73
- "css": "homeIn.min.3.13.5.css",
74
- "map": "homeIn.min.3.13.5.css.map"
73
+ "css": "homeIn.min.3.15.0.css",
74
+ "map": "homeIn.min.3.15.0.css.map"
75
75
  }
76
76
  },
77
77
  "x15Core": {
@@ -85,8 +85,8 @@
85
85
  "map": "x15Core.min.css.map"
86
86
  },
87
87
  "versioned": {
88
- "css": "x15Core.min.3.13.5.css",
89
- "map": "x15Core.min.3.13.5.css.map"
88
+ "css": "x15Core.min.3.15.0.css",
89
+ "map": "x15Core.min.3.15.0.css.map"
90
90
  }
91
91
  }
92
92
  }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.Skeleton = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ require("./skeleton.css");
10
+ const toCssSize = value => typeof value === 'number' ? `${value}px` : value;
11
+ const Skeleton = ({
12
+ variant = 'text',
13
+ width,
14
+ height,
15
+ lines = 1,
16
+ animation = 'wave',
17
+ appearance = 'subtle',
18
+ isLoaded = false,
19
+ children,
20
+ id,
21
+ customCssClass = ''
22
+ }) => {
23
+ if (isLoaded) return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
24
+ const rowCount = Number.isFinite(lines) ? Math.max(1, Math.floor(lines)) : 1;
25
+ const barCount = variant === 'text' ? rowCount : 1;
26
+ const animationCssClass = animation ? `skeleton_${animation}` : 'skeleton_noAnimation';
27
+ const skeletonStyle = {};
28
+ if (width !== undefined) {
29
+ skeletonStyle['--skeletonWidth'] = toCssSize(width);
30
+ }
31
+ if (height !== undefined && variant !== 'circle') {
32
+ skeletonStyle['--skeletonHeight'] = toCssSize(height);
33
+ }
34
+ return /*#__PURE__*/_react.default.createElement("span", {
35
+ id: id,
36
+ "aria-hidden": "true",
37
+ className: `skeleton skeleton_${variant} skeleton_${appearance} ${animationCssClass} ${customCssClass}`,
38
+ style: skeletonStyle
39
+ }, Array.from({
40
+ length: barCount
41
+ }, (_bar, index) => /*#__PURE__*/_react.default.createElement("span", {
42
+ key: index,
43
+ className: "skeletonBar"
44
+ })));
45
+ };
46
+ exports.Skeleton = Skeleton;
47
+ var _default = exports.default = Skeleton;
48
+ //# sourceMappingURL=Skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.js","names":["_react","_interopRequireDefault","require","toCssSize","value","Skeleton","variant","width","height","lines","animation","appearance","isLoaded","children","id","customCssClass","default","createElement","Fragment","rowCount","Number","isFinite","Math","max","floor","barCount","animationCssClass","skeletonStyle","undefined","className","style","Array","from","length","_bar","index","key","exports","_default"],"sources":["../../../../../src/components/design/skeleton/Skeleton.tsx"],"sourcesContent":["import React from 'react';\n\nimport './skeleton.scss';\n\nexport interface SkeletonProps {\n /** Structural style of the placeholder. `text` renders line sized bars, `block` a sharp cornered area, `rounded` a softened one, and `circle` an avatar style disc. */\n variant?: 'text' | 'block' | 'circle' | 'rounded';\n /** Inline size of the placeholder. Numbers are treated as pixels, strings are passed through as written (for example `'50%'`). */\n width?: string | number;\n /** Block size of the placeholder. Numbers are treated as pixels. Ignored for the `circle` variant, which stays square. */\n height?: string | number;\n /** How many placeholder rows to render. Applies to the `text` variant only; all other variants render a single bar. */\n lines?: number;\n /** Animation style, or `false` for a static placeholder. Both animations are suppressed under `prefers-reduced-motion`. */\n animation?: 'pulse' | 'wave' | false;\n /** Visual intensity. `opaque` gives a higher contrast fill for busier or lower contrast surfaces. */\n appearance?: 'subtle' | 'opaque';\n /** When true, `children` are rendered in place of the placeholder. */\n isLoaded?: boolean;\n /** Real content, rendered once `isLoaded` is true. */\n children?: React.ReactNode;\n /** Applied to the placeholder wrapper. Note the wrapper is `aria-hidden`, so this is intended for styling and testing rather than as an ARIA target. */\n id?: string;\n /** Additional class names appended to the placeholder wrapper. */\n customCssClass?: string;\n}\n\nconst toCssSize = (value: string | number): string => (\n typeof value === 'number' ? `${ value }px` : value\n);\n\nexport const Skeleton: React.FC<SkeletonProps> = (\n {\n variant = 'text',\n width,\n height,\n lines = 1,\n animation = 'wave',\n appearance = 'subtle',\n isLoaded = false,\n children,\n id,\n customCssClass = ''\n }\n) => {\n if (isLoaded) return <>{ children }</>;\n\n const rowCount = Number.isFinite(lines) ? Math.max(1, Math.floor(lines)) : 1;\n const barCount = variant === 'text' ? rowCount : 1;\n const animationCssClass = animation ? `skeleton_${ animation }` : 'skeleton_noAnimation';\n\n const skeletonStyle: Record<string, string> = {};\n\n if (width !== undefined) {\n skeletonStyle['--skeletonWidth'] = toCssSize(width);\n }\n\n if (height !== undefined && variant !== 'circle') {\n skeletonStyle['--skeletonHeight'] = toCssSize(height);\n }\n\n return (\n <span\n id={ id }\n aria-hidden=\"true\"\n className={ `skeleton skeleton_${ variant } skeleton_${ appearance } ${ animationCssClass } ${ customCssClass }` }\n style={ skeletonStyle as React.CSSProperties }\n >\n { Array.from({ length: barCount }, (_bar, index) => (\n <span key={ index } className=\"skeletonBar\" />\n )) }\n </span>\n );\n};\n\nexport default Skeleton;\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEAA,OAAA;AAyBA,MAAMC,SAAS,GAAIC,KAAsB,IACvC,OAAOA,KAAK,KAAK,QAAQ,GAAG,GAAIA,KAAK,IAAK,GAAGA,KAC9C;AAEM,MAAMC,QAAiC,GAAGA,CAC/C;EACEC,OAAO,GAAG,MAAM;EAChBC,KAAK;EACLC,MAAM;EACNC,KAAK,GAAG,CAAC;EACTC,SAAS,GAAG,MAAM;EAClBC,UAAU,GAAG,QAAQ;EACrBC,QAAQ,GAAG,KAAK;EAChBC,QAAQ;EACRC,EAAE;EACFC,cAAc,GAAG;AACnB,CAAC,KACE;EACH,IAAIH,QAAQ,EAAE,oBAAOZ,MAAA,CAAAgB,OAAA,CAAAC,aAAA,CAAAjB,MAAA,CAAAgB,OAAA,CAAAE,QAAA,QAAIL,QAAY,CAAC;EAEtC,MAAMM,QAAQ,GAAGC,MAAM,CAACC,QAAQ,CAACZ,KAAK,CAAC,GAAGa,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,KAAK,CAACf,KAAK,CAAC,CAAC,GAAG,CAAC;EAC5E,MAAMgB,QAAQ,GAAGnB,OAAO,KAAK,MAAM,GAAGa,QAAQ,GAAG,CAAC;EAClD,MAAMO,iBAAiB,GAAGhB,SAAS,GAAG,YAAaA,SAAS,EAAG,GAAG,sBAAsB;EAExF,MAAMiB,aAAqC,GAAG,CAAC,CAAC;EAEhD,IAAIpB,KAAK,KAAKqB,SAAS,EAAE;IACvBD,aAAa,CAAC,iBAAiB,CAAC,GAAGxB,SAAS,CAACI,KAAK,CAAC;EACrD;EAEA,IAAIC,MAAM,KAAKoB,SAAS,IAAItB,OAAO,KAAK,QAAQ,EAAE;IAChDqB,aAAa,CAAC,kBAAkB,CAAC,GAAGxB,SAAS,CAACK,MAAM,CAAC;EACvD;EAEA,oBACER,MAAA,CAAAgB,OAAA,CAAAC,aAAA;IACEH,EAAE,EAAGA,EAAI;IACT,eAAY,MAAM;IAClBe,SAAS,EAAG,qBAAsBvB,OAAO,aAAeK,UAAU,IAAMe,iBAAiB,IAAMX,cAAc,EAAK;IAClHe,KAAK,EAAGH;EAAsC,GAE5CI,KAAK,CAACC,IAAI,CAAC;IAAEC,MAAM,EAAER;EAAS,CAAC,EAAE,CAACS,IAAI,EAAEC,KAAK,kBAC7CnC,MAAA,CAAAgB,OAAA,CAAAC,aAAA;IAAMmB,GAAG,EAAGD,KAAO;IAACN,SAAS,EAAC;EAAa,CAAE,CAC9C,CACG,CAAC;AAEX,CAAC;AAACQ,OAAA,CAAAhC,QAAA,GAAAA,QAAA;AAAA,IAAAiC,QAAA,GAAAD,OAAA,CAAArB,OAAA,GAEaX,QAAQ","ignoreList":[]}
@@ -0,0 +1,86 @@
1
+ .skeleton {
2
+ display: inline-flex;
3
+ flex-direction: column;
4
+ align-items: stretch;
5
+ gap: var(--skeletonLineGap, 8px);
6
+ vertical-align: middle;
7
+ inline-size: var(--skeletonWidth, 100%);
8
+ max-inline-size: 100%;
9
+ }
10
+
11
+ .skeletonBar {
12
+ inline-size: 100%;
13
+ block-size: var(--skeletonHeight, var(--skeletonLineHeight, 1em));
14
+ background-color: var(--skeletonBg, #eef2f4);
15
+ border-radius: var(--skeletonBorderRadius, 3px);
16
+ }
17
+
18
+ /* Variants */
19
+ .skeleton_text .skeletonBar:last-child:not(:only-child) {
20
+ inline-size: var(--skeletonLastLineWidth, 60%);
21
+ }
22
+
23
+ .skeleton_block .skeletonBar {
24
+ block-size: var(--skeletonHeight, var(--skeletonBlockHeight, 120px));
25
+ border-radius: 0;
26
+ }
27
+
28
+ .skeleton_rounded .skeletonBar {
29
+ block-size: var(--skeletonHeight, var(--skeletonBlockHeight, 120px));
30
+ border-radius: var(--skeletonRoundedBorderRadius, 8px);
31
+ }
32
+
33
+ .skeleton_circle {
34
+ inline-size: var(--skeletonWidth, var(--skeletonCircleSize, 40px));
35
+ }
36
+ .skeleton_circle .skeletonBar {
37
+ block-size: auto;
38
+ aspect-ratio: 1;
39
+ border-radius: 50%;
40
+ }
41
+
42
+ /* Appearance */
43
+ .skeleton_opaque .skeletonBar {
44
+ background-color: var(--skeletonOpaqueBg, #d3dee4);
45
+ }
46
+
47
+ .skeleton_wave .skeletonBar {
48
+ position: relative;
49
+ overflow: hidden;
50
+ }
51
+ .skeleton_wave .skeletonBar::after {
52
+ content: "";
53
+ position: absolute;
54
+ inset: 0;
55
+ transform: translateX(-100%);
56
+ background-image: linear-gradient(90deg, transparent, var(--skeletonHighlight, #f6f8fa), transparent);
57
+ animation: skeletonWave var(--skeletonAnimationDuration, 1.6s) linear infinite;
58
+ }
59
+
60
+ .skeleton_pulse .skeletonBar {
61
+ opacity: 1;
62
+ animation: skeletonPulse var(--skeletonAnimationDuration, 1.6s) ease-in-out infinite alternate;
63
+ }
64
+
65
+ @keyframes skeletonWave {
66
+ to {
67
+ transform: translateX(100%);
68
+ }
69
+ }
70
+ @keyframes skeletonPulse {
71
+ from {
72
+ opacity: 1;
73
+ }
74
+ to {
75
+ opacity: 0.3;
76
+ }
77
+ }
78
+ @media (prefers-reduced-motion: reduce) {
79
+ .skeleton_wave .skeletonBar::after {
80
+ display: none;
81
+ }
82
+ .skeleton_pulse .skeletonBar {
83
+ animation: none;
84
+ opacity: 1;
85
+ }
86
+ }
@@ -100,7 +100,7 @@ const FormField = ({
100
100
  htmlFor: field.id
101
101
  }, (!label?.position || label.position === 'left' || separateLabelAndField) && /*#__PURE__*/_react.default.createElement(_FormFieldLabel.FormFieldLabel, labelProps), !separateLabelAndField && /*#__PURE__*/_react.default.createElement("span", {
102
102
  className: "inputContainer"
103
- }, getFieldElement(), label?.position === 'inset' && /*#__PURE__*/_react.default.createElement(_FormFieldLabel.FormFieldLabel, labelProps)), label?.position === 'right' && /*#__PURE__*/_react.default.createElement(_FormFieldLabel.FormFieldLabel, labelProps), showSpinner && /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, null), /*#__PURE__*/_react.default.createElement(_ValidationMessages.ValidationMessages, {
103
+ }, getFieldElement(), label?.position === 'inset' && /*#__PURE__*/_react.default.createElement(_FormFieldLabel.FormFieldLabel, labelProps)), label?.position === 'right' && /*#__PURE__*/_react.default.createElement(_FormFieldLabel.FormFieldLabel, labelProps), showSpinner && /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, null), field.type !== 'textarea' && /*#__PURE__*/_react.default.createElement(_ValidationMessages.ValidationMessages, {
104
104
  name: field.name,
105
105
  validation: validation
106
106
  })), separateLabelAndField && /*#__PURE__*/_react.default.createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"FormField.js","names":["Object","defineProperty","exports","value","default","FormField","_react","_interopRequireWildcard","require","_HookFormWrapper","_FormFieldLabel","_InputText","_ValidationMessages","_Spinner","_InputSearch","_InputDate","_Select","_Textarea","_Autocomplete","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","label","field","layout","showSpinner","validation","customContent","customCssClasses","separateLabelAndField","isTouched","setIsTouched","useState","wrapperCssClass","type","wrapper","position","wrapperHoverText","hide","undefined","placeholder","text","getFieldElement","fieldType","toLowerCase","fieldProps","defaultValue","onTouched","createElement","Textarea","Select","Error","InputText","InputDate","InputSearch","Autocomplete","labelProps","inputId","id","isRequired","required","HookFormWrapper","className","title","labelId","htmlFor","FormFieldLabel","Spinner","ValidationMessages","name","_default"],"sources":["../../../../../../src/components/form/formFields/formFieldWrapper/FormField.tsx"],"sourcesContent":["'use client';\n\nimport React, { ReactNode, useState } from 'react';\nimport { HookFormWrapper } from '../../hookFormWrapper/HookFormWrapper';\nimport { FormFieldLabel } from '../subComponents/labels/FormFieldLabel';\nimport { FormFieldProps } from './formFieldProps';\nimport { InputText } from '../subComponents/inputs/text/InputText';\nimport { ValidationMessages } from '../../validation/ValidationMessages';\nimport { Spinner } from '../../../design/spinner/Spinner';\nimport { InputSearch } from '../subComponents/inputs/search/InputSearch';\nimport { InputDate } from '../subComponents/inputs/date/InputDate';\nimport { Select } from '../subComponents/select/Select';\nimport { Textarea } from '../subComponents/textarea/Textarea';\nimport { Autocomplete } from '../subComponents/inputs/autocomplete/Autocomplete';\n\nexport const FormField: React.FC<FormFieldProps> = (\n {\n label,\n field,\n layout = 'stacked',\n showSpinner,\n validation,\n customContent,\n customCssClasses,\n separateLabelAndField = false\n }\n) => {\n const [isTouched, setIsTouched] = useState(false);\n\n const wrapperCssClass = `\n formField \n ${ layout } \n ${ field.type }_Field \n ${ customCssClasses?.wrapper || '' } \n ${ isTouched ? 'touched' : '' } \n ${ typeof validation !== 'undefined' ? 'withValidation' : '' } \n ${ label?.position === 'inset' ? 'insetLabel' : '' }\n `;\n\n const wrapperHoverText = (): string | undefined => {\n if (!label.hide) {\n return undefined;\n }\n\n if (field.placeholder) {\n return field.placeholder;\n }\n\n if (typeof label.text === 'string') {\n return label.text;\n }\n\n return undefined;\n };\n\n const getFieldElement = () => {\n const fieldType = field.type.toLowerCase();\n const fieldProps = {\n field: {\n ...field,\n ...(fieldType !== 'checkbox' ? { defaultValue: field.defaultValue || '' } : {}),\n onTouched: () => setIsTouched(true)\n },\n label,\n showSpinner,\n validation,\n customContent\n };\n\n switch (fieldType) {\n case 'textarea':\n return <Textarea { ...fieldProps } />;\n case 'select':\n return <Select { ...fieldProps } />;\n case 'checkbox':\n return new Error('Checkboxes require special handling. Please use the InputCheckbox component instead.');\n case 'file':\n return new Error('File inputs require special handling. Please use the DragAndDropFileUpload component instead.');\n case 'password':\n return <InputText { ...fieldProps } />;\n case 'date':\n return <InputDate { ...fieldProps } />;\n case 'search':\n return <InputSearch { ...fieldProps } />;\n case 'combobox':\n return <Autocomplete { ...fieldProps } />;\n default:\n return <InputText { ...fieldProps } />;\n }\n };\n\n const labelProps = {\n ...label,\n inputId: field.id,\n isRequired: validation && typeof validation.required !== 'undefined',\n customContent\n };\n\n return (\n <HookFormWrapper>\n <div\n className={ wrapperCssClass }\n title={ wrapperHoverText() }\n >\n <label\n id={ label.labelId || `${ field.id }_label` }\n className={ `${ customCssClasses?.label || '' } ${ showSpinner ? 'withSpinner' : '' } ${ label.hide ? 'hiddenLabel' : '' }` }\n htmlFor={ field.id }\n >\n\n { (!label?.position || label.position === 'left' || separateLabelAndField)\n && <FormFieldLabel { ...labelProps } /> }\n\n {\n !separateLabelAndField && (\n <span className=\"inputContainer\">\n {\n getFieldElement() as ReactNode\n }\n { label?.position === 'inset'\n && <FormFieldLabel { ...labelProps } /> }\n </span>\n )\n }\n\n { label?.position === 'right'\n && <FormFieldLabel { ...labelProps } /> }\n\n {\n showSpinner && <Spinner />\n }\n\n <ValidationMessages name={ field.name } validation={ validation } />\n </label>\n\n {\n separateLabelAndField && (\n <div className=\"inputContainer\">\n {\n getFieldElement() as ReactNode\n }\n </div>\n )\n }\n </div>\n </HookFormWrapper>\n );\n};\n\nexport default FormField;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormField.js","names":["Object","defineProperty","exports","value","default","FormField","_react","_interopRequireWildcard","require","_HookFormWrapper","_FormFieldLabel","_InputText","_ValidationMessages","_Spinner","_InputSearch","_InputDate","_Select","_Textarea","_Autocomplete","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","has","get","set","hasOwnProperty","call","getOwnPropertyDescriptor","label","field","layout","showSpinner","validation","customContent","customCssClasses","separateLabelAndField","isTouched","setIsTouched","useState","wrapperCssClass","type","wrapper","position","wrapperHoverText","hide","undefined","placeholder","text","getFieldElement","fieldType","toLowerCase","fieldProps","defaultValue","onTouched","createElement","Textarea","Select","Error","InputText","InputDate","InputSearch","Autocomplete","labelProps","inputId","id","isRequired","required","HookFormWrapper","className","title","labelId","htmlFor","FormFieldLabel","Spinner","ValidationMessages","name","_default"],"sources":["../../../../../../src/components/form/formFields/formFieldWrapper/FormField.tsx"],"sourcesContent":["'use client';\n\nimport React, { ReactNode, useState } from 'react';\nimport { HookFormWrapper } from '../../hookFormWrapper/HookFormWrapper';\nimport { FormFieldLabel } from '../subComponents/labels/FormFieldLabel';\nimport { FormFieldProps } from './formFieldProps';\nimport { InputText } from '../subComponents/inputs/text/InputText';\nimport { ValidationMessages } from '../../validation/ValidationMessages';\nimport { Spinner } from '../../../design/spinner/Spinner';\nimport { InputSearch } from '../subComponents/inputs/search/InputSearch';\nimport { InputDate } from '../subComponents/inputs/date/InputDate';\nimport { Select } from '../subComponents/select/Select';\nimport { Textarea } from '../subComponents/textarea/Textarea';\nimport { Autocomplete } from '../subComponents/inputs/autocomplete/Autocomplete';\n\nexport const FormField: React.FC<FormFieldProps> = (\n {\n label,\n field,\n layout = 'stacked',\n showSpinner,\n validation,\n customContent,\n customCssClasses,\n separateLabelAndField = false\n }\n) => {\n const [isTouched, setIsTouched] = useState(false);\n\n const wrapperCssClass = `\n formField \n ${ layout } \n ${ field.type }_Field \n ${ customCssClasses?.wrapper || '' } \n ${ isTouched ? 'touched' : '' } \n ${ typeof validation !== 'undefined' ? 'withValidation' : '' } \n ${ label?.position === 'inset' ? 'insetLabel' : '' }\n `;\n\n const wrapperHoverText = (): string | undefined => {\n if (!label.hide) {\n return undefined;\n }\n\n if (field.placeholder) {\n return field.placeholder;\n }\n\n if (typeof label.text === 'string') {\n return label.text;\n }\n\n return undefined;\n };\n\n const getFieldElement = () => {\n const fieldType = field.type.toLowerCase();\n const fieldProps = {\n field: {\n ...field,\n ...(fieldType !== 'checkbox' ? { defaultValue: field.defaultValue || '' } : {}),\n onTouched: () => setIsTouched(true)\n },\n label,\n showSpinner,\n validation,\n customContent\n };\n\n switch (fieldType) {\n case 'textarea':\n return <Textarea { ...fieldProps } />;\n case 'select':\n return <Select { ...fieldProps } />;\n case 'checkbox':\n return new Error('Checkboxes require special handling. Please use the InputCheckbox component instead.');\n case 'file':\n return new Error('File inputs require special handling. Please use the DragAndDropFileUpload component instead.');\n case 'password':\n return <InputText { ...fieldProps } />;\n case 'date':\n return <InputDate { ...fieldProps } />;\n case 'search':\n return <InputSearch { ...fieldProps } />;\n case 'combobox':\n return <Autocomplete { ...fieldProps } />;\n default:\n return <InputText { ...fieldProps } />;\n }\n };\n\n const labelProps = {\n ...label,\n inputId: field.id,\n isRequired: validation && typeof validation.required !== 'undefined',\n customContent\n };\n\n return (\n <HookFormWrapper>\n <div\n className={ wrapperCssClass }\n title={ wrapperHoverText() }\n >\n <label\n id={ label.labelId || `${ field.id }_label` }\n className={ `${ customCssClasses?.label || '' } ${ showSpinner ? 'withSpinner' : '' } ${ label.hide ? 'hiddenLabel' : '' }` }\n htmlFor={ field.id }\n >\n\n { (!label?.position || label.position === 'left' || separateLabelAndField)\n && <FormFieldLabel { ...labelProps } /> }\n\n {\n !separateLabelAndField && (\n <span className=\"inputContainer\">\n {\n getFieldElement() as ReactNode\n }\n { label?.position === 'inset'\n && <FormFieldLabel { ...labelProps } /> }\n </span>\n )\n }\n\n { label?.position === 'right'\n && <FormFieldLabel { ...labelProps } /> }\n\n {\n showSpinner && <Spinner />\n }\n\n { field.type !== 'textarea' && <ValidationMessages name={ field.name } validation={ validation } /> }\n </label>\n\n {\n separateLabelAndField && (\n <div className=\"inputContainer\">\n {\n getFieldElement() as ReactNode\n }\n </div>\n )\n }\n </div>\n </HookFormWrapper>\n );\n};\n\nexport default FormField;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"formFieldProps.js","names":[],"sources":["../../../../../../src/components/form/formFields/formFieldWrapper/formFieldProps.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\n\nimport {\n ChangeEvent, ChangeEventHandler, FormEventHandler,\n KeyboardEvent,\n ReactElement,\n ReactNode,\n} from 'react';\n\nimport type {\n InputHTMLAttributes,\n SelectHTMLAttributes,\n TextareaHTMLAttributes,\n} from 'react';\n\nimport {\n Message,\n Validate,\n ValidationRule\n} from 'react-hook-form';\nimport { GenericFunction } from '../../../../interfaces';\nimport { KeyboardEventHandler } from '../../../../interfaces/generic.interface';\n\n/**\n * Custom content props for additional elements around the label or field.\n */\nexport interface CustomContentProps {\n /** Element or text to display before the label. */\n preLabel?: ReactElement | string;\n /** Element or text to display after the label. */\n postLabel?: ReactElement | string;\n /** Element or text to display before the field. */\n preField?: ReactElement | string;\n /** Element or text to display after the field. */\n postField?: ReactElement | string;\n}\n\n/**\n * Props for the label element.\n */\nexport interface LabelProps {\n /** Text or element for the label. */\n text: string | ReactNode | ReactElement;\n /** The ID of the input the label is associated with. */\n inputId?: string;\n /** The ID of the label element. */\n labelId?: string;\n /** Whether to hide the label visually. */\n hide?: boolean;\n /** Position of the label relative to the field. */\n position?: 'inset' | 'left' | 'right' | string;\n /** Tooltip for the label. */\n labelTooltip?: {\n /** Text for the tooltip. */\n text: string;\n /** Optional icon for the tooltip. */\n icon?: ReactElement | string;\n };\n /** Screen reader instructions for the label. */\n srInstruction?: string;\n /** Whether the field is required. */\n isRequired?: boolean;\n /** Custom content for the label. */\n customContent?: CustomContentProps;\n}\n\n/**\n * Type for a single select option.\n */\nexport type SelectOptionObjectType = {\n /** Label of the option. */\n label: string;\n /** Value of the option. */\n value: string | number | boolean;\n};\n\n/**\n * Type for select options, which can be an object or string.\n */\nexport type SelectOptionType = SelectOptionObjectType | string;\n\n/**\n * Type for a single combobox (autocomplete) option.\n */\nexport type ComboboxOptionObjectType = {\n /** Label of the option. */\n label: string;\n /** Value of the option. */\n value: string | number | boolean;\n /** Additional data associated with the option. */\n data?: Record<string, unknown>;\n};\n\nexport type ComboboxOption = ComboboxOptionObjectType | string;\n\n// Everything we want to *override* with our own definitions in FieldProps\nexport type OverriddenKeys =\n | 'type'\n | 'id'\n | 'name'\n | 'placeholder'\n | 'defaultValue'\n | 'onChange'\n | 'onBlur'\n | 'onInput'\n | 'onKeyDown'\n | 'disabled'\n | 'readOnly'\n | 'min'\n | 'max';\n\n// All the native props we want to mix in, minus the ones we override\nexport type NativeFieldProps =\n & Omit<InputHTMLAttributes<HTMLInputElement>, OverriddenKeys>\n & Omit<SelectHTMLAttributes<HTMLSelectElement>, OverriddenKeys>\n & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, OverriddenKeys>;\n\n/**\n * Props for the field element.\n */\nexport interface FieldProps extends NativeFieldProps {\n /** The type of the input field. */\n type: string;\n /** The ID of the input field. */\n id: string;\n /** The name of the input field. */\n name: string;\n /** Placeholder text for the input field. */\n placeholder?: string;\n /** Default value for the input field. */\n defaultValue?: string | number | readonly string[];\n /** Handler for the change event. */\n onChange?: ChangeEventHandler | ((\n event: ChangeEvent<HTMLInputElement> | KeyboardEvent<HTMLSelectElement> | KeyboardEvent<HTMLTextAreaElement>\n ) => void | GenericFunction);\n /** Handler for the blur event. */\n onBlur?: GenericFunction;\n /** Handler for the input event. */\n onInput?: FormEventHandler<\n HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n >;\n /** Handler for the keydown event. */\n onKeyDown?: KeyboardEventHandler | ((\n event: KeyboardEvent<HTMLInputElement> | KeyboardEvent<HTMLSelectElement> | KeyboardEvent<HTMLTextAreaElement>\n ) => void | GenericFunction);\n /** Handler for marking the field as touched. */\n onTouched?: GenericFunction;\n /** Whether to include an empty option in a dropdown. */\n includeEmptyOption?: boolean;\n /** Label for the empty option. */\n emptyOptionLabel?: string;\n /** Options for a dropdown field. */\n options?: SelectOptionType[] | ComboboxOption[];\n /** Auto-complete behaviour for the field. */\n autoComplete?: string;\n /** Whether the field allows editing and interaction. Note: Setting this to true makes it invisible to screen reader users. */\n disabled?: boolean;\n /** Setting to true prevents editing and interaction whilst still making the value visible to screen reader users. */\n readonly?: boolean;\n /** Minimum value or length. */\n min?: string | number;\n /** Maximum value or length. */\n max?: string | number;\n}\n\n/**\n * Validation rules for fields.\n */\nexport type CustomValidate<TFieldValue> = (\n value: TFieldValue,\n formValues?: unknown\n) => boolean | string | Promise<boolean | string>;\n\n/**\n * Props for validation rules.\n */\n\nexport type MinMaxRule<T> = T extends boolean\n ? ValidationRule<boolean>\n : ValidationRule<number | string>;\n\nexport interface ValidationProps<\n TFieldValue = unknown | string | boolean,\n TFormValues = unknown\n> {\n /** Whether the field is required. */\n required?: Message | ValidationRule<boolean>;\n /** Minimum value or length. */\n min?: MinMaxRule<TFieldValue>;\n /** Maximum value or length. */\n max?: MinMaxRule<TFieldValue>;\n /** Maximum length of the field. */\n maxLength?: ValidationRule<number>;\n /** Minimum length of the field. */\n minLength?: ValidationRule<number>;\n /** Regex pattern for validation. */\n pattern?: ValidationRule<RegExp>;\n /** Custom validation logic. */\n validate?: CustomValidate<TFieldValue> | Record<string, CustomValidate<TFieldValue>> | Validate<TFieldValue, TFormValues>;\n}\n\nexport type ValidationKey = keyof ValidationProps<unknown, unknown>; // Restrict to known keys\n\n/**\n * Custom CSS classes for the field components.\n */\nexport interface CustomFieldCssClassesProps {\n /** CSS class for the label. */\n label?: string;\n /** CSS class for the input field. */\n input?: string;\n /** CSS class for the wrapper. */\n wrapper?: string;\n}\n\n/**\n * Props for a form field component.\n */\nexport interface FormFieldProps {\n /** Props for the label. */\n label: LabelProps;\n /** Props for the field. */\n field: FieldProps;\n /** Layout style of the form field. */\n layout?: 'stacked' | 'horizontal' | string;\n /** Validation rules for the field. */\n validation?: ValidationProps;\n /** Whether to show a spinner. */\n showSpinner?: boolean;\n /** Custom CSS classes for the field. */\n customCssClasses?: CustomFieldCssClassesProps;\n /** Custom content for the field. */\n customContent?: CustomContentProps;\n /** Override the default nesting of the input inside the label. */\n separateLabelAndField?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"formFieldProps.js","names":[],"sources":["../../../../../../src/components/form/formFields/formFieldWrapper/formFieldProps.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\n\nimport {\n ChangeEvent, ChangeEventHandler, FormEventHandler,\n KeyboardEvent,\n ReactElement,\n ReactNode,\n} from 'react';\n\nimport type {\n InputHTMLAttributes,\n SelectHTMLAttributes,\n TextareaHTMLAttributes,\n} from 'react';\n\nimport {\n Message,\n Validate,\n ValidationRule\n} from 'react-hook-form';\nimport { GenericFunction } from '../../../../interfaces';\nimport { KeyboardEventHandler } from '../../../../interfaces/generic.interface';\n\n/**\n * Custom content props for additional elements around the label or field.\n */\nexport interface CustomContentProps {\n /** Element or text to display before the label. */\n preLabel?: ReactElement | string;\n /** Element or text to display after the label. */\n postLabel?: ReactElement | string;\n /** Element or text to display before the field. */\n preField?: ReactElement | string;\n /** Element or text to display after the field. */\n postField?: ReactElement | string;\n}\n\n/**\n * Props for the label element.\n */\nexport interface LabelProps {\n /** Text or element for the label. */\n text: string | ReactNode | ReactElement;\n /** The ID of the input the label is associated with. */\n inputId?: string;\n /** The ID of the label element. */\n labelId?: string;\n /** Whether to hide the label visually. */\n hide?: boolean;\n /** Position of the label relative to the field. */\n position?: 'inset' | 'left' | 'right' | string;\n /** Tooltip for the label. */\n labelTooltip?: {\n /** Text for the tooltip. */\n text: string;\n /** Optional icon for the tooltip. */\n icon?: ReactElement | string;\n };\n /** Screen reader instructions for the label. */\n srInstruction?: string;\n /** Whether the field is required. */\n isRequired?: boolean;\n /** Custom content for the label. */\n customContent?: CustomContentProps;\n}\n\n/**\n * Type for a single select option.\n */\nexport type SelectOptionObjectType = {\n /** Label of the option. */\n label: string;\n /** Value of the option. */\n value: string | number | boolean;\n};\n\n/**\n * Type for select options, which can be an object or string.\n */\nexport type SelectOptionType = SelectOptionObjectType | string;\n\n/**\n * Type for a single combobox (autocomplete) option.\n */\nexport type ComboboxOptionObjectType = {\n /** Label of the option. */\n label: string;\n /** Value of the option. */\n value: string | number | boolean;\n /** Additional data associated with the option. */\n data?: Record<string, unknown>;\n};\n\nexport type ComboboxOption = ComboboxOptionObjectType | string;\n\n// Everything we want to *override* with our own definitions in FieldProps\nexport type OverriddenKeys =\n | 'type'\n | 'id'\n | 'name'\n | 'placeholder'\n | 'defaultValue'\n | 'onChange'\n | 'onBlur'\n | 'onInput'\n | 'onKeyDown'\n | 'disabled'\n | 'readOnly'\n | 'min'\n | 'max';\n\n// All the native props we want to mix in, minus the ones we override\nexport type NativeFieldProps =\n & Omit<InputHTMLAttributes<HTMLInputElement>, OverriddenKeys>\n & Omit<SelectHTMLAttributes<HTMLSelectElement>, OverriddenKeys>\n & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, OverriddenKeys>;\n\n/**\n * Props for the field element.\n */\nexport interface FieldProps extends NativeFieldProps {\n /** The type of the input field. */\n type: string;\n /** The ID of the input field. */\n id: string;\n /** The name of the input field. */\n name: string;\n /** Placeholder text for the input field. */\n placeholder?: string;\n /** Default value for the input field. */\n defaultValue?: string | number | readonly string[];\n /** Handler for the change event. */\n onChange?: ChangeEventHandler | ((\n event: ChangeEvent<HTMLInputElement> | KeyboardEvent<HTMLSelectElement> | KeyboardEvent<HTMLTextAreaElement>\n ) => void | GenericFunction);\n /** Handler for the blur event. */\n onBlur?: GenericFunction;\n /** Handler for the input event. */\n onInput?: FormEventHandler<\n HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n >;\n /** Handler for the keydown event. */\n onKeyDown?: KeyboardEventHandler | ((\n event: KeyboardEvent<HTMLInputElement> | KeyboardEvent<HTMLSelectElement> | KeyboardEvent<HTMLTextAreaElement>\n ) => void | GenericFunction);\n /** Handler for marking the field as touched. */\n onTouched?: GenericFunction;\n /** Whether to include an empty option in a dropdown. */\n includeEmptyOption?: boolean;\n /** Label for the empty option. */\n emptyOptionLabel?: string;\n /** Options for a dropdown field. */\n options?: SelectOptionType[] | ComboboxOption[];\n /** Auto-complete behaviour for the field. */\n autoComplete?: string;\n /** Whether the field allows editing and interaction. Note: Setting this to true makes it invisible to screen reader users. */\n disabled?: boolean;\n /** Setting to true prevents editing and interaction whilst still making the value visible to screen reader users. */\n readonly?: boolean;\n /** Minimum value or length. */\n min?: string | number;\n /** Maximum value or length. */\n max?: string | number;\n /**\n * Whether to enforce grapheme-aware max-length handling (used by textarea).\n * Uses `field.maxLength` (native field prop) as the source for the UI/input limit.\n * Keep `field.maxLength` and `validation.maxLength` aligned to avoid mixed UX/validation behaviour.\n */\n enforceMaxLength?: boolean;\n}\n\n/**\n * Validation rules for fields.\n */\nexport type CustomValidate<TFieldValue> = (\n value: TFieldValue,\n formValues?: unknown\n) => boolean | string | Promise<boolean | string>;\n\n/**\n * Props for validation rules.\n */\n\nexport type MinMaxRule<T> = T extends boolean\n ? ValidationRule<boolean>\n : ValidationRule<number | string>;\n\nexport interface ValidationProps<\n TFieldValue = unknown | string | boolean,\n TFormValues = unknown\n> {\n /** Whether the field is required. */\n required?: Message | ValidationRule<boolean>;\n /** Minimum value or length. */\n min?: MinMaxRule<TFieldValue>;\n /** Maximum value or length. */\n max?: MinMaxRule<TFieldValue>;\n /**\n * Maximum length validation rule.\n * Used for validation outcome/messages, while textarea UI/input limiting is driven by `field.maxLength`.\n * If both are provided, keep them equal.\n */\n maxLength?: ValidationRule<number>;\n /** Minimum length of the field. */\n minLength?: ValidationRule<number>;\n /** Regex pattern for validation. */\n pattern?: ValidationRule<RegExp>;\n /** Custom validation logic. */\n validate?: CustomValidate<TFieldValue> | Record<string, CustomValidate<TFieldValue>> | Validate<TFieldValue, TFormValues>;\n}\n\nexport type ValidationKey = keyof ValidationProps<unknown, unknown>; // Restrict to known keys\n\n/**\n * Custom CSS classes for the field components.\n */\nexport interface CustomFieldCssClassesProps {\n /** CSS class for the label. */\n label?: string;\n /** CSS class for the input field. */\n input?: string;\n /** CSS class for the wrapper. */\n wrapper?: string;\n}\n\n/**\n * Props for a form field component.\n */\nexport interface FormFieldProps {\n /** Props for the label. */\n label: LabelProps;\n /** Props for the field. */\n field: FieldProps;\n /** Layout style of the form field. */\n layout?: 'stacked' | 'horizontal' | string;\n /** Validation rules for the field. */\n validation?: ValidationProps;\n /** Whether to show a spinner. */\n showSpinner?: boolean;\n /** Custom CSS classes for the field. */\n customCssClasses?: CustomFieldCssClassesProps;\n /** Custom content for the field. */\n customContent?: CustomContentProps;\n /** Override the default nesting of the input inside the label. */\n separateLabelAndField?: boolean;\n}\n"],"mappings":"","ignoreList":[]}