@oneplatformdev/ui 0.1.99-beta.21 → 0.1.99-beta.210

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 (186) 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.utils.d.ts +3 -0
  14. package/Button/Button.utils.d.ts.map +1 -0
  15. package/Button/Button.utils.js +14 -0
  16. package/Button/Button.utils.js.map +1 -0
  17. package/Button/buttonVariants.d.ts.map +1 -1
  18. package/Button/buttonVariants.js +2 -1
  19. package/Button/buttonVariants.js.map +1 -1
  20. package/Button/index.d.ts +1 -0
  21. package/Button/index.d.ts.map +1 -1
  22. package/Button/index.js +8 -6
  23. package/Button/index.js.map +1 -1
  24. package/ButtonIcon/ButtonIcon.d.ts.map +1 -1
  25. package/ButtonIcon/ButtonIcon.js +41 -39
  26. package/ButtonIcon/ButtonIcon.js.map +1 -1
  27. package/ButtonIcon/ButtonIcon.stories.js +35 -33
  28. package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
  29. package/ButtonIcon/buttonIconVariants.d.ts.map +1 -1
  30. package/ButtonIcon/buttonIconVariants.js +2 -1
  31. package/ButtonIcon/buttonIconVariants.js.map +1 -1
  32. package/CHANGELOG.md +1000 -0
  33. package/Calendar/Calendar.js +5 -4
  34. package/Calendar/Calendar.js.map +1 -1
  35. package/Checkbox/Checkbox.d.ts.map +1 -1
  36. package/Checkbox/Checkbox.js +32 -30
  37. package/Checkbox/Checkbox.js.map +1 -1
  38. package/Checkbox/Checkbox.stories.js +108 -0
  39. package/Checkbox/Checkbox.stories.js.map +1 -0
  40. package/Combobox/Combobox.d.ts +1 -1
  41. package/Combobox/Combobox.d.ts.map +1 -1
  42. package/Combobox/Combobox.js +234 -183
  43. package/Combobox/Combobox.js.map +1 -1
  44. package/Combobox/Combobox.stories.js +226 -0
  45. package/Combobox/Combobox.stories.js.map +1 -0
  46. package/Combobox/Combobox.types.d.ts +46 -20
  47. package/Combobox/Combobox.types.d.ts.map +1 -1
  48. package/Combobox/ComboboxOptionItem.d.ts +4 -3
  49. package/Combobox/ComboboxOptionItem.d.ts.map +1 -1
  50. package/Combobox/ComboboxOptionItem.js +49 -22
  51. package/Combobox/ComboboxOptionItem.js.map +1 -1
  52. package/Combobox/ComboboxOptions.d.ts +2 -2
  53. package/Combobox/ComboboxOptions.d.ts.map +1 -1
  54. package/Combobox/ComboboxOptions.js +48 -48
  55. package/Combobox/ComboboxOptions.js.map +1 -1
  56. package/Command/Command.d.ts +6 -1
  57. package/Command/Command.d.ts.map +1 -1
  58. package/Command/Command.js +61 -43
  59. package/Command/Command.js.map +1 -1
  60. package/DataTable/DataTable.js +16 -15
  61. package/DataTable/DataTable.js.map +1 -1
  62. package/Dialog/Dialog.d.ts +4 -1
  63. package/Dialog/Dialog.d.ts.map +1 -1
  64. package/Dialog/Dialog.js +69 -35
  65. package/Dialog/Dialog.js.map +1 -1
  66. package/Dialog/Dialog.stories.js +102 -0
  67. package/Dialog/Dialog.stories.js.map +1 -0
  68. package/Dialog/Dialog.types.d.ts +4 -0
  69. package/Dialog/Dialog.types.d.ts.map +1 -0
  70. package/Dialog/Dialog.types.js +2 -0
  71. package/Dialog/Dialog.types.js.map +1 -0
  72. package/Dialog/index.d.ts +1 -0
  73. package/Dialog/index.d.ts.map +1 -1
  74. package/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  75. package/DropdownMenu/DropdownMenu.js +33 -20
  76. package/DropdownMenu/DropdownMenu.js.map +1 -1
  77. package/Dropzone/Dropzone.d.ts.map +1 -1
  78. package/Dropzone/Dropzone.js +46 -28
  79. package/Dropzone/Dropzone.js.map +1 -1
  80. package/Dropzone/Dropzone.stories.js +100 -0
  81. package/Dropzone/Dropzone.stories.js.map +1 -0
  82. package/Form/Form.d.ts.map +1 -1
  83. package/Form/Form.js.map +1 -1
  84. package/Form/FormRenderControl.d.ts +1 -1
  85. package/Form/FormRenderControl.d.ts.map +1 -1
  86. package/Form/FormRenderControl.js +54 -14
  87. package/Form/FormRenderControl.js.map +1 -1
  88. package/Form/FormRenderControl.types.d.ts +4 -1
  89. package/Form/FormRenderControl.types.d.ts.map +1 -1
  90. package/FormCombobox/FormCombobox.d.ts +1 -1
  91. package/FormCombobox/FormCombobox.d.ts.map +1 -1
  92. package/FormCombobox/FormCombobox.js +15 -13
  93. package/FormCombobox/FormCombobox.js.map +1 -1
  94. package/FormCombobox/FormCombobox.types.d.ts +1 -1
  95. package/FormCombobox/FormCombobox.types.d.ts.map +1 -1
  96. package/FormDatePicker/FormDatePicker.d.ts.map +1 -1
  97. package/FormDatePicker/FormDatePicker.js +18 -16
  98. package/FormDatePicker/FormDatePicker.js.map +1 -1
  99. package/FormDropzone/FormDropzone.d.ts.map +1 -1
  100. package/FormDropzone/FormDropzone.js +11 -9
  101. package/FormDropzone/FormDropzone.js.map +1 -1
  102. package/FormInput/FormInput.d.ts.map +1 -1
  103. package/FormInput/FormInput.js +47 -27
  104. package/FormInput/FormInput.js.map +1 -1
  105. package/FormInput/FormInput.stories.js +61 -0
  106. package/FormInput/FormInput.stories.js.map +1 -0
  107. package/FormInput/FormInput.types.d.ts +1 -0
  108. package/FormInput/FormInput.types.d.ts.map +1 -1
  109. package/FormSelect/FormSelect.d.ts.map +1 -1
  110. package/FormSelect/FormSelect.js +21 -17
  111. package/FormSelect/FormSelect.js.map +1 -1
  112. package/FormTextarea/FormTextarea.d.ts.map +1 -1
  113. package/FormTextarea/FormTextarea.js +15 -13
  114. package/FormTextarea/FormTextarea.js.map +1 -1
  115. package/InfoBlock/InfoBlock.d.ts +7 -0
  116. package/InfoBlock/InfoBlock.d.ts.map +1 -0
  117. package/InfoBlock/InfoBlock.js +28 -0
  118. package/InfoBlock/InfoBlock.js.map +1 -0
  119. package/InfoBlock/InfoBlock.stories.js +50 -0
  120. package/InfoBlock/InfoBlock.stories.js.map +1 -0
  121. package/InfoBlock/InfoBlock.types.d.ts +9 -0
  122. package/InfoBlock/InfoBlock.types.d.ts.map +1 -0
  123. package/InfoBlock/InfoBlock.types.js +2 -0
  124. package/InfoBlock/InfoBlock.types.js.map +1 -0
  125. package/InfoBlock/index.d.ts +3 -0
  126. package/InfoBlock/index.d.ts.map +1 -0
  127. package/InfoBlock/index.js +5 -0
  128. package/InfoBlock/index.js.map +1 -0
  129. package/InfoBlock/infoBlockVariants.d.ts +6 -0
  130. package/InfoBlock/infoBlockVariants.d.ts.map +1 -0
  131. package/InfoBlock/infoBlockVariants.js +27 -0
  132. package/InfoBlock/infoBlockVariants.js.map +1 -0
  133. package/Input/Input.d.ts.map +1 -1
  134. package/Input/Input.js +65 -51
  135. package/Input/Input.js.map +1 -1
  136. package/Input/Input.types.d.ts +1 -0
  137. package/Input/Input.types.d.ts.map +1 -1
  138. package/Input/inputVariants.d.ts.map +1 -1
  139. package/Input/inputVariants.js +5 -4
  140. package/Input/inputVariants.js.map +1 -1
  141. package/LoadingMask/LoadingMask.d.ts +1 -2
  142. package/LoadingMask/LoadingMask.d.ts.map +1 -1
  143. package/LoadingMask/LoadingMask.js +8 -8
  144. package/LoadingMask/LoadingMask.js.map +1 -1
  145. package/LoadingMask/LoadingMask.types.d.ts +1 -0
  146. package/LoadingMask/LoadingMask.types.d.ts.map +1 -1
  147. package/Popover/Popover.d.ts.map +1 -1
  148. package/Popover/Popover.js +9 -5
  149. package/Popover/Popover.js.map +1 -1
  150. package/Search/Search.d.ts.map +1 -1
  151. package/Search/Search.js +41 -32
  152. package/Search/Search.js.map +1 -1
  153. package/Search/Search.stories.js +17 -0
  154. package/Search/Search.stories.js.map +1 -0
  155. package/Select/Select.d.ts.map +1 -1
  156. package/Select/Select.js +53 -48
  157. package/Select/Select.js.map +1 -1
  158. package/Select/Select.types.d.ts +4 -0
  159. package/Select/Select.types.d.ts.map +1 -1
  160. package/Select/SelectRoot.js +1 -1
  161. package/Select/SelectRoot.js.map +1 -1
  162. package/TablePagination/TablePagination.js +9 -8
  163. package/TablePagination/TablePagination.js.map +1 -1
  164. package/Textarea/Textarea.d.ts.map +1 -1
  165. package/Textarea/Textarea.js +48 -43
  166. package/Textarea/Textarea.js.map +1 -1
  167. package/Textarea/Textarea.stories.js +1 -1
  168. package/Textarea/Textarea.stories.js.map +1 -1
  169. package/Textarea/Textarea.types.d.ts +3 -1
  170. package/Textarea/Textarea.types.d.ts.map +1 -1
  171. package/Toast/Toast.d.ts +1 -1
  172. package/Toast/toastVariants.d.ts +1 -1
  173. package/Tooltip/Tooltip.d.ts.map +1 -1
  174. package/Tooltip/Tooltip.js +41 -29
  175. package/Tooltip/Tooltip.js.map +1 -1
  176. package/Tooltip/Tooltip.types.d.ts +1 -0
  177. package/Tooltip/Tooltip.types.d.ts.map +1 -1
  178. package/Tooltip/tooltipVariants.d.ts +4 -0
  179. package/Tooltip/tooltipVariants.d.ts.map +1 -0
  180. package/Tooltip/tooltipVariants.js +23 -0
  181. package/Tooltip/tooltipVariants.js.map +1 -0
  182. package/index.d.ts +1 -0
  183. package/index.d.ts.map +1 -1
  184. package/index.js +332 -328
  185. package/index.js.map +1 -1
  186. package/package.json +6 -5
@@ -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":"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"}
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":"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"}
@@ -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 +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;
@@ -9,6 +10,8 @@ export interface FormRenderControlProps<Data extends FieldValues = FieldValues>
9
10
  form: UseFormReturn<Data>;
10
11
  name: FieldPath<Data>;
11
12
  label?: string;
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,MAAM,CAAC;IACf,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,4 @@
1
1
  import { FormComboboxProps } 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
+ export declare const FormCombobox: <Data extends FieldValues, Node extends object = object>(props: FormComboboxProps<Data, Node>) => import("react/jsx-runtime").JSX.Element;
4
4
  //# 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,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,eAAO,MAAM,YAAY,GACvB,IAAI,SAAS,WAAW,EACxB,IAAI,SAAS,MAAM,GAAG,MAAM,EAE5B,OAAO,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,4CAqBrC,CAAC"}
@@ -1,19 +1,21 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
- import { FormControl as b } from "../Form/Form.js";
3
- import { FormRenderControl as p } from "../Form/FormRenderControl.js";
4
- import { Combobox as a } from "../Combobox/Combobox.js";
5
- const x = (m) => {
6
- const { form: n, label: e, name: t, ...C } = m;
2
+ import { FormControl as C } from "../Form/Form.js";
3
+ import { FormRenderControl as b } from "../Form/FormRenderControl.js";
4
+ import { Combobox as s } from "../Combobox/Combobox.js";
5
+ const h = (m) => {
6
+ const { form: t, label: n, tooltip: e, tooltipProps: p, name: i, ...l } = m;
7
7
  return /* @__PURE__ */ o(
8
- p,
8
+ b,
9
9
  {
10
- form: n,
11
- label: e,
12
- name: t,
13
- render: ({ field: r }) => /* @__PURE__ */ o(b, { children: /* @__PURE__ */ o(
14
- a,
10
+ form: t,
11
+ label: n,
12
+ tooltip: e,
13
+ tooltipProps: p,
14
+ name: i,
15
+ render: ({ field: r }) => /* @__PURE__ */ o(C, { children: /* @__PURE__ */ o(
16
+ s,
15
17
  {
16
- ...C,
18
+ ...l,
17
19
  ...r,
18
20
  onChange: r.onChange
19
21
  }
@@ -22,6 +24,6 @@ const x = (m) => {
22
24
  );
23
25
  };
24
26
  export {
25
- x as FormCombobox
27
+ h as FormCombobox
26
28
  };
27
29
  //# sourceMappingURL=FormCombobox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormCombobox.js","sources":["../../src/FormCombobox/FormCombobox.tsx"],"sourcesContent":["import { FormControl, FormRenderControl } from '../Form';\nimport { Combobox } from '../Combobox';\nimport { FormComboboxProps } from './FormCombobox.types';\nimport { FieldValues } from 'react-hook-form';\n\n// TODO: add description\nexport const FormCombobox = <Data extends FieldValues>(\n props: FormComboboxProps<Data>\n) => {\n const { form, label, name, ...rest } = props;\n return (\n <FormRenderControl\n form={form}\n label={label}\n name={name}\n render={({ field }) => (\n <FormControl>\n <Combobox\n {...rest}\n {...field}\n onChange={field.onChange}\n />\n </FormControl>\n )}\n />\n );\n};\n"],"names":["FormCombobox","props","form","label","name","rest","jsx","FormRenderControl","field","FormControl","Combobox"],"mappings":";;;;AAMO,MAAMA,IAAe,CAC1BC,MACG;AACH,QAAM,EAAE,MAAAC,GAAM,OAAAC,GAAO,MAAAC,GAAM,GAAGC,MAASJ;AACvC,SACE,gBAAAK;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAL;AAAA,MACA,OAAAC;AAAA,MACA,MAAAC;AAAA,MACA,QAAQ,CAAC,EAAE,OAAAI,EAAA,wBACRC,GAAA,EACC,UAAA,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UACE,GAAGL;AAAA,UACH,GAAGG;AAAA,UACJ,UAAUA,EAAM;AAAA,QAAA;AAAA,MAAA,EAClB,CACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"FormCombobox.js","sources":["../../src/FormCombobox/FormCombobox.tsx"],"sourcesContent":["import { FormControl, FormRenderControl } from '../Form';\nimport { Combobox } from '../Combobox';\nimport { FormComboboxProps } from './FormCombobox.types';\nimport { FieldValues } from 'react-hook-form';\n\n// TODO: add description\nexport const FormCombobox = <\n Data extends FieldValues,\n Node extends object = object\n>(\n props: FormComboboxProps<Data, Node>\n) => {\n const { form, label, tooltip, tooltipProps, name, ...rest } = props;\n return (\n <FormRenderControl\n form={form}\n label={label}\n tooltip={tooltip}\n tooltipProps={tooltipProps}\n name={name}\n render={({ field }) => (\n <FormControl>\n <Combobox\n {...rest}\n {...field}\n onChange={field.onChange}\n />\n </FormControl>\n )}\n />\n );\n};\n"],"names":["FormCombobox","props","form","label","tooltip","tooltipProps","name","rest","jsx","FormRenderControl","field","FormControl","Combobox"],"mappings":";;;;AAMO,MAAMA,IAAe,CAI1BC,MACG;AACH,QAAM,EAAE,MAAAC,GAAM,OAAAC,GAAO,SAAAC,GAAS,cAAAC,GAAc,MAAAC,GAAM,GAAGC,MAASN;AAC9D,SACE,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAP;AAAA,MACA,OAAAC;AAAA,MACA,SAAAC;AAAA,MACA,cAAAC;AAAA,MACA,MAAAC;AAAA,MACA,QAAQ,CAAC,EAAE,OAAAI,EAAA,wBACRC,GAAA,EACC,UAAA,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UACE,GAAGL;AAAA,UACH,GAAGG;AAAA,UACJ,UAAUA,EAAM;AAAA,QAAA;AAAA,MAAA,EAClB,CACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
@@ -1,6 +1,6 @@
1
1
  import { FieldValues } from 'react-hook-form';
2
2
  import { ComboboxProps } from '../Combobox';
3
3
  import { FormRenderControlExtendProps } from '../Form';
4
- export interface FormComboboxProps<Data extends FieldValues> extends FormRenderControlExtendProps<Data>, Omit<ComboboxProps, 'value' | 'onChange'> {
4
+ export interface FormComboboxProps<Data extends FieldValues, Node extends object = object> extends FormRenderControlExtendProps<Data>, Omit<ComboboxProps<Node>, 'value' | 'onChange'> {
5
5
  }
6
6
  //# sourceMappingURL=FormCombobox.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormCombobox.types.d.ts","sourceRoot":"","sources":["../../src/FormCombobox/FormCombobox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,WAAW,iBAAiB,CAAC,IAAI,SAAS,WAAW,CACzD,SAAQ,4BAA4B,CAAC,IAAI,CAAC,EACxC,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,UAAU,CAAC;CAAG"}
1
+ {"version":3,"file":"FormCombobox.types.d.ts","sourceRoot":"","sources":["../../src/FormCombobox/FormCombobox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAEvD,MAAM,WAAW,iBAAiB,CAChC,IAAI,SAAS,WAAW,EACxB,IAAI,SAAS,MAAM,GAAG,MAAM,CAC5B,SAAQ,4BAA4B,CAAC,IAAI,CAAC,EAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;CAChD"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormDatePicker.d.ts","sourceRoot":"","sources":["../../src/FormDatePicker/FormDatePicker.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,eAAO,MAAM,cAAc,GAAI,IAAI,SAAS,WAAW,EACrD,OAAO,mBAAmB,CAAC,IAAI,CAAC,4CAuBjC,CAAC"}
1
+ {"version":3,"file":"FormDatePicker.d.ts","sourceRoot":"","sources":["../../src/FormDatePicker/FormDatePicker.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,eAAO,MAAM,cAAc,GAAI,IAAI,SAAS,WAAW,EACrD,OAAO,mBAAmB,CAAC,IAAI,CAAC,4CAyBjC,CAAC"}