@oneplatformdev/ui 0.1.99-beta.24 → 0.1.99-beta.241

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 (228) hide show
  1. package/Accordion/Accordion.d.ts +1 -1
  2. package/Accordion/Accordion.d.ts.map +1 -1
  3. package/Accordion/Accordion.js +48 -26
  4. package/Accordion/Accordion.js.map +1 -1
  5. package/AlertDialog/AlertDialog.stories.js +3 -2
  6. package/AlertDialog/AlertDialog.stories.js.map +1 -1
  7. package/AlertDialog/AlertDialogRoot.d.ts.map +1 -1
  8. package/AlertDialog/AlertDialogRoot.js +26 -24
  9. package/AlertDialog/AlertDialogRoot.js.map +1 -1
  10. package/Button/Button.d.ts.map +1 -1
  11. package/Button/Button.js +43 -43
  12. package/Button/Button.js.map +1 -1
  13. package/Button/Button.stories.js +15 -12
  14. package/Button/Button.stories.js.map +1 -1
  15. package/Button/Button.utils.d.ts +3 -0
  16. package/Button/Button.utils.d.ts.map +1 -0
  17. package/Button/Button.utils.js +14 -0
  18. package/Button/Button.utils.js.map +1 -0
  19. package/Button/buttonVariants.d.ts +2 -2
  20. package/Button/buttonVariants.d.ts.map +1 -1
  21. package/Button/buttonVariants.js +39 -6
  22. package/Button/buttonVariants.js.map +1 -1
  23. package/Button/index.d.ts +1 -0
  24. package/Button/index.d.ts.map +1 -1
  25. package/Button/index.js +8 -6
  26. package/Button/index.js.map +1 -1
  27. package/ButtonIcon/ButtonIcon.d.ts.map +1 -1
  28. package/ButtonIcon/ButtonIcon.js +41 -39
  29. package/ButtonIcon/ButtonIcon.js.map +1 -1
  30. package/ButtonIcon/ButtonIcon.stories.js +35 -33
  31. package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
  32. package/ButtonIcon/buttonIconVariants.d.ts +1 -1
  33. package/ButtonIcon/buttonIconVariants.d.ts.map +1 -1
  34. package/ButtonIcon/buttonIconVariants.js +4 -2
  35. package/ButtonIcon/buttonIconVariants.js.map +1 -1
  36. package/CHANGELOG.md +1367 -0
  37. package/Calendar/Calendar.js +5 -4
  38. package/Calendar/Calendar.js.map +1 -1
  39. package/Card/Card.d.ts.map +1 -1
  40. package/Card/Card.js +22 -21
  41. package/Card/Card.js.map +1 -1
  42. package/Checkbox/Checkbox.d.ts.map +1 -1
  43. package/Checkbox/Checkbox.js +36 -34
  44. package/Checkbox/Checkbox.js.map +1 -1
  45. package/Checkbox/Checkbox.stories.js +108 -0
  46. package/Checkbox/Checkbox.stories.js.map +1 -0
  47. package/Checkbox/Checkbox.types.d.ts +2 -1
  48. package/Checkbox/Checkbox.types.d.ts.map +1 -1
  49. package/Combobox/Combobox.d.ts +4 -2
  50. package/Combobox/Combobox.d.ts.map +1 -1
  51. package/Combobox/Combobox.js +183 -195
  52. package/Combobox/Combobox.js.map +1 -1
  53. package/Combobox/Combobox.stories.js +293 -0
  54. package/Combobox/Combobox.stories.js.map +1 -0
  55. package/Combobox/Combobox.types.d.ts +68 -24
  56. package/Combobox/Combobox.types.d.ts.map +1 -1
  57. package/Combobox/Combobox.types.js +4 -1
  58. package/Combobox/Combobox.types.js.map +1 -1
  59. package/Combobox/ComboboxOptionItem.d.ts +5 -3
  60. package/Combobox/ComboboxOptionItem.d.ts.map +1 -1
  61. package/Combobox/ComboboxOptionItem.js +79 -23
  62. package/Combobox/ComboboxOptionItem.js.map +1 -1
  63. package/Combobox/ComboboxRenderContent.d.ts +23 -0
  64. package/Combobox/ComboboxRenderContent.d.ts.map +1 -0
  65. package/Combobox/ComboboxRenderContent.js +117 -0
  66. package/Combobox/ComboboxRenderContent.js.map +1 -0
  67. package/Combobox/ComboboxRenderOptions.d.ts +4 -0
  68. package/Combobox/ComboboxRenderOptions.d.ts.map +1 -0
  69. package/Combobox/ComboboxRenderOptions.js +53 -0
  70. package/Combobox/ComboboxRenderOptions.js.map +1 -0
  71. package/Combobox/ComboboxRenderTrigger.d.ts +18 -0
  72. package/Combobox/ComboboxRenderTrigger.d.ts.map +1 -0
  73. package/Combobox/ComboboxRenderTrigger.js +120 -0
  74. package/Combobox/ComboboxRenderTrigger.js.map +1 -0
  75. package/Command/Command.d.ts +6 -1
  76. package/Command/Command.d.ts.map +1 -1
  77. package/Command/Command.js +61 -43
  78. package/Command/Command.js.map +1 -1
  79. package/ContextPopover/ContextDropdownMenu.d.ts +12 -0
  80. package/ContextPopover/ContextDropdownMenu.d.ts.map +1 -0
  81. package/ContextPopover/ContextDropdownMenu.js +41 -0
  82. package/ContextPopover/ContextDropdownMenu.js.map +1 -0
  83. package/ContextPopover/ContextPopover.d.ts +12 -0
  84. package/ContextPopover/ContextPopover.d.ts.map +1 -0
  85. package/ContextPopover/ContextPopover.js +34 -0
  86. package/ContextPopover/ContextPopover.js.map +1 -0
  87. package/ContextPopover/index.d.ts +4 -0
  88. package/ContextPopover/index.d.ts.map +1 -0
  89. package/ContextPopover/index.js +9 -0
  90. package/ContextPopover/index.js.map +1 -0
  91. package/ContextPopover/useContextPopoverHandler.d.ts +14 -0
  92. package/ContextPopover/useContextPopoverHandler.d.ts.map +1 -0
  93. package/ContextPopover/useContextPopoverHandler.js +21 -0
  94. package/ContextPopover/useContextPopoverHandler.js.map +1 -0
  95. package/DataTable/DataTable.js +16 -15
  96. package/DataTable/DataTable.js.map +1 -1
  97. package/Dialog/Dialog.d.ts +4 -1
  98. package/Dialog/Dialog.d.ts.map +1 -1
  99. package/Dialog/Dialog.js +68 -34
  100. package/Dialog/Dialog.js.map +1 -1
  101. package/Dialog/Dialog.stories.js +102 -0
  102. package/Dialog/Dialog.stories.js.map +1 -0
  103. package/Dialog/Dialog.types.d.ts +4 -0
  104. package/Dialog/Dialog.types.d.ts.map +1 -0
  105. package/Dialog/Dialog.types.js +2 -0
  106. package/Dialog/Dialog.types.js.map +1 -0
  107. package/Dialog/index.d.ts +1 -0
  108. package/Dialog/index.d.ts.map +1 -1
  109. package/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  110. package/DropdownMenu/DropdownMenu.js +33 -20
  111. package/DropdownMenu/DropdownMenu.js.map +1 -1
  112. package/Dropzone/Dropzone.d.ts.map +1 -1
  113. package/Dropzone/Dropzone.js +46 -28
  114. package/Dropzone/Dropzone.js.map +1 -1
  115. package/Dropzone/Dropzone.stories.js +100 -0
  116. package/Dropzone/Dropzone.stories.js.map +1 -0
  117. package/Dropzone/Dropzone.types.js +6 -6
  118. package/Dropzone/Dropzone.types.js.map +1 -1
  119. package/Form/Form.d.ts.map +1 -1
  120. package/Form/Form.js.map +1 -1
  121. package/Form/FormRenderControl.d.ts +1 -1
  122. package/Form/FormRenderControl.d.ts.map +1 -1
  123. package/Form/FormRenderControl.js +54 -14
  124. package/Form/FormRenderControl.js.map +1 -1
  125. package/Form/FormRenderControl.types.d.ts +5 -2
  126. package/Form/FormRenderControl.types.d.ts.map +1 -1
  127. package/FormCombobox/FormCombobox.d.ts +4 -2
  128. package/FormCombobox/FormCombobox.d.ts.map +1 -1
  129. package/FormCombobox/FormCombobox.js +30 -17
  130. package/FormCombobox/FormCombobox.js.map +1 -1
  131. package/FormCombobox/FormCombobox.types.d.ts +6 -2
  132. package/FormCombobox/FormCombobox.types.d.ts.map +1 -1
  133. package/FormDatePicker/FormDatePicker.d.ts.map +1 -1
  134. package/FormDatePicker/FormDatePicker.js +18 -16
  135. package/FormDatePicker/FormDatePicker.js.map +1 -1
  136. package/FormDropzone/FormDropzone.d.ts.map +1 -1
  137. package/FormDropzone/FormDropzone.js +11 -9
  138. package/FormDropzone/FormDropzone.js.map +1 -1
  139. package/FormInput/FormInput.d.ts.map +1 -1
  140. package/FormInput/FormInput.js +47 -27
  141. package/FormInput/FormInput.js.map +1 -1
  142. package/FormInput/FormInput.stories.js +61 -0
  143. package/FormInput/FormInput.stories.js.map +1 -0
  144. package/FormInput/FormInput.types.d.ts +1 -0
  145. package/FormInput/FormInput.types.d.ts.map +1 -1
  146. package/FormSelect/FormSelect.d.ts.map +1 -1
  147. package/FormSelect/FormSelect.js +21 -17
  148. package/FormSelect/FormSelect.js.map +1 -1
  149. package/FormTextarea/FormTextarea.d.ts.map +1 -1
  150. package/FormTextarea/FormTextarea.js +15 -12
  151. package/FormTextarea/FormTextarea.js.map +1 -1
  152. package/InfoBlock/InfoBlock.d.ts +7 -0
  153. package/InfoBlock/InfoBlock.d.ts.map +1 -0
  154. package/InfoBlock/InfoBlock.js +28 -0
  155. package/InfoBlock/InfoBlock.js.map +1 -0
  156. package/InfoBlock/InfoBlock.stories.js +50 -0
  157. package/InfoBlock/InfoBlock.stories.js.map +1 -0
  158. package/InfoBlock/InfoBlock.types.d.ts +9 -0
  159. package/InfoBlock/InfoBlock.types.d.ts.map +1 -0
  160. package/InfoBlock/InfoBlock.types.js +2 -0
  161. package/InfoBlock/InfoBlock.types.js.map +1 -0
  162. package/InfoBlock/index.d.ts +3 -0
  163. package/InfoBlock/index.d.ts.map +1 -0
  164. package/InfoBlock/index.js +5 -0
  165. package/InfoBlock/index.js.map +1 -0
  166. package/InfoBlock/infoBlockVariants.d.ts +6 -0
  167. package/InfoBlock/infoBlockVariants.d.ts.map +1 -0
  168. package/InfoBlock/infoBlockVariants.js +27 -0
  169. package/InfoBlock/infoBlockVariants.js.map +1 -0
  170. package/Input/Input.d.ts.map +1 -1
  171. package/Input/Input.js +65 -51
  172. package/Input/Input.js.map +1 -1
  173. package/Input/Input.types.d.ts +1 -0
  174. package/Input/Input.types.d.ts.map +1 -1
  175. package/LoadingMask/LoadingMask.d.ts +1 -2
  176. package/LoadingMask/LoadingMask.d.ts.map +1 -1
  177. package/LoadingMask/LoadingMask.js +8 -8
  178. package/LoadingMask/LoadingMask.js.map +1 -1
  179. package/LoadingMask/LoadingMask.types.d.ts +1 -0
  180. package/LoadingMask/LoadingMask.types.d.ts.map +1 -1
  181. package/Popover/Popover.d.ts.map +1 -1
  182. package/Popover/Popover.js +9 -5
  183. package/Popover/Popover.js.map +1 -1
  184. package/ScrollArea/ScrollArea.d.ts +5 -1
  185. package/ScrollArea/ScrollArea.d.ts.map +1 -1
  186. package/ScrollArea/ScrollArea.js +23 -17
  187. package/ScrollArea/ScrollArea.js.map +1 -1
  188. package/Search/Search.d.ts.map +1 -1
  189. package/Search/Search.js +40 -31
  190. package/Search/Search.js.map +1 -1
  191. package/Select/Select.d.ts.map +1 -1
  192. package/Select/Select.js +53 -48
  193. package/Select/Select.js.map +1 -1
  194. package/Select/Select.types.d.ts +4 -0
  195. package/Select/Select.types.d.ts.map +1 -1
  196. package/Select/SelectRoot.js +1 -1
  197. package/Select/SelectRoot.js.map +1 -1
  198. package/Switch/Switch.d.ts +1 -1
  199. package/Switch/Switch.d.ts.map +1 -1
  200. package/Switch/Switch.js +5 -7
  201. package/Switch/Switch.js.map +1 -1
  202. package/TablePagination/TablePagination.js +9 -8
  203. package/TablePagination/TablePagination.js.map +1 -1
  204. package/Textarea/Textarea.d.ts.map +1 -1
  205. package/Textarea/Textarea.js +50 -45
  206. package/Textarea/Textarea.js.map +1 -1
  207. package/Textarea/Textarea.types.d.ts +3 -1
  208. package/Textarea/Textarea.types.d.ts.map +1 -1
  209. package/Toast/Toast.d.ts +1 -1
  210. package/Toast/toastVariants.d.ts +1 -1
  211. package/Tooltip/Tooltip.d.ts.map +1 -1
  212. package/Tooltip/Tooltip.js +51 -32
  213. package/Tooltip/Tooltip.js.map +1 -1
  214. package/Tooltip/Tooltip.types.d.ts +10 -0
  215. package/Tooltip/Tooltip.types.d.ts.map +1 -1
  216. package/Tooltip/tooltipVariants.d.ts +4 -0
  217. package/Tooltip/tooltipVariants.d.ts.map +1 -0
  218. package/Tooltip/tooltipVariants.js +22 -0
  219. package/Tooltip/tooltipVariants.js.map +1 -0
  220. package/index.d.ts +2 -0
  221. package/index.d.ts.map +1 -1
  222. package/index.js +342 -332
  223. package/index.js.map +1 -1
  224. package/package.json +6 -5
  225. package/Combobox/ComboboxOptions.d.ts +0 -4
  226. package/Combobox/ComboboxOptions.d.ts.map +0 -1
  227. package/Combobox/ComboboxOptions.js +0 -65
  228. package/Combobox/ComboboxOptions.js.map +0 -1
@@ -1,16 +1,16 @@
1
1
  import { jsxs as t, jsx as l, Fragment as j } from "react/jsx-runtime";
2
- import { X as H } from "lucide-react";
3
- import { forwardRef as O, useState as g, useImperativeHandle as X } from "react";
4
- import { useDropzone as Y } from "react-dropzone";
2
+ import { FileDownIcon as H, X as O } from "lucide-react";
3
+ import { forwardRef as X, useState as g, useImperativeHandle as Y } from "react";
4
+ import { useDropzone as q } from "react-dropzone";
5
5
  import { cn as n } from "@oneplatformdev/utils";
6
- import { Card as q } from "../Card/Card.js";
7
- import { DEFAULT_FILE_TYPES as G } from "./Dropzone.types.js";
8
- import { FilePreview as J } from "./DropzoneFilePreview.js";
9
- import { DropzoneSinglePickPreview as K } from "./DropzoneSinglePickPreview.js";
10
- import { DefaultFileIcon as Q, isFile as v, extractName as R } from "./DropzoneUtils.js";
11
- const Z = O(
6
+ import { Card as G } from "../Card/Card.js";
7
+ import { DEFAULT_FILE_TYPES as J } from "./Dropzone.types.js";
8
+ import { FilePreview as K } from "./DropzoneFilePreview.js";
9
+ import { DropzoneSinglePickPreview as Q } from "./DropzoneSinglePickPreview.js";
10
+ import { isFile as v, extractName as R } from "./DropzoneUtils.js";
11
+ const Z = X(
12
12
  ({
13
- acceptTypes: w = G,
13
+ acceptTypes: w = J,
14
14
  maxSizeMB: N,
15
15
  maxFiles: x = 1,
16
16
  onErrors: E,
@@ -19,11 +19,11 @@ const Z = O(
19
19
  classNames: m,
20
20
  value: F = [],
21
21
  onChangeValue: h,
22
- className: z,
23
- labelDropzonePrompt: D = "Drop files here or click to select",
24
- labelDropzoneSubPrompt: I = "",
22
+ className: b,
23
+ labelDropzonePrompt: z = "Drop files here or click to select",
24
+ labelDropzoneSubPrompt: D = "",
25
25
  labelOrClickToSelect: $ = "Click to select files",
26
- labelSelectedFiles: b = "Selected Files",
26
+ labelSelectedFiles: I = "Selected Files",
27
27
  labelUploadErrors: S = "Upload Errors",
28
28
  labelFileTooLarge: C = "File is too large",
29
29
  labelInvalidFileType: W = "Invalid file type",
@@ -41,17 +41,17 @@ const Z = O(
41
41
  e.stopPropagation();
42
42
  const r = s.filter((c, f) => f !== o);
43
43
  d(r), h?.(r);
44
- }, { getRootProps: M, getInputProps: P, isDragActive: U } = Y({
44
+ }, { getRootProps: M, getInputProps: P, isDragActive: U } = q({
45
45
  onDrop: L,
46
46
  accept: w.reduce((e, o) => (e[o] = [], e), {}),
47
47
  maxSize: N * 1024 * 1024,
48
48
  maxFiles: i ? 1 : x,
49
49
  disabled: a
50
50
  });
51
- return X(_, () => ({
51
+ return Y(_, () => ({
52
52
  setItems: d
53
53
  }), []), /* @__PURE__ */ t(
54
- q,
54
+ G,
55
55
  {
56
56
  ...M(),
57
57
  ...T,
@@ -62,7 +62,7 @@ const Z = O(
62
62
  U && "bg-gray-100",
63
63
  i && "shadow-none!",
64
64
  i && s.length > 0 && "p-0! shadow-none!",
65
- z
65
+ b
66
66
  ),
67
67
  children: [
68
68
  /* @__PURE__ */ l("input", { ...P() }),
@@ -70,15 +70,33 @@ const Z = O(
70
70
  "div",
71
71
  {
72
72
  className: n(
73
- "flex flex-col items-center gap-1",
73
+ "flex flex-col items-center",
74
74
  m?.idleWrapper
75
75
  ),
76
76
  children: [
77
- /* @__PURE__ */ l(Q, {}),
78
- !a && /* @__PURE__ */ t(j, { children: [
79
- /* @__PURE__ */ l("span", { className: n("font-medium text-md text-foreground max-w-[200px]", k), children: D }),
80
- /* @__PURE__ */ l("span", { className: n("font-normal text-xs text-foreground max-w-[250px]", B), children: I })
81
- ] })
77
+ /* @__PURE__ */ l(H, { className: "mb-4" }),
78
+ /* @__PURE__ */ l("div", { className: "flex flex-col items-center gap-1", children: !a && /* @__PURE__ */ t(j, { children: [
79
+ /* @__PURE__ */ l(
80
+ "span",
81
+ {
82
+ className: n(
83
+ "font-medium text-base text-foreground max-w-[264px]",
84
+ k
85
+ ),
86
+ children: z
87
+ }
88
+ ),
89
+ /* @__PURE__ */ l(
90
+ "span",
91
+ {
92
+ className: n(
93
+ "font-normal text-sm text-foreground max-w-[264px]",
94
+ B
95
+ ),
96
+ children: D
97
+ }
98
+ )
99
+ ] }) })
82
100
  ]
83
101
  }
84
102
  ),
@@ -100,7 +118,7 @@ const Z = O(
100
118
  ] }, o)) })
101
119
  ] }),
102
120
  !!(i && s.length) && /* @__PURE__ */ l(
103
- K,
121
+ Q,
104
122
  {
105
123
  item: s[0],
106
124
  onRemoveClick: (e) => u(e, 0),
@@ -109,7 +127,7 @@ const Z = O(
109
127
  ),
110
128
  !i && s.length > 0 && /* @__PURE__ */ t("div", { className: n("w-full mt-2", m?.previewWrapper), children: [
111
129
  /* @__PURE__ */ t("pre", { className: "font-semibold text-gray-600", children: [
112
- b,
130
+ I,
113
131
  ":"
114
132
  ] }),
115
133
  /* @__PURE__ */ l("ul", { className: "mt-2 text-sm text-gray-500 flex flex-wrap gap-4 items-start justify-center", children: s.map((e, o) => {
@@ -120,13 +138,13 @@ const Z = O(
120
138
  className: "flex flex-col items-center gap-2 relative",
121
139
  children: [
122
140
  /* @__PURE__ */ t("div", { className: "relative", children: [
123
- /* @__PURE__ */ l(J, { item: e, styles: m }),
141
+ /* @__PURE__ */ l(K, { item: e, styles: m }),
124
142
  /* @__PURE__ */ l(
125
143
  "div",
126
144
  {
127
145
  className: "absolute top-0 right-0 cursor-pointer bg-gray-300 rounded-sm",
128
146
  onClick: (f) => u(f, o),
129
- children: /* @__PURE__ */ l(H, { size: 16, strokeWidth: 1, color: "black" })
147
+ children: /* @__PURE__ */ l(O, { size: 16, strokeWidth: 1, color: "black" })
130
148
  }
131
149
  )
132
150
  ] }),
@@ -1 +1 @@
1
- {"version":3,"file":"Dropzone.js","sources":["../../src/Dropzone/Dropzone.tsx"],"sourcesContent":["import { X } from 'lucide-react';\nimport { forwardRef, useImperativeHandle, useState } from 'react';\nimport { FileRejection, useDropzone } from 'react-dropzone';\n\nimport { cn } from '@oneplatformdev/utils';\n\nimport { Card } from '../Card/Card';\n\nimport {\n DEFAULT_FILE_TYPES,\n DropzoneControl,\n DropzoneProps,\n DropzoneValueItem\n} from './Dropzone.types';\nimport { FilePreview } from './DropzoneFilePreview';\nimport { DropzoneSinglePickPreview } from './DropzoneSinglePickPreview';\nimport { DefaultFileIcon, extractName, isFile } from './DropzoneUtils';\n\n/**\n * Dropzone component - A drag-and-drop file upload area with image previews, error handling, and localization.\n *\n * @component\n * @param {DropzoneProps} props - The props for the Dropzone component.\n * @param {string[]} [props.acceptTypes=DEFAULT_FILE_TYPES] - Allowed file MIME types.\n * @param {number} props.maxSizeMB - Maximum allowed file size in megabytes.\n * @param {number} [props.maxFiles=1] - Maximum number of files that can be uploaded.\n * @param {DropzoneTranslations} props.translations - Translations for text labels.\n * @param {(errors: FileRejection[]) => void} [props.onErrors] - Callback triggered when file errors occur.\n * @param {boolean} [props.hideErrors=false] - Whether to hide error messages.\n * @param {boolean} [props.disabled=false] - Whether the dropzone is disabled.\n * @param {DropzoneStyles} [props.classNames] - Custom classNames for different dropzone states.\n * @param {DropzoneValueItem[]} [props.value=[]] - Current selected files or URLs.\n * @param {(items: DropzoneValueItem[]) => void} [props.onChangeValue] - Callback triggered when file selection changes.\n * @param {string} [props.className] - Additional class names for styling.\n * @param {React.Ref<HTMLDivElement>} ref - Ref for the root dropzone container.\n * @returns {JSX.Element} The rendered Dropzone component.\n */\nexport const Dropzone = forwardRef<DropzoneControl, DropzoneProps>(\n (\n {\n acceptTypes = DEFAULT_FILE_TYPES,\n maxSizeMB,\n maxFiles = 1,\n onErrors,\n hideErrors = false,\n disabled = false,\n classNames,\n value = [],\n onChangeValue,\n className,\n labelDropzonePrompt = 'Drop files here or click to select',\n labelDropzoneSubPrompt = '',\n labelOrClickToSelect = 'Click to select files',\n labelSelectedFiles = 'Selected Files',\n labelUploadErrors = 'Upload Errors',\n labelFileTooLarge = 'File is too large',\n labelInvalidFileType = 'Invalid file type',\n singlePick = false,\n labelDropzoneClassname,\n labelDropzoneSubClassname,\n ...restProps\n },\n ref\n ) => {\n const [items, setItems] = useState<DropzoneValueItem[]>(value);\n const [fileErrors, setFileErrors] = useState<FileRejection[]>([]);\n\n const onDrop = (acceptedFiles: File[], fileRejections: FileRejection[]) => {\n setFileErrors(fileRejections);\n onErrors?.(fileRejections);\n\n const newItems = singlePick\n ? acceptedFiles.slice(0, 1)\n : [...items, ...acceptedFiles].slice(0, maxFiles);\n\n setItems(newItems);\n onChangeValue?.(newItems);\n };\n\n const removeItem = (\n event: React.MouseEvent<HTMLDivElement>,\n index: number\n ) => {\n if (disabled) return;\n event.stopPropagation();\n\n const newItems = items.filter((_, i) => i !== index);\n setItems(newItems);\n onChangeValue?.(newItems);\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: acceptTypes.reduce((acc, fileType) => {\n acc[fileType] = [];\n return acc;\n }, {} as Record<string, string[]>),\n maxSize: maxSizeMB * 1024 * 1024,\n maxFiles: singlePick ? 1 : maxFiles,\n disabled,\n });\n\n useImperativeHandle(ref, () => {\n return {\n setItems,\n };\n }, []);\n\n\n return (\n <Card\n {...getRootProps()}\n {...restProps}\n className={cn(\n `border-dashed p-2 text-center flex flex-col items-center justify-center cursor-pointer`,\n disabled && 'border-[#E4E4E7] pointer-events-none',\n fileErrors.length > 0 ? 'border-red-500' : 'border-[#E4E4E7]!',\n isDragActive && 'bg-gray-100',\n singlePick && 'shadow-none!',\n singlePick && items.length > 0 && 'p-0! shadow-none!',\n className\n )}\n >\n <input {...getInputProps()} />\n\n {items.length === 0 && fileErrors.length === 0 && (\n <div\n className={cn(\n 'flex flex-col items-center gap-1',\n classNames?.idleWrapper\n )}\n >\n <DefaultFileIcon />\n\n {!disabled && (\n <>\n <span className={cn(\"font-medium text-md text-foreground max-w-[200px]\", labelDropzoneClassname)}>\n {labelDropzonePrompt}\n </span>\n <span className={cn(\"font-normal text-xs text-foreground max-w-[250px]\", labelDropzoneSubClassname)}>\n {labelDropzoneSubPrompt}\n </span>\n </>\n )}\n </div>\n )}\n\n {fileErrors.length > 0 && (\n <div className={cn('w-full mt-4', classNames?.errorWrapper)}>\n <span className=\"font-semibold text-red-500\">\n {labelUploadErrors}:\n </span>\n <ul className=\"mt-2 text-sm text-red-500 list-disc list-inside\">\n {fileErrors.map((fileRejection, index) => (\n <li key={index}>\n {fileRejection.file.name} (\n {(fileRejection.file.size / (1024 * 1024)).toFixed(2)} MB)\n {!hideErrors && (\n <ul className=\"ml-4 list-disc list-inside\">\n {fileRejection.errors.map((error, errorIndex) => (\n <li key={errorIndex}>\n {error.code === 'file-too-large' && labelFileTooLarge}\n {error.code === 'file-invalid-type' &&\n labelInvalidFileType}\n {error.code !== 'file-too-large' &&\n error.code !== 'file-invalid-type' &&\n error.message}\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {Boolean(singlePick && items.length) && (\n <DropzoneSinglePickPreview\n item={items[0]}\n onRemoveClick={(e) => removeItem(e, 0)}\n disabled={disabled}\n />\n )}\n\n {!singlePick && items.length > 0 && (\n <div className={cn('w-full mt-2', classNames?.previewWrapper)}>\n <pre className=\"font-semibold text-gray-600\">\n {labelSelectedFiles}:\n </pre>\n <ul className=\"mt-2 text-sm text-gray-500 flex flex-wrap gap-4 items-start justify-center\">\n {items.map((item, index) => {\n const fileName = isFile(item) ? item.name : extractName(item);\n const fileSize = isFile(item)\n ? (item.size / (1024 * 1024)).toFixed(2) + ' MB'\n : '';\n\n return (\n <li\n key={index}\n className=\"flex flex-col items-center gap-2 relative\"\n >\n <div className=\"relative\">\n <FilePreview item={item} styles={classNames} />\n <div\n className=\"absolute top-0 right-0 cursor-pointer bg-gray-300 rounded-sm\"\n onClick={(event) => removeItem(event, index)}\n >\n <X size={16} strokeWidth={1} color=\"black\" />\n </div>\n </div>\n <span className=\"inline-flex flex-col items-center\">\n <span className=\"max-w-[80px] text-ellipsis overflow-hidden whitespace-nowrap\">\n {fileName}\n </span>\n {fileSize && <span>({fileSize})</span>}\n </span>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </Card>\n );\n }\n);\n\nDropzone.displayName = 'Dropzone';\n"],"names":["Dropzone","forwardRef","acceptTypes","DEFAULT_FILE_TYPES","maxSizeMB","maxFiles","onErrors","hideErrors","disabled","classNames","value","onChangeValue","className","labelDropzonePrompt","labelDropzoneSubPrompt","labelOrClickToSelect","labelSelectedFiles","labelUploadErrors","labelFileTooLarge","labelInvalidFileType","singlePick","labelDropzoneClassname","labelDropzoneSubClassname","restProps","ref","items","setItems","useState","fileErrors","setFileErrors","onDrop","acceptedFiles","fileRejections","newItems","removeItem","event","index","_","i","getRootProps","getInputProps","isDragActive","useDropzone","acc","fileType","useImperativeHandle","jsxs","Card","cn","jsx","DefaultFileIcon","Fragment","fileRejection","error","errorIndex","DropzoneSinglePickPreview","item","fileName","isFile","extractName","fileSize","FilePreview","X"],"mappings":";;;;;;;;;;AAqCO,MAAMA,IAAWC;AAAA,EACtB,CACE;AAAA,IACE,aAAAC,IAAcC;AAAA,IACd,WAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,UAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,UAAAC,IAAW;AAAA,IACX,YAAAC;AAAA,IACA,OAAAC,IAAQ,CAAA;AAAA,IACR,eAAAC;AAAA,IACA,WAAAC;AAAA,IACA,qBAAAC,IAAsB;AAAA,IACtB,wBAAAC,IAAyB;AAAA,IACzB,sBAAAC,IAAuB;AAAA,IACvB,oBAAAC,IAAqB;AAAA,IACrB,mBAAAC,IAAoB;AAAA,IACpB,mBAAAC,IAAoB;AAAA,IACpB,sBAAAC,IAAuB;AAAA,IACvB,YAAAC,IAAa;AAAA,IACb,wBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,CAACC,GAAOC,CAAQ,IAAIC,EAA8BjB,CAAK,GACvD,CAACkB,GAAYC,CAAa,IAAIF,EAA0B,CAAA,CAAE,GAE1DG,IAAS,CAACC,GAAuBC,MAAoC;AACzE,MAAAH,EAAcG,CAAc,GAC5B1B,IAAW0B,CAAc;AAEzB,YAAMC,IAAWb,IACbW,EAAc,MAAM,GAAG,CAAC,IACxB,CAAC,GAAGN,GAAO,GAAGM,CAAa,EAAE,MAAM,GAAG1B,CAAQ;AAElD,MAAAqB,EAASO,CAAQ,GACjBtB,IAAgBsB,CAAQ;AAAA,IAC1B,GAEMC,IAAa,CACjBC,GACAC,MACG;AACH,UAAI5B,EAAU;AACd,MAAA2B,EAAM,gBAAA;AAEN,YAAMF,IAAWR,EAAM,OAAO,CAACY,GAAGC,MAAMA,MAAMF,CAAK;AACnD,MAAAV,EAASO,CAAQ,GACjBtB,IAAgBsB,CAAQ;AAAA,IAC1B,GAEM,EAAE,cAAAM,GAAc,eAAAC,GAAe,cAAAC,EAAA,IAAiBC,EAAY;AAAA,MAChE,QAAAZ;AAAA,MACA,QAAQ5B,EAAY,OAAO,CAACyC,GAAKC,OAC/BD,EAAIC,CAAQ,IAAI,CAAA,GACTD,IACN,CAAA,CAA8B;AAAA,MACjC,SAASvC,IAAY,OAAO;AAAA,MAC5B,UAAUgB,IAAa,IAAIf;AAAA,MAC3B,UAAAG;AAAA,IAAA,CACD;AAED,WAAAqC,EAAoBrB,GAAK,OAChB;AAAA,MACL,UAAAE;AAAA,IAAA,IAED,CAAA,CAAE,GAIH,gBAAAoB;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,GAAGR,EAAA;AAAA,QACH,GAAGhB;AAAA,QACJ,WAAWyB;AAAA,UACT;AAAA,UACAxC,KAAY;AAAA,UACZoB,EAAW,SAAS,IAAI,mBAAmB;AAAA,UAC3Ca,KAAgB;AAAA,UAChBrB,KAAc;AAAA,UACdA,KAAcK,EAAM,SAAS,KAAK;AAAA,UAClCb;AAAA,QAAA;AAAA,QAGF,UAAA;AAAA,UAAA,gBAAAqC,EAAC,SAAA,EAAO,GAAGT,EAAA,EAAc,CAAG;AAAA,UAE3Bf,EAAM,WAAW,KAAKG,EAAW,WAAW,KAC3C,gBAAAkB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWE;AAAA,gBACT;AAAA,gBACAvC,GAAY;AAAA,cAAA;AAAA,cAGd,UAAA;AAAA,gBAAA,gBAAAwC,EAACC,GAAA,EAAgB;AAAA,gBAEhB,CAAC1C,KACA,gBAAAsC,EAAAK,GAAA,EACE,UAAA;AAAA,kBAAA,gBAAAF,EAAC,UAAK,WAAWD,EAAG,qDAAqD3B,CAAsB,GAC5F,UAAAR,GACH;AAAA,oCACC,QAAA,EAAK,WAAWmC,EAAG,qDAAqD1B,CAAyB,GAC/F,UAAAR,EAAA,CACH;AAAA,gBAAA,EAAA,CACF;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAKLc,EAAW,SAAS,KACnB,gBAAAkB,EAAC,OAAA,EAAI,WAAWE,EAAG,eAAevC,GAAY,YAAY,GACxD,UAAA;AAAA,YAAA,gBAAAqC,EAAC,QAAA,EAAK,WAAU,8BACb,UAAA;AAAA,cAAA7B;AAAA,cAAkB;AAAA,YAAA,GACrB;AAAA,YACA,gBAAAgC,EAAC,MAAA,EAAG,WAAU,mDACX,UAAArB,EAAW,IAAI,CAACwB,GAAehB,MAC9B,gBAAAU,EAAC,MAAA,EACE,UAAA;AAAA,cAAAM,EAAc,KAAK;AAAA,cAAK;AAAA,eACvBA,EAAc,KAAK,QAAQ,OAAO,OAAO,QAAQ,CAAC;AAAA,cAAE;AAAA,cACrD,CAAC7C,KACA,gBAAA0C,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAG,EAAc,OAAO,IAAI,CAACC,GAAOC,wBAC/B,MAAA,EACE,UAAA;AAAA,gBAAAD,EAAM,SAAS,oBAAoBnC;AAAA,gBACnCmC,EAAM,SAAS,uBACdlC;AAAA,gBACDkC,EAAM,SAAS,oBACdA,EAAM,SAAS,uBACfA,EAAM;AAAA,cAAA,EAAA,GANDC,CAOT,CACD,EAAA,CACH;AAAA,YAAA,EAAA,GAfKlB,CAiBT,CACD,EAAA,CACH;AAAA,UAAA,GACF;AAAA,UAGD,GAAQhB,KAAcK,EAAM,WAC3B,gBAAAwB;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,MAAM9B,EAAM,CAAC;AAAA,cACb,eAAe,CAAC,MAAMS,EAAW,GAAG,CAAC;AAAA,cACrC,UAAA1B;AAAA,YAAA;AAAA,UAAA;AAAA,UAIH,CAACY,KAAcK,EAAM,SAAS,KAC7B,gBAAAqB,EAAC,OAAA,EAAI,WAAWE,EAAG,eAAevC,GAAY,cAAc,GAC1D,UAAA;AAAA,YAAA,gBAAAqC,EAAC,OAAA,EAAI,WAAU,+BACZ,UAAA;AAAA,cAAA9B;AAAA,cAAmB;AAAA,YAAA,GACtB;AAAA,YACA,gBAAAiC,EAAC,QAAG,WAAU,8EACX,YAAM,IAAI,CAACO,GAAMpB,MAAU;AAC1B,oBAAMqB,IAAWC,EAAOF,CAAI,IAAIA,EAAK,OAAOG,EAAYH,CAAI,GACtDI,IAAWF,EAAOF,CAAI,KACvBA,EAAK,QAAQ,OAAO,OAAO,QAAQ,CAAC,IAAI,QACzC;AAEJ,qBACE,gBAAAV;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,WAAU;AAAA,kBAEV,UAAA;AAAA,oBAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,sBAAA,gBAAAG,EAACY,GAAA,EAAY,MAAAL,GAAY,QAAQ/C,EAAA,CAAY;AAAA,sBAC7C,gBAAAwC;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAU;AAAA,0BACV,SAAS,CAACd,MAAUD,EAAWC,GAAOC,CAAK;AAAA,0BAE3C,4BAAC0B,GAAA,EAAE,MAAM,IAAI,aAAa,GAAG,OAAM,QAAA,CAAQ;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAC7C,GACF;AAAA,oBACA,gBAAAhB,EAAC,QAAA,EAAK,WAAU,qCACd,UAAA;AAAA,sBAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,gEACb,UAAAQ,GACH;AAAA,sBACCG,uBAAa,QAAA,EAAK,UAAA;AAAA,wBAAA;AAAA,wBAAEA;AAAA,wBAAS;AAAA,sBAAA,EAAA,CAAC;AAAA,oBAAA,EAAA,CACjC;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAjBKxB;AAAA,cAAA;AAAA,YAoBX,CAAC,EAAA,CACH;AAAA,UAAA,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEApC,EAAS,cAAc;"}
1
+ {"version":3,"file":"Dropzone.js","sources":["../../src/Dropzone/Dropzone.tsx"],"sourcesContent":["import { FileDownIcon, X } from 'lucide-react';\nimport { forwardRef, useImperativeHandle, useState } from 'react';\nimport { FileRejection, useDropzone } from 'react-dropzone';\n\nimport { cn } from '@oneplatformdev/utils';\n\nimport { Card } from '../Card/Card';\n\nimport {\n DEFAULT_FILE_TYPES,\n DropzoneControl,\n DropzoneProps,\n DropzoneValueItem\n} from './Dropzone.types';\nimport { FilePreview } from './DropzoneFilePreview';\nimport { DropzoneSinglePickPreview } from './DropzoneSinglePickPreview';\nimport { DefaultFileIcon, extractName, isFile } from './DropzoneUtils';\n\n/**\n * Dropzone component - A drag-and-drop file upload area with image previews, error handling, and localization.\n *\n * @component\n * @param {DropzoneProps} props - The props for the Dropzone component.\n * @param {string[]} [props.acceptTypes=DEFAULT_FILE_TYPES] - Allowed file MIME types.\n * @param {number} props.maxSizeMB - Maximum allowed file size in megabytes.\n * @param {number} [props.maxFiles=1] - Maximum number of files that can be uploaded.\n * @param {DropzoneTranslations} props.translations - Translations for text labels.\n * @param {(errors: FileRejection[]) => void} [props.onErrors] - Callback triggered when file errors occur.\n * @param {boolean} [props.hideErrors=false] - Whether to hide error messages.\n * @param {boolean} [props.disabled=false] - Whether the dropzone is disabled.\n * @param {DropzoneStyles} [props.classNames] - Custom classNames for different dropzone states.\n * @param {DropzoneValueItem[]} [props.value=[]] - Current selected files or URLs.\n * @param {(items: DropzoneValueItem[]) => void} [props.onChangeValue] - Callback triggered when file selection changes.\n * @param {string} [props.className] - Additional class names for styling.\n * @param {React.Ref<HTMLDivElement>} ref - Ref for the root dropzone container.\n * @returns {JSX.Element} The rendered Dropzone component.\n */\nexport const Dropzone = forwardRef<DropzoneControl, DropzoneProps>(\n (\n {\n acceptTypes = DEFAULT_FILE_TYPES,\n maxSizeMB,\n maxFiles = 1,\n onErrors,\n hideErrors = false,\n disabled = false,\n classNames,\n value = [],\n onChangeValue,\n className,\n labelDropzonePrompt = 'Drop files here or click to select',\n labelDropzoneSubPrompt = '',\n labelOrClickToSelect = 'Click to select files',\n labelSelectedFiles = 'Selected Files',\n labelUploadErrors = 'Upload Errors',\n labelFileTooLarge = 'File is too large',\n labelInvalidFileType = 'Invalid file type',\n singlePick = false,\n labelDropzoneClassname,\n labelDropzoneSubClassname,\n ...restProps\n },\n ref\n ) => {\n const [items, setItems] = useState<DropzoneValueItem[]>(value);\n const [fileErrors, setFileErrors] = useState<FileRejection[]>([]);\n\n const onDrop = (acceptedFiles: File[], fileRejections: FileRejection[]) => {\n setFileErrors(fileRejections);\n onErrors?.(fileRejections);\n\n const newItems = singlePick\n ? acceptedFiles.slice(0, 1)\n : [...items, ...acceptedFiles].slice(0, maxFiles);\n\n setItems(newItems);\n onChangeValue?.(newItems);\n };\n\n const removeItem = (\n event: React.MouseEvent<HTMLDivElement>,\n index: number\n ) => {\n if (disabled) return;\n event.stopPropagation();\n\n const newItems = items.filter((_, i) => i !== index);\n setItems(newItems);\n onChangeValue?.(newItems);\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n accept: acceptTypes.reduce((acc, fileType) => {\n acc[fileType] = [];\n return acc;\n }, {} as Record<string, string[]>),\n maxSize: maxSizeMB * 1024 * 1024,\n maxFiles: singlePick ? 1 : maxFiles,\n disabled,\n });\n\n useImperativeHandle(ref, () => {\n return {\n setItems,\n };\n }, []);\n\n\n return (\n <Card\n {...getRootProps()}\n {...restProps}\n className={cn(\n `border-dashed p-2 text-center flex flex-col items-center justify-center cursor-pointer`,\n disabled && 'border-[#E4E4E7] pointer-events-none',\n fileErrors.length > 0 ? 'border-red-500' : 'border-[#E4E4E7]!',\n isDragActive && 'bg-gray-100',\n singlePick && 'shadow-none!',\n singlePick && items.length > 0 && 'p-0! shadow-none!',\n className\n )}\n >\n <input {...getInputProps()} />\n\n {items.length === 0 && fileErrors.length === 0 && (\n <div\n className={cn(\n 'flex flex-col items-center',\n classNames?.idleWrapper\n )}\n >\n <FileDownIcon className=\"mb-4\" />\n\n <div className=\"flex flex-col items-center gap-1\">\n {!disabled && (\n <>\n <span\n className={cn(\n \"font-medium text-base text-foreground max-w-[264px]\",\n labelDropzoneClassname\n )}\n >\n {labelDropzonePrompt}\n </span>\n\n <span\n className={cn(\n \"font-normal text-sm text-foreground max-w-[264px]\",\n labelDropzoneSubClassname\n )}\n >\n {labelDropzoneSubPrompt}\n </span>\n </>\n )}\n </div>\n </div>\n )}\n\n {fileErrors.length > 0 && (\n <div className={cn('w-full mt-4', classNames?.errorWrapper)}>\n <span className=\"font-semibold text-red-500\">\n {labelUploadErrors}:\n </span>\n <ul className=\"mt-2 text-sm text-red-500 list-disc list-inside\">\n {fileErrors.map((fileRejection, index) => (\n <li key={index}>\n {fileRejection.file.name} (\n {(fileRejection.file.size / (1024 * 1024)).toFixed(2)} MB)\n {!hideErrors && (\n <ul className=\"ml-4 list-disc list-inside\">\n {fileRejection.errors.map((error, errorIndex) => (\n <li key={errorIndex}>\n {error.code === 'file-too-large' && labelFileTooLarge}\n {error.code === 'file-invalid-type' &&\n labelInvalidFileType}\n {error.code !== 'file-too-large' &&\n error.code !== 'file-invalid-type' &&\n error.message}\n </li>\n ))}\n </ul>\n )}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {Boolean(singlePick && items.length) && (\n <DropzoneSinglePickPreview\n item={items[0]}\n onRemoveClick={(e) => removeItem(e, 0)}\n disabled={disabled}\n />\n )}\n\n {!singlePick && items.length > 0 && (\n <div className={cn('w-full mt-2', classNames?.previewWrapper)}>\n <pre className=\"font-semibold text-gray-600\">\n {labelSelectedFiles}:\n </pre>\n <ul className=\"mt-2 text-sm text-gray-500 flex flex-wrap gap-4 items-start justify-center\">\n {items.map((item, index) => {\n const fileName = isFile(item) ? item.name : extractName(item);\n const fileSize = isFile(item)\n ? (item.size / (1024 * 1024)).toFixed(2) + ' MB'\n : '';\n\n return (\n <li\n key={index}\n className=\"flex flex-col items-center gap-2 relative\"\n >\n <div className=\"relative\">\n <FilePreview item={item} styles={classNames} />\n <div\n className=\"absolute top-0 right-0 cursor-pointer bg-gray-300 rounded-sm\"\n onClick={(event) => removeItem(event, index)}\n >\n <X size={16} strokeWidth={1} color=\"black\" />\n </div>\n </div>\n <span className=\"inline-flex flex-col items-center\">\n <span className=\"max-w-[80px] text-ellipsis overflow-hidden whitespace-nowrap\">\n {fileName}\n </span>\n {fileSize && <span>({fileSize})</span>}\n </span>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </Card>\n );\n }\n);\n\nDropzone.displayName = 'Dropzone';\n"],"names":["Dropzone","forwardRef","acceptTypes","DEFAULT_FILE_TYPES","maxSizeMB","maxFiles","onErrors","hideErrors","disabled","classNames","value","onChangeValue","className","labelDropzonePrompt","labelDropzoneSubPrompt","labelOrClickToSelect","labelSelectedFiles","labelUploadErrors","labelFileTooLarge","labelInvalidFileType","singlePick","labelDropzoneClassname","labelDropzoneSubClassname","restProps","ref","items","setItems","useState","fileErrors","setFileErrors","onDrop","acceptedFiles","fileRejections","newItems","removeItem","event","index","_","i","getRootProps","getInputProps","isDragActive","useDropzone","acc","fileType","useImperativeHandle","jsxs","Card","cn","jsx","FileDownIcon","Fragment","fileRejection","error","errorIndex","DropzoneSinglePickPreview","item","fileName","isFile","extractName","fileSize","FilePreview","X"],"mappings":";;;;;;;;;;AAqCO,MAAMA,IAAWC;AAAA,EACtB,CACE;AAAA,IACE,aAAAC,IAAcC;AAAA,IACd,WAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,UAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,UAAAC,IAAW;AAAA,IACX,YAAAC;AAAA,IACA,OAAAC,IAAQ,CAAA;AAAA,IACR,eAAAC;AAAA,IACA,WAAAC;AAAA,IACA,qBAAAC,IAAsB;AAAA,IACtB,wBAAAC,IAAyB;AAAA,IACzB,sBAAAC,IAAuB;AAAA,IACvB,oBAAAC,IAAqB;AAAA,IACrB,mBAAAC,IAAoB;AAAA,IACpB,mBAAAC,IAAoB;AAAA,IACpB,sBAAAC,IAAuB;AAAA,IACvB,YAAAC,IAAa;AAAA,IACb,wBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,CAACC,GAAOC,CAAQ,IAAIC,EAA8BjB,CAAK,GACvD,CAACkB,GAAYC,CAAa,IAAIF,EAA0B,CAAA,CAAE,GAE1DG,IAAS,CAACC,GAAuBC,MAAoC;AACzE,MAAAH,EAAcG,CAAc,GAC5B1B,IAAW0B,CAAc;AAEzB,YAAMC,IAAWb,IACbW,EAAc,MAAM,GAAG,CAAC,IACxB,CAAC,GAAGN,GAAO,GAAGM,CAAa,EAAE,MAAM,GAAG1B,CAAQ;AAElD,MAAAqB,EAASO,CAAQ,GACjBtB,IAAgBsB,CAAQ;AAAA,IAC1B,GAEMC,IAAa,CACjBC,GACAC,MACG;AACH,UAAI5B,EAAU;AACd,MAAA2B,EAAM,gBAAA;AAEN,YAAMF,IAAWR,EAAM,OAAO,CAACY,GAAGC,MAAMA,MAAMF,CAAK;AACnD,MAAAV,EAASO,CAAQ,GACjBtB,IAAgBsB,CAAQ;AAAA,IAC1B,GAEM,EAAE,cAAAM,GAAc,eAAAC,GAAe,cAAAC,EAAA,IAAiBC,EAAY;AAAA,MAChE,QAAAZ;AAAA,MACA,QAAQ5B,EAAY,OAAO,CAACyC,GAAKC,OAC/BD,EAAIC,CAAQ,IAAI,CAAA,GACTD,IACN,CAAA,CAA8B;AAAA,MACjC,SAASvC,IAAY,OAAO;AAAA,MAC5B,UAAUgB,IAAa,IAAIf;AAAA,MAC3B,UAAAG;AAAA,IAAA,CACD;AAED,WAAAqC,EAAoBrB,GAAK,OAChB;AAAA,MACL,UAAAE;AAAA,IAAA,IAED,CAAA,CAAE,GAIH,gBAAAoB;AAAA,MAACC;AAAA,MAAA;AAAA,QACE,GAAGR,EAAA;AAAA,QACH,GAAGhB;AAAA,QACJ,WAAWyB;AAAA,UACT;AAAA,UACAxC,KAAY;AAAA,UACZoB,EAAW,SAAS,IAAI,mBAAmB;AAAA,UAC3Ca,KAAgB;AAAA,UAChBrB,KAAc;AAAA,UACdA,KAAcK,EAAM,SAAS,KAAK;AAAA,UAClCb;AAAA,QAAA;AAAA,QAGF,UAAA;AAAA,UAAA,gBAAAqC,EAAC,SAAA,EAAO,GAAGT,EAAA,EAAc,CAAG;AAAA,UAE3Bf,EAAM,WAAW,KAAKG,EAAW,WAAW,KAC3C,gBAAAkB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWE;AAAA,gBACT;AAAA,gBACAvC,GAAY;AAAA,cAAA;AAAA,cAGd,UAAA;AAAA,gBAAA,gBAAAwC,EAACC,GAAA,EAAa,WAAU,OAAA,CAAO;AAAA,kCAE9B,OAAA,EAAI,WAAU,oCACZ,UAAA,CAAC1C,KACA,gBAAAsC,EAAAK,GAAA,EACE,UAAA;AAAA,kBAAA,gBAAAF;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAWD;AAAA,wBACT;AAAA,wBACA3B;AAAA,sBAAA;AAAA,sBAGD,UAAAR;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAGH,gBAAAoC;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAWD;AAAA,wBACT;AAAA,wBACA1B;AAAA,sBAAA;AAAA,sBAGD,UAAAR;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACH,EAAA,CACF,EAAA,CAEJ;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAIHc,EAAW,SAAS,KACnB,gBAAAkB,EAAC,OAAA,EAAI,WAAWE,EAAG,eAAevC,GAAY,YAAY,GACxD,UAAA;AAAA,YAAA,gBAAAqC,EAAC,QAAA,EAAK,WAAU,8BACb,UAAA;AAAA,cAAA7B;AAAA,cAAkB;AAAA,YAAA,GACrB;AAAA,YACA,gBAAAgC,EAAC,MAAA,EAAG,WAAU,mDACX,UAAArB,EAAW,IAAI,CAACwB,GAAehB,MAC9B,gBAAAU,EAAC,MAAA,EACE,UAAA;AAAA,cAAAM,EAAc,KAAK;AAAA,cAAK;AAAA,eACvBA,EAAc,KAAK,QAAQ,OAAO,OAAO,QAAQ,CAAC;AAAA,cAAE;AAAA,cACrD,CAAC7C,KACA,gBAAA0C,EAAC,MAAA,EAAG,WAAU,8BACX,UAAAG,EAAc,OAAO,IAAI,CAACC,GAAOC,wBAC/B,MAAA,EACE,UAAA;AAAA,gBAAAD,EAAM,SAAS,oBAAoBnC;AAAA,gBACnCmC,EAAM,SAAS,uBACdlC;AAAA,gBACDkC,EAAM,SAAS,oBACdA,EAAM,SAAS,uBACfA,EAAM;AAAA,cAAA,EAAA,GANDC,CAOT,CACD,EAAA,CACH;AAAA,YAAA,EAAA,GAfKlB,CAiBT,CACD,EAAA,CACH;AAAA,UAAA,GACF;AAAA,UAGD,GAAQhB,KAAcK,EAAM,WAC3B,gBAAAwB;AAAA,YAACM;AAAA,YAAA;AAAA,cACC,MAAM9B,EAAM,CAAC;AAAA,cACb,eAAe,CAAC,MAAMS,EAAW,GAAG,CAAC;AAAA,cACrC,UAAA1B;AAAA,YAAA;AAAA,UAAA;AAAA,UAIH,CAACY,KAAcK,EAAM,SAAS,KAC7B,gBAAAqB,EAAC,OAAA,EAAI,WAAWE,EAAG,eAAevC,GAAY,cAAc,GAC1D,UAAA;AAAA,YAAA,gBAAAqC,EAAC,OAAA,EAAI,WAAU,+BACZ,UAAA;AAAA,cAAA9B;AAAA,cAAmB;AAAA,YAAA,GACtB;AAAA,YACA,gBAAAiC,EAAC,QAAG,WAAU,8EACX,YAAM,IAAI,CAACO,GAAMpB,MAAU;AAC1B,oBAAMqB,IAAWC,EAAOF,CAAI,IAAIA,EAAK,OAAOG,EAAYH,CAAI,GACtDI,IAAWF,EAAOF,CAAI,KACvBA,EAAK,QAAQ,OAAO,OAAO,QAAQ,CAAC,IAAI,QACzC;AAEJ,qBACE,gBAAAV;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,WAAU;AAAA,kBAEV,UAAA;AAAA,oBAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,sBAAA,gBAAAG,EAACY,GAAA,EAAY,MAAAL,GAAY,QAAQ/C,EAAA,CAAY;AAAA,sBAC7C,gBAAAwC;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,WAAU;AAAA,0BACV,SAAS,CAACd,MAAUD,EAAWC,GAAOC,CAAK;AAAA,0BAE3C,4BAAC0B,GAAA,EAAE,MAAM,IAAI,aAAa,GAAG,OAAM,QAAA,CAAQ;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBAC7C,GACF;AAAA,oBACA,gBAAAhB,EAAC,QAAA,EAAK,WAAU,qCACd,UAAA;AAAA,sBAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,gEACb,UAAAQ,GACH;AAAA,sBACCG,uBAAa,QAAA,EAAK,UAAA;AAAA,wBAAA;AAAA,wBAAEA;AAAA,wBAAS;AAAA,sBAAA,EAAA,CAAC;AAAA,oBAAA,EAAA,CACjC;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAjBKxB;AAAA,cAAA;AAAA,YAoBX,CAAC,EAAA,CACH;AAAA,UAAA,EAAA,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;AAEApC,EAAS,cAAc;"}
@@ -0,0 +1,100 @@
1
+ import { jsx as a, jsxs as t } from "react/jsx-runtime";
2
+ import { useState as r } from "react";
3
+ import { Dropzone as o } from "./Dropzone.js";
4
+ function l({ initialValue: e = [], ...i }) {
5
+ const [s, n] = r(e);
6
+ return /* @__PURE__ */ t("div", { className: "max-w-md space-y-3 h-58", children: [
7
+ /* @__PURE__ */ a(o, { ...i, value: s }),
8
+ /* @__PURE__ */ t("div", { className: "text-xs text-muted-foreground", children: [
9
+ "value:",
10
+ /* @__PURE__ */ a("pre", { className: "mt-1 text-[11px] bg-muted p-2 rounded", children: JSON.stringify(s, null, 2) })
11
+ ] })
12
+ ] });
13
+ }
14
+ const m = {
15
+ title: "Dropzone",
16
+ component: o,
17
+ parameters: {
18
+ layout: "centered"
19
+ },
20
+ args: {
21
+ labelDropzonePrompt: "Завантажте або перетягніть",
22
+ labelSelectedFiles: "Selected files",
23
+ labelFileTooLarge: "File is too large",
24
+ labelDropzoneSubPrompt: "Підтримуються файли до 5МБ у форматі .jpg .jpeg .png .webp .heic ",
25
+ maxFiles: 1,
26
+ maxSizeMB: 10,
27
+ acceptTypes: ["image/jpeg", "image/png", "image/webp"],
28
+ singlePick: !0,
29
+ className: "w-full p-0 rounded-[8px] bg-[#F5F5F5] h-[180px] max-h-[180px]"
30
+ },
31
+ argTypes: {
32
+ onChangeValue: { control: !1 },
33
+ value: { control: !1 }
34
+ },
35
+ decorators: [
36
+ (e) => /* @__PURE__ */ a("div", { className: "p-6 w-[420px]", children: /* @__PURE__ */ a(e, {}) })
37
+ ]
38
+ }, u = {
39
+ render: (e) => /* @__PURE__ */ a(l, { ...e })
40
+ }, g = {
41
+ render: (e) => /* @__PURE__ */ a(
42
+ l,
43
+ {
44
+ ...e,
45
+ initialValue: [
46
+ "https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d?w=400"
47
+ ]
48
+ }
49
+ )
50
+ }, h = {
51
+ args: {
52
+ maxFiles: 5,
53
+ singlePick: !1
54
+ },
55
+ render: (e) => /* @__PURE__ */ a(l, { ...e })
56
+ }, x = {
57
+ args: {
58
+ disabled: !0
59
+ },
60
+ render: (e) => /* @__PURE__ */ a(
61
+ l,
62
+ {
63
+ ...e,
64
+ initialValue: [
65
+ "https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d?w=400"
66
+ ]
67
+ }
68
+ )
69
+ }, b = {
70
+ args: {
71
+ maxSizeMB: 1,
72
+ labelFileTooLarge: "Max 1MB allowed"
73
+ },
74
+ render: (e) => /* @__PURE__ */ a(l, { ...e })
75
+ }, f = {
76
+ args: {
77
+ maxFiles: 10,
78
+ singlePick: !1
79
+ },
80
+ render: (e) => /* @__PURE__ */ a(
81
+ l,
82
+ {
83
+ ...e,
84
+ initialValue: [
85
+ "https://images.unsplash.com/photo-1492724441997-5dc865305da7?w=400",
86
+ "https://images.unsplash.com/photo-1495567720989-cebdbdd97913?w=400"
87
+ ]
88
+ }
89
+ )
90
+ };
91
+ export {
92
+ u as Default,
93
+ x as Disabled,
94
+ f as GalleryMode,
95
+ h as MultipleFiles,
96
+ b as SmallFileLimit,
97
+ g as WithInitialValue,
98
+ m as default
99
+ };
100
+ //# sourceMappingURL=Dropzone.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropzone.stories.js","sources":["../../src/Dropzone/Dropzone.stories.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport type { Meta, StoryObj } from '@storybook/react';\n\nimport { Dropzone } from './Dropzone';\n\ntype ControlledProps = React.ComponentProps<typeof Dropzone> & {\n initialValue?: string[];\n};\n\nfunction ControlledDropzone({ initialValue = [], ...args }: ControlledProps) {\n const [value, setValue] = useState<string[]>(initialValue);\n\n return (\n <div className=\"max-w-md space-y-3 h-58\">\n <Dropzone {...args} value={value} />\n\n <div className=\"text-xs text-muted-foreground\">\n value:\n <pre className=\"mt-1 text-[11px] bg-muted p-2 rounded\">\n {JSON.stringify(value, null, 2)}\n </pre>\n </div>\n </div>\n );\n}\n\nconst meta = {\n title: 'Dropzone',\n component: Dropzone,\n parameters: {\n layout: 'centered',\n },\n args: {\n labelDropzonePrompt: 'Завантажте або перетягніть',\n labelSelectedFiles: 'Selected files',\n labelFileTooLarge: 'File is too large',\n labelDropzoneSubPrompt: \"Підтримуються файли до 5МБ у форматі .jpg .jpeg .png .webp .heic \",\n maxFiles: 1,\n maxSizeMB: 10,\n acceptTypes: [\"image/jpeg\", \"image/png\", \"image/webp\"],\n singlePick: true,\n className: 'w-full p-0 rounded-[8px] bg-[#F5F5F5] h-[180px] max-h-[180px]'\n },\n argTypes: {\n onChangeValue: { control: false },\n value: { control: false },\n },\n decorators: [\n (Story) => (\n <div className=\"p-6 w-[420px]\">\n <Story />\n </div>\n ),\n ],\n} satisfies Meta<typeof Dropzone>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\n//\n// 1️⃣ Default single image\n//\nexport const Default: Story = {\n render: (args) => <ControlledDropzone {...args} />,\n};\n\n//\n// 2️⃣ With initial image\n//\nexport const WithInitialValue: Story = {\n render: (args) => (\n <ControlledDropzone\n {...args}\n initialValue={[\n 'https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d?w=400',\n ]}\n />\n ),\n};\n\n//\n// 3️⃣ Multiple files\n//\nexport const MultipleFiles: Story = {\n args: {\n maxFiles: 5,\n singlePick: false,\n },\n render: (args) => <ControlledDropzone {...args} />,\n};\n\n//\n// 4️⃣ Disabled\n//\nexport const Disabled: Story = {\n args: {\n disabled: true,\n },\n render: (args) => (\n <ControlledDropzone\n {...args}\n initialValue={[\n 'https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d?w=400',\n ]}\n />\n ),\n};\n\n//\n// 5️⃣ Big size limit example\n//\nexport const SmallFileLimit: Story = {\n args: {\n maxSizeMB: 1,\n labelFileTooLarge: 'Max 1MB allowed',\n },\n render: (args) => <ControlledDropzone {...args} />,\n};\n\n//\n// 6️⃣ Without singlePick (gallery mode)\n//\n//\nexport const GalleryMode: Story = {\n args: {\n maxFiles: 10,\n singlePick: false,\n },\n render: (args) => (\n <ControlledDropzone\n {...args}\n initialValue={[\n 'https://images.unsplash.com/photo-1492724441997-5dc865305da7?w=400',\n 'https://images.unsplash.com/photo-1495567720989-cebdbdd97913?w=400',\n ]}\n />\n ),\n};"],"names":["ControlledDropzone","initialValue","args","value","setValue","useState","jsxs","jsx","Dropzone","meta","Story","Default","WithInitialValue","MultipleFiles","Disabled","SmallFileLimit","GalleryMode"],"mappings":";;;AASA,SAASA,EAAmB,EAAE,cAAAC,IAAe,IAAI,GAAGC,KAAyB;AAC3E,QAAM,CAACC,GAAOC,CAAQ,IAAIC,EAAmBJ,CAAY;AAEzD,SACE,gBAAAK,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAU,GAAGN,GAAM,OAAAC,EAAA,CAAe;AAAA,IAEnC,gBAAAG,EAAC,OAAA,EAAI,WAAU,iCAAgC,UAAA;AAAA,MAAA;AAAA,MAE7C,gBAAAC,EAAC,SAAI,WAAU,yCACZ,eAAK,UAAUJ,GAAO,MAAM,CAAC,EAAA,CAChC;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AAEA,MAAMM,IAAO;AAAA,EACX,OAAO;AAAA,EACP,WAAWD;AAAA,EACX,YAAY;AAAA,IACV,QAAQ;AAAA,EAAA;AAAA,EAEV,MAAM;AAAA,IACJ,qBAAqB;AAAA,IACrB,oBAAoB;AAAA,IACpB,mBAAmB;AAAA,IACnB,wBAAyB;AAAA,IACzB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,aAAa,CAAC,cAAc,aAAa,YAAY;AAAA,IACrD,YAAY;AAAA,IACZ,WAAW;AAAA,EAAA;AAAA,EAEb,UAAU;AAAA,IACR,eAAe,EAAE,SAAS,GAAA;AAAA,IAC1B,OAAO,EAAE,SAAS,GAAA;AAAA,EAAM;AAAA,EAE1B,YAAY;AAAA,IACV,CAACE,MACC,gBAAAH,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA,gBAAAA,EAACG,KAAM,EAAA,CACT;AAAA,EAAA;AAGN,GASaC,IAAiB;AAAA,EAC5B,QAAQ,CAACT,MAAS,gBAAAK,EAACP,GAAA,EAAoB,GAAGE,EAAA,CAAM;AAClD,GAKaU,IAA0B;AAAA,EACrC,QAAQ,CAACV,MACP,gBAAAK;AAAA,IAACP;AAAA,IAAA;AAAA,MACE,GAAGE;AAAA,MACJ,cAAc;AAAA,QACZ;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GAKaW,IAAuB;AAAA,EAClC,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,EAAA;AAAA,EAEd,QAAQ,CAACX,MAAS,gBAAAK,EAACP,GAAA,EAAoB,GAAGE,EAAA,CAAM;AAClD,GAKaY,IAAkB;AAAA,EAC7B,MAAM;AAAA,IACJ,UAAU;AAAA,EAAA;AAAA,EAEZ,QAAQ,CAACZ,MACP,gBAAAK;AAAA,IAACP;AAAA,IAAA;AAAA,MACE,GAAGE;AAAA,MACJ,cAAc;AAAA,QACZ;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN,GAKaa,IAAwB;AAAA,EACnC,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,mBAAmB;AAAA,EAAA;AAAA,EAErB,QAAQ,CAACb,MAAS,gBAAAK,EAACP,GAAA,EAAoB,GAAGE,EAAA,CAAM;AAClD,GAMac,IAAqB;AAAA,EAChC,MAAM;AAAA,IACJ,UAAU;AAAA,IACV,YAAY;AAAA,EAAA;AAAA,EAEd,QAAQ,CAACd,MACP,gBAAAK;AAAA,IAACP;AAAA,IAAA;AAAA,MACE,GAAGE;AAAA,MACJ,cAAc;AAAA,QACZ;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
@@ -1,18 +1,18 @@
1
- const e = [
1
+ const p = [
2
2
  "application/msword",
3
3
  "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
4
4
  "text/csv",
5
5
  "text/plain",
6
6
  "application/pdf"
7
- ], i = [
7
+ ], e = [
8
8
  "image/png",
9
9
  "image/jpeg",
10
10
  "image/jpg",
11
- "image/webp",
12
- "image/gif"
11
+ "image/webp"
12
+ // 'image/gif', // TODO: normalize this type
13
13
  ];
14
14
  export {
15
- e as DEFAULT_FILE_TYPES,
16
- i as DEFAULT_IMAGES_TYPES
15
+ p as DEFAULT_FILE_TYPES,
16
+ e as DEFAULT_IMAGES_TYPES
17
17
  };
18
18
  //# sourceMappingURL=Dropzone.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dropzone.types.js","sources":["../../src/Dropzone/Dropzone.types.tsx"],"sourcesContent":["import { FileRejection } from 'react-dropzone';\nimport { Dispatch, SetStateAction } from 'react';\n\nexport type DropzoneValueItem = File | string;\n\nexport interface FilePreviewProps {\n item: DropzoneValueItem;\n styles?: Pick<\n DropzoneStyles,\n 'previewWraper' | 'previewImage' | 'previewFile'\n >;\n}\n\nexport interface DropzoneTranslations {\n labelDropzonePrompt?: string;\n labelDropzoneSubPrompt?: string;\n labelOrClickToSelect?: string;\n labelSelectedFiles?: string;\n labelUploadErrors?: string;\n labelFileTooLarge?: string;\n labelInvalidFileType?: string;\n}\n\nexport interface DropzoneProps\n extends DropzoneTranslations,\n React.HTMLAttributes<HTMLDivElement> {\n acceptTypes?: string[];\n maxSizeMB: number;\n maxFiles?: number;\n onErrors?: (errors: FileRejection[]) => void;\n hideErrors?: boolean;\n disabled?: boolean;\n classNames?: DropzoneStyles;\n value?: DropzoneValueItem[];\n onChangeValue?: (items: DropzoneValueItem[]) => void;\n singlePick?: boolean;\n labelDropzoneClassname?: string;\n labelDropzoneSubClassname?: string;\n}\n\nexport interface DropzoneStyles {\n idleWrapper?: string;\n previewWrapper?: string;\n errorWrapper?: string;\n previewWraper?: string;\n previewImage?: string;\n previewFile?: string;\n}\n\nexport const DEFAULT_FILE_TYPES = [\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/csv',\n 'text/plain',\n 'application/pdf',\n];\n\nexport const DEFAULT_IMAGES_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/jpg',\n 'image/webp',\n 'image/gif',\n];\n\n\nexport interface DropzoneControl {\n setItems: Dispatch<SetStateAction<DropzoneValueItem[]>>;\n}\n"],"names":["DEFAULT_FILE_TYPES","DEFAULT_IMAGES_TYPES"],"mappings":"AAiDO,MAAMA,IAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEaC,IAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
1
+ {"version":3,"file":"Dropzone.types.js","sources":["../../src/Dropzone/Dropzone.types.tsx"],"sourcesContent":["import { FileRejection } from 'react-dropzone';\nimport { Dispatch, SetStateAction } from 'react';\n\nexport type DropzoneValueItem = File | string;\n\nexport interface FilePreviewProps {\n item: DropzoneValueItem;\n styles?: Pick<\n DropzoneStyles,\n 'previewWraper' | 'previewImage' | 'previewFile'\n >;\n}\n\nexport interface DropzoneTranslations {\n labelDropzonePrompt?: string;\n labelDropzoneSubPrompt?: string;\n labelOrClickToSelect?: string;\n labelSelectedFiles?: string;\n labelUploadErrors?: string;\n labelFileTooLarge?: string;\n labelInvalidFileType?: string;\n}\n\nexport interface DropzoneProps\n extends DropzoneTranslations,\n React.HTMLAttributes<HTMLDivElement> {\n acceptTypes?: string[];\n maxSizeMB: number;\n maxFiles?: number;\n onErrors?: (errors: FileRejection[]) => void;\n hideErrors?: boolean;\n disabled?: boolean;\n classNames?: DropzoneStyles;\n value?: DropzoneValueItem[];\n onChangeValue?: (items: DropzoneValueItem[]) => void;\n singlePick?: boolean;\n labelDropzoneClassname?: string;\n labelDropzoneSubClassname?: string;\n}\n\nexport interface DropzoneStyles {\n idleWrapper?: string;\n previewWrapper?: string;\n errorWrapper?: string;\n previewWraper?: string;\n previewImage?: string;\n previewFile?: string;\n}\n\nexport const DEFAULT_FILE_TYPES = [\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'text/csv',\n 'text/plain',\n 'application/pdf',\n];\n\nexport const DEFAULT_IMAGES_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/jpg',\n 'image/webp',\n // 'image/gif', // TODO: normalize this type\n];\n\n\nexport interface DropzoneControl {\n setItems: Dispatch<SetStateAction<DropzoneValueItem[]>>;\n}\n"],"names":["DEFAULT_FILE_TYPES","DEFAULT_IMAGES_TYPES"],"mappings":"AAiDO,MAAMA,IAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEaC,IAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAEF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/Form/Form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAA;AAKxB,QAAA,MAAM,IAAI,4MAAe,CAAA;AAazB,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,cAEG,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,4CAMxC,CAAA;AAED,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAA;AAUD,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAarE;AAED,iBAAS,SAAS,CAAC,EACE,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAYrE;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,2CAgBnE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,kDAkBtE;AAED,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,GACV,CAAA"}
1
+ {"version":3,"file":"Form.d.ts","sourceRoot":"","sources":["../../src/Form/Form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,iBAAiB,CAAA;AAKxB,QAAA,MAAM,IAAI,4MAAe,CAAA;AAazB,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,cAEG,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,4CAMxC,CAAA;AAED,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAA;AAUD,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAYrE;AAED,iBAAS,SAAS,CAAC,EACE,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAYrE;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,2CAgBnE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,kDAkBtE;AAED,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,GACV,CAAA"}
package/Form/Form.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","sources":["../../src/Form/Form.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@oneplatformdev/utils\"\nimport { Label } from \"../Label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n }: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n // className={cn(\"grid gap-2\", className)}\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n"],"names":["Form","FormProvider","FormFieldContext","React","FormField","props","jsx","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","useFormContext","formState","useFormState","fieldState","id","FormItem","className","cn","FormLabel","error","formItemId","Label","FormControl","formDescriptionId","formMessageId","Slot","FormDescription","FormMessage","body"],"mappings":"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"}
1
+ {"version":3,"file":"Form.js","sources":["../../src/Form/Form.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n FormProvider,\n useFormContext,\n useFormState,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"@oneplatformdev/utils\"\nimport { Label } from \"../Label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n }: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState } = useFormContext()\n const formState = useFormState({ name: fieldContext.name })\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n data-slot=\"form-item\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n </FormItemContext.Provider>\n )\n}\n\nfunction FormLabel({\n className,\n ...props\n }: React.ComponentProps<typeof LabelPrimitive.Root>) {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\n className={cn(\"data-[error=true]:text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n data-slot=\"form-control\"\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n data-slot=\"form-description\"\n id={formDescriptionId}\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message ?? \"\") : props.children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-sm\", className)}\n {...props}\n >\n {body}\n </p>\n )\n}\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n"],"names":["Form","FormProvider","FormFieldContext","React","FormField","props","jsx","Controller","useFormField","fieldContext","itemContext","FormItemContext","getFieldState","useFormContext","formState","useFormState","fieldState","id","FormItem","className","cn","FormLabel","error","formItemId","Label","FormControl","formDescriptionId","formMessageId","Slot","FormDescription","FormMessage","body"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { FormRenderControlProps } from './FormRenderControl.types';
2
1
  import { FieldValues } from 'react-hook-form';
2
+ import { FormRenderControlProps } from './FormRenderControl.types';
3
3
  export declare const FormRenderControl: <Data extends FieldValues = FieldValues>(props: FormRenderControlProps<Data>) => import("react/jsx-runtime").JSX.Element;
4
4
  //# sourceMappingURL=FormRenderControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormRenderControl.d.ts","sourceRoot":"","sources":["../../src/Form/FormRenderControl.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,eAAO,MAAM,iBAAiB,GAC5B,IAAI,SAAS,WAAW,GAAG,WAAW,EAEtC,OAAO,sBAAsB,CAAC,IAAI,CAAC,4CAiBpC,CAAC"}
1
+ {"version":3,"file":"FormRenderControl.d.ts","sourceRoot":"","sources":["../../src/Form/FormRenderControl.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAqCnE,eAAO,MAAM,iBAAiB,GAC5B,IAAI,SAAS,WAAW,GAAG,WAAW,EAEtC,OAAO,sBAAsB,CAAC,IAAI,CAAC,4CA+CpC,CAAC"}
@@ -1,22 +1,62 @@
1
- import { jsx as r, jsxs as a } from "react/jsx-runtime";
2
- import { FormField as d, FormItem as i, FormLabel as F, FormMessage as p } from "./Form.js";
3
- const b = (e) => {
4
- const { form: n, name: m, label: o, render: t, containerProps: l = {}, ...s } = e;
5
- return /* @__PURE__ */ r(
6
- d,
1
+ import { jsx as e, jsxs as g } from "react/jsx-runtime";
2
+ import { FormField as u, FormItem as d, FormMessage as f, FormLabel as h } from "./Form.js";
3
+ import "@radix-ui/react-tooltip";
4
+ import { cn as l } from "@oneplatformdev/utils";
5
+ import { Tooltip as F } from "../Tooltip/Tooltip.js";
6
+ import { cloneElement as P } from "react";
7
+ const b = (n) => {
8
+ const { label: t, tooltip: s, tooltipProps: r } = n, o = /* @__PURE__ */ e(h, { children: t });
9
+ return t ? s ? /* @__PURE__ */ e(
10
+ F,
7
11
  {
8
- control: n.control,
9
- name: m,
10
- render: (c) => /* @__PURE__ */ a(i, { ...l, children: [
11
- !!o && /* @__PURE__ */ r(F, { children: o }),
12
- t(c),
13
- /* @__PURE__ */ r(p, {})
12
+ message: s,
13
+ showQuestionMark: !0,
14
+ questionIconSize: "sm",
15
+ contentProps: {
16
+ side: "right",
17
+ align: "center"
18
+ },
19
+ ...r,
20
+ triggerProps: {
21
+ ...r?.triggerProps,
22
+ className: l("cursor-help", r?.triggerProps?.className)
23
+ },
24
+ children: P(o, { className: l("cursor-help", o.props.classNames) })
25
+ }
26
+ ) : o : null;
27
+ }, T = (n) => {
28
+ const {
29
+ form: t,
30
+ name: s,
31
+ label: r,
32
+ tooltip: o,
33
+ tooltipProps: i,
34
+ render: m,
35
+ containerProps: p = {},
36
+ ...c
37
+ } = n;
38
+ return /* @__PURE__ */ e(
39
+ u,
40
+ {
41
+ control: t.control,
42
+ name: s,
43
+ render: (a) => /* @__PURE__ */ g(d, { ...p, children: [
44
+ /* @__PURE__ */ e(
45
+ b,
46
+ {
47
+ label: r,
48
+ tooltip: o,
49
+ tooltipProps: i
50
+ }
51
+ ),
52
+ m(a),
53
+ /* @__PURE__ */ e(f, {})
14
54
  ] }),
15
- ...s
55
+ ...c
16
56
  }
17
57
  );
18
58
  };
19
59
  export {
20
- b as FormRenderControl
60
+ T as FormRenderControl
21
61
  };
22
62
  //# sourceMappingURL=FormRenderControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormRenderControl.js","sources":["../../src/Form/FormRenderControl.tsx"],"sourcesContent":["import { FormField, FormItem, FormLabel, FormMessage } from './Form';\nimport { FormRenderControlProps } from './FormRenderControl.types';\nimport { FieldValues } from 'react-hook-form';\n\nexport const FormRenderControl = <\n Data extends FieldValues = FieldValues,\n>(\n props: FormRenderControlProps<Data>\n) => {\n const { form, name, label, render, containerProps = {}, ...rest } = props;\n return (\n <FormField\n control={form.control}\n name={name}\n render={(params) => (\n <FormItem {...containerProps}>\n {Boolean(label) && <FormLabel>{label}</FormLabel>}\n {render(params)}\n <FormMessage />\n </FormItem>\n )}\n {...rest}\n />\n );\n};\n"],"names":["FormRenderControl","props","form","name","label","render","containerProps","rest","jsx","FormField","params","jsxs","FormItem","FormLabel","FormMessage"],"mappings":";;AAIO,MAAMA,IAAoB,CAG/BC,MACG;AACH,QAAM,EAAE,MAAAC,GAAM,MAAAC,GAAM,OAAAC,GAAO,QAAAC,GAAQ,gBAAAC,IAAiB,CAAA,GAAI,GAAGC,EAAA,IAASN;AACpE,SACE,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAASP,EAAK;AAAA,MACd,MAAAC;AAAA,MACA,QAAQ,CAACO,MACP,gBAAAC,EAACC,GAAA,EAAU,GAAGN,GACX,UAAA;AAAA,QAAA,EAAQF,KAAU,gBAAAI,EAACK,GAAA,EAAW,UAAAT,GAAM;AAAA,QACpCC,EAAOK,CAAM;AAAA,0BACbI,GAAA,CAAA,CAAY;AAAA,MAAA,GACf;AAAA,MAED,GAAGP;AAAA,IAAA;AAAA,EAAA;AAGV;"}
1
+ {"version":3,"file":"FormRenderControl.js","sources":["../../src/Form/FormRenderControl.tsx"],"sourcesContent":["import { FieldValues } from \"react-hook-form\";\n\nimport { FormField, FormItem, FormLabel, FormMessage } from \"./Form\";\nimport { FormRenderControlProps } from \"./FormRenderControl.types\";\nimport { Tooltip } from \"../Tooltip\";\nimport { cloneElement } from \"react\";\nimport { cn } from \"@oneplatformdev/utils\";\n\ninterface IFormLabelWithTooltipProps<\n Data extends FieldValues = FieldValues,\n> extends Pick<FormRenderControlProps<Data>, 'label' | 'tooltip' | 'tooltipProps'> {\n}\n\nconst FormLabelWithTooltip = <\n Data extends FieldValues = FieldValues,\n>(props: IFormLabelWithTooltipProps<Data>) => {\n const { label, tooltip, tooltipProps } = props;\n const cmp = <FormLabel>{label}</FormLabel>;\n if (!label) return null;\n if (!tooltip) return cmp;\n return (\n <Tooltip\n message={tooltip}\n showQuestionMark\n questionIconSize=\"sm\"\n contentProps={{\n side: \"right\",\n align: \"center\"\n }}\n {...tooltipProps}\n triggerProps={{\n ...tooltipProps?.triggerProps,\n className: cn('cursor-help', tooltipProps?.triggerProps?.className),\n }}\n >\n {cloneElement(cmp, { className: cn('cursor-help', cmp.props.classNames) })}\n </Tooltip>\n )\n}\n\nexport const FormRenderControl = <\n Data extends FieldValues = FieldValues,\n>(\n props: FormRenderControlProps<Data>\n) => {\n const {\n form,\n name,\n label,\n tooltip,\n tooltipProps,\n render,\n containerProps = {},\n ...rest\n } = props;\n return (\n <FormField\n control={form.control}\n name={name}\n render={(params) => (\n <FormItem {...containerProps}>\n <FormLabelWithTooltip\n label={label}\n tooltip={tooltip}\n tooltipProps={tooltipProps}\n />\n {/*{(label || tooltip) && (*/}\n {/* <FormLabel className={cn(\"flex items-center gap-1\")}>*/}\n {/* {label && <span>{label}</span>}*/}\n {/* {tooltip && (*/}\n {/* <Tooltip*/}\n {/* message={tooltip}*/}\n {/* showQuestionMark*/}\n {/* questionIconSize=\"xs\"*/}\n {/* contentProps={{*/}\n {/* side: \"right\",*/}\n {/* align: \"center\"*/}\n {/* }}*/}\n {/* {...props.tooltipProps}*/}\n {/* />*/}\n {/* )}*/}\n {/* </FormLabel>*/}\n {/*)}*/}\n {render(params)}\n <FormMessage/>\n </FormItem>\n )}\n {...rest}\n />\n );\n};\n"],"names":["FormLabelWithTooltip","props","label","tooltip","tooltipProps","cmp","jsx","FormLabel","Tooltip","cn","cloneElement","FormRenderControl","form","name","render","containerProps","rest","FormField","params","jsxs","FormItem","FormMessage"],"mappings":";;;;;;AAaA,MAAMA,IAAuB,CAE3BC,MAA4C;AAC5C,QAAM,EAAE,OAAAC,GAAO,SAAAC,GAAS,cAAAC,EAAA,IAAiBH,GACnCI,IAAM,gBAAAC,EAACC,GAAA,EAAW,UAAAL,EAAA,CAAM;AAC9B,SAAKA,IACAC,IAEH,gBAAAG;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,SAASL;AAAA,MACT,kBAAgB;AAAA,MAChB,kBAAiB;AAAA,MACjB,cAAc;AAAA,QACZ,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAER,GAAGC;AAAA,MACJ,cAAc;AAAA,QACZ,GAAGA,GAAc;AAAA,QACjB,WAAWK,EAAG,eAAeL,GAAc,cAAc,SAAS;AAAA,MAAA;AAAA,MAGnE,UAAAM,EAAaL,GAAK,EAAE,WAAWI,EAAG,eAAeJ,EAAI,MAAM,UAAU,EAAA,CAAG;AAAA,IAAA;AAAA,EAAA,IAhBxDA,IADF;AAoBrB,GAEaM,IAAoB,CAG/BV,MACG;AACH,QAAM;AAAA,IACJ,MAAAW;AAAA,IACA,MAAAC;AAAA,IACA,OAAAX;AAAA,IACA,SAAAC;AAAA,IACA,cAAAC;AAAA,IACA,QAAAU;AAAA,IACA,gBAAAC,IAAiB,CAAA;AAAA,IACjB,GAAGC;AAAA,EAAA,IACDf;AACJ,SACE,gBAAAK;AAAA,IAACW;AAAA,IAAA;AAAA,MACC,SAASL,EAAK;AAAA,MACd,MAAAC;AAAA,MACA,QAAQ,CAACK,MACP,gBAAAC,EAACC,GAAA,EAAU,GAAGL,GACZ,UAAA;AAAA,QAAA,gBAAAT;AAAA,UAACN;AAAA,UAAA;AAAA,YACC,OAAAE;AAAA,YACA,SAAAC;AAAA,YACA,cAAAC;AAAA,UAAA;AAAA,QAAA;AAAA,QAmBDU,EAAOI,CAAM;AAAA,0BACbG,GAAA,CAAA,CAAW;AAAA,MAAA,GACd;AAAA,MAED,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,5 +1,6 @@
1
- import { HTMLAttributes, ReactElement } from 'react';
1
+ import { HTMLAttributes, ReactElement, ReactNode } from 'react';
2
2
  import { ControllerFieldState, ControllerRenderProps, FieldPath, FieldValues, UseFormReturn, UseFormStateReturn } from 'react-hook-form';
3
+ import { TooltipProps } from '../Tooltip';
3
4
  export type FormRenderProps<Data extends FieldValues> = ({ field, fieldState, formState, }: {
4
5
  field: ControllerRenderProps<Data, FieldPath<Data>>;
5
6
  fieldState: ControllerFieldState;
@@ -8,7 +9,9 @@ export type FormRenderProps<Data extends FieldValues> = ({ field, fieldState, fo
8
9
  export interface FormRenderControlProps<Data extends FieldValues = FieldValues> {
9
10
  form: UseFormReturn<Data>;
10
11
  name: FieldPath<Data>;
11
- label?: string;
12
+ label?: ReactNode;
13
+ tooltip?: ReactNode;
14
+ tooltipProps?: Omit<TooltipProps, "message">;
12
15
  render: FormRenderProps<Data>;
13
16
  containerProps?: HTMLAttributes<HTMLDivElement>;
14
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FormRenderControl.types.d.ts","sourceRoot":"","sources":["../../src/Form/FormRenderControl.types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,aAAa,EACb,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,eAAe,CAAC,IAAI,SAAS,WAAW,IAAI,CAAC,EACvD,KAAK,EACL,UAAU,EACV,SAAS,GACV,EAAE;IACD,KAAK,EAAE,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,UAAU,EAAE,oBAAoB,CAAC;IACjC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;CACrC,KAAK,YAAY,CAAC;AAEnB,MAAM,WAAW,sBAAsB,CACrC,IAAI,SAAS,WAAW,GAAG,WAAW;IAEtC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,MAAM,MAAM,4BAA4B,CACtC,IAAI,SAAS,WAAW,GAAG,WAAW,IACpC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"FormRenderControl.types.d.ts","sourceRoot":"","sources":["../../src/Form/FormRenderControl.types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,EACT,WAAW,EACX,aAAa,EACb,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,eAAe,CAAC,IAAI,SAAS,WAAW,IAAI,CAAC,EACvD,KAAK,EACL,UAAU,EACV,SAAS,GACV,EAAE;IACD,KAAK,EAAE,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,UAAU,EAAE,oBAAoB,CAAC;IACjC,SAAS,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;CACrC,KAAK,YAAY,CAAC;AAEnB,MAAM,WAAW,sBAAsB,CACrC,IAAI,SAAS,WAAW,GAAG,WAAW;IAEtC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC7C,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9B,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,MAAM,MAAM,4BAA4B,CACtC,IAAI,SAAS,WAAW,GAAG,WAAW,IACpC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAA"}
@@ -1,4 +1,6 @@
1
- import { FormComboboxProps } from './FormCombobox.types';
1
+ import { FormComboboxMultiProps, FormComboboxSingleProps } from './FormCombobox.types';
2
2
  import { FieldValues } from 'react-hook-form';
3
- export declare const FormCombobox: <Data extends FieldValues>(props: FormComboboxProps<Data>) => import("react/jsx-runtime").JSX.Element;
3
+ import { JSX } from 'react';
4
+ export declare function FormCombobox<Data extends FieldValues, Node extends object = object>(props: FormComboboxSingleProps<Data, Node>): JSX.Element;
5
+ export declare function FormCombobox<Data extends FieldValues, Node extends object = object>(props: FormComboboxMultiProps<Data, Node>): JSX.Element;
4
6
  //# sourceMappingURL=FormCombobox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormCombobox.d.ts","sourceRoot":"","sources":["../../src/FormCombobox/FormCombobox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,eAAO,MAAM,YAAY,GAAI,IAAI,SAAS,WAAW,EACnD,OAAO,iBAAiB,CAAC,IAAI,CAAC,4CAmB/B,CAAC"}
1
+ {"version":3,"file":"FormCombobox.d.ts","sourceRoot":"","sources":["../../src/FormCombobox/FormCombobox.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAY5B,wBAAgB,YAAY,CAC1B,IAAI,SAAS,WAAW,EACxB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,KAAK,EAAE,uBAAuB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;AAC3D,wBAAgB,YAAY,CAC1B,IAAI,SAAS,WAAW,EACxB,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,KAAK,EAAE,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC"}