@oneplatformdev/ui 0.1.99-beta.242 → 0.1.99-beta.245

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 (172) hide show
  1. package/.storybook/Wrappers.js.map +1 -1
  2. package/Accordion/Accordion.js.map +1 -1
  3. package/Alert/Alert.js.map +1 -1
  4. package/Alert/alertVariants.js.map +1 -1
  5. package/AlertDialog/AlertDialog.js.map +1 -1
  6. package/AlertDialog/AlertDialog.stories.js +2 -4
  7. package/AlertDialog/AlertDialog.stories.js.map +1 -1
  8. package/AlertDialog/AlertDialogRoot.js +18 -20
  9. package/AlertDialog/AlertDialogRoot.js.map +1 -1
  10. package/AreaChart/AreaChart.js.map +1 -1
  11. package/Aside/Aside.js.map +1 -1
  12. package/Aside/AsideSidebar.js.map +1 -1
  13. package/AspectRatio/AspectRatio.js.map +1 -1
  14. package/Avatar/Avatar.js.map +1 -1
  15. package/Badge/Badge.js.map +1 -1
  16. package/Badge/badgeVariants.js.map +1 -1
  17. package/Breadcrumb/Breadcrumb.js.map +1 -1
  18. package/Button/Button.js +10 -11
  19. package/Button/Button.js.map +1 -1
  20. package/Button/Button.stories.js.map +1 -1
  21. package/Button/Button.utils.js.map +1 -1
  22. package/Button/ButtonCounterBadge.js.map +1 -1
  23. package/Button/buttonVariants.js.map +1 -1
  24. package/ButtonIcon/ButtonIcon.js +19 -22
  25. package/ButtonIcon/ButtonIcon.js.map +1 -1
  26. package/ButtonIcon/ButtonIcon.stories.js.map +1 -1
  27. package/ButtonIcon/buttonIconVariants.js.map +1 -1
  28. package/CHANGELOG.md +3241 -3225
  29. package/Calendar/Calendar.js +4 -6
  30. package/Calendar/Calendar.js.map +1 -1
  31. package/Card/Card.js.map +1 -1
  32. package/Carousel/Carousel.js +6 -7
  33. package/Carousel/Carousel.js.map +1 -1
  34. package/Chart/Chart.js.map +1 -1
  35. package/Checkbox/Checkbox.js +0 -1
  36. package/Checkbox/Checkbox.js.map +1 -1
  37. package/Checkbox/Checkbox.stories.js.map +1 -1
  38. package/Collapsible/Collapsible.js.map +1 -1
  39. package/Combobox/Combobox.js +10 -10
  40. package/Combobox/Combobox.js.map +1 -1
  41. package/Combobox/Combobox.stories.js.map +1 -1
  42. package/Combobox/Combobox.types.js.map +1 -1
  43. package/Combobox/ComboboxOptionItem.js +19 -20
  44. package/Combobox/ComboboxOptionItem.js.map +1 -1
  45. package/Combobox/ComboboxRenderContent.js +14 -15
  46. package/Combobox/ComboboxRenderContent.js.map +1 -1
  47. package/Combobox/ComboboxRenderOptions.js +5 -5
  48. package/Combobox/ComboboxRenderOptions.js.map +1 -1
  49. package/Combobox/ComboboxRenderTrigger.js +28 -30
  50. package/Combobox/ComboboxRenderTrigger.js.map +1 -1
  51. package/Command/Command.js +21 -22
  52. package/Command/Command.js.map +1 -1
  53. package/ContextPopover/ContextDropdownMenu.js.map +1 -1
  54. package/ContextPopover/ContextPopover.js.map +1 -1
  55. package/ContextPopover/useContextPopoverHandler.js.map +1 -1
  56. package/DataTable/DataTable.js +24 -26
  57. package/DataTable/DataTable.js.map +1 -1
  58. package/DataTable/DataTableColumnFilter.js +6 -7
  59. package/DataTable/DataTableColumnFilter.js.map +1 -1
  60. package/DataTable/useDataTable.js.map +1 -1
  61. package/DatePicker/DatePicker.js +12 -13
  62. package/DatePicker/DatePicker.js.map +1 -1
  63. package/Dialog/Dialog.js +16 -17
  64. package/Dialog/Dialog.js.map +1 -1
  65. package/Dialog/Dialog.stories.js +14 -15
  66. package/Dialog/Dialog.stories.js.map +1 -1
  67. package/Dialog/DialogOverlayScope.js.map +1 -1
  68. package/Drawer/Drawer.js.map +1 -1
  69. package/DropdownMenu/DropdownMenu.js.map +1 -1
  70. package/Dropzone/Dropzone.js.map +1 -1
  71. package/Dropzone/Dropzone.stories.js.map +1 -1
  72. package/Dropzone/Dropzone.types.js.map +1 -1
  73. package/Dropzone/DropzoneFilePreview.js.map +1 -1
  74. package/Dropzone/DropzoneSinglePickPreview.js.map +1 -1
  75. package/Dropzone/DropzoneUtils.js.map +1 -1
  76. package/Form/Form.js +14 -15
  77. package/Form/Form.js.map +1 -1
  78. package/Form/FormRenderControl.js +6 -7
  79. package/Form/FormRenderControl.js.map +1 -1
  80. package/Form/Form_old.js +4 -5
  81. package/Form/Form_old.js.map +1 -1
  82. package/FormCheckbox/FormCheckbox.js +4 -4
  83. package/FormCheckbox/FormCheckbox.js.map +1 -1
  84. package/FormCombobox/FormCombobox.js +4 -4
  85. package/FormCombobox/FormCombobox.js.map +1 -1
  86. package/FormDatePicker/FormDatePicker.js +4 -4
  87. package/FormDatePicker/FormDatePicker.js.map +1 -1
  88. package/FormDropzone/FormDropzone.js +3 -3
  89. package/FormDropzone/FormDropzone.js.map +1 -1
  90. package/FormInput/FormInput.js +6 -6
  91. package/FormInput/FormInput.js.map +1 -1
  92. package/FormInput/FormInput.stories.js +5 -5
  93. package/FormInput/FormInput.stories.js.map +1 -1
  94. package/FormRadio/FormRadio.js.map +1 -1
  95. package/FormSelect/FormSelect.js +6 -9
  96. package/FormSelect/FormSelect.js.map +1 -1
  97. package/FormTextarea/FormTextarea.js +4 -4
  98. package/FormTextarea/FormTextarea.js.map +1 -1
  99. package/Header/Header.js.map +1 -1
  100. package/HoverCard/HoverCard.js.map +1 -1
  101. package/InfoBlock/InfoBlock.js.map +1 -1
  102. package/InfoBlock/InfoBlock.stories.js.map +1 -1
  103. package/InfoBlock/infoBlockVariants.js.map +1 -1
  104. package/Input/Input.js.map +1 -1
  105. package/Input/Input.stories.js +154 -0
  106. package/Input/Input.stories.js.map +1 -0
  107. package/Input/inputVariants.js.map +1 -1
  108. package/InputOTP/InputOTP.d.ts.map +1 -1
  109. package/InputOTP/InputOTP.js.map +1 -1
  110. package/LICENSE +21 -21
  111. package/Label/Label.js.map +1 -1
  112. package/Label/labelVariants.js.map +1 -1
  113. package/LazyLoader/LazyLoader.js +4 -5
  114. package/LazyLoader/LazyLoader.js.map +1 -1
  115. package/LoadedIcon/LoadedIcon.js.map +1 -1
  116. package/LoadingMask/LoadingMask.js.map +1 -1
  117. package/LoadingMask/RenderLoadingMask.js.map +1 -1
  118. package/LoadingProgress/LoadingProgress.js.map +1 -1
  119. package/LoadingProgress/loadingProgressVariants.js.map +1 -1
  120. package/Menubar/Menubar.js.map +1 -1
  121. package/NavigationMenu/NavigationMenu.js.map +1 -1
  122. package/NavigationMenu/navigationMenuVariants.js.map +1 -1
  123. package/Pagination/Pagination.js +0 -1
  124. package/Pagination/Pagination.js.map +1 -1
  125. package/Popover/Popover.js.map +1 -1
  126. package/Progress/Progress.js.map +1 -1
  127. package/README.md +7 -7
  128. package/Radio/Radio.js.map +1 -1
  129. package/RadioGroup/RadioGroup.js.map +1 -1
  130. package/Resizable/Resizable.js.map +1 -1
  131. package/Resizable/Resizable.stories.js.map +1 -1
  132. package/ScrollArea/ScrollArea.js.map +1 -1
  133. package/Search/Search.js +9 -9
  134. package/Search/Search.js.map +1 -1
  135. package/Search/Search.stories.js.map +1 -1
  136. package/Select/Select.js +6 -7
  137. package/Select/Select.js.map +1 -1
  138. package/Select/Select.stories.js.map +1 -1
  139. package/Select/SelectRoot.js +5 -5
  140. package/Select/SelectRoot.js.map +1 -1
  141. package/Separator/Separator.js.map +1 -1
  142. package/Sheet/Sheet.js.map +1 -1
  143. package/Sidebar/Sidebar.js +20 -21
  144. package/Sidebar/Sidebar.js.map +1 -1
  145. package/Skeleton/Skeleton.js.map +1 -1
  146. package/Slider/Slider.js.map +1 -1
  147. package/Sonner/Sonner.js.map +1 -1
  148. package/Switch/Switch.js.map +1 -1
  149. package/Table/Table.js.map +1 -1
  150. package/TablePagination/TablePagination.js +21 -26
  151. package/TablePagination/TablePagination.js.map +1 -1
  152. package/Tabs/Tabs.js.map +1 -1
  153. package/Tabs/TabsRoot.js.map +1 -1
  154. package/Textarea/Textarea.js.map +1 -1
  155. package/Textarea/Textarea.stories.js.map +1 -1
  156. package/Textarea/useAutosizeTextArea.js.map +1 -1
  157. package/Theme/ThemeModeToggle.js +3 -4
  158. package/Theme/ThemeModeToggle.js.map +1 -1
  159. package/Theme/ThemeProvider.js.map +1 -1
  160. package/Toast/Toast.js.map +1 -1
  161. package/Toast/toast.constants.js.map +1 -1
  162. package/Toast/toastVariants.js.map +1 -1
  163. package/Toast/useToast.js.map +1 -1
  164. package/Toaster/Toaster.js.map +1 -1
  165. package/Toggle/Toggle.js.map +1 -1
  166. package/ToggleGroup/ToggleGroup.js.map +1 -1
  167. package/Tooltip/Tooltip.js +4 -4
  168. package/Tooltip/Tooltip.js.map +1 -1
  169. package/Tooltip/TooltipRoot.js.map +1 -1
  170. package/Tooltip/tooltipVariants.js.map +1 -1
  171. package/index.js +286 -286
  172. package/package.json +4 -4
package/Dialog/Dialog.js CHANGED
@@ -3,13 +3,12 @@ import * as a from "@radix-ui/react-dialog";
3
3
  import { XIcon as u } from "lucide-react";
4
4
  import { cn as n } from "@oneplatformdev/utils";
5
5
  import { ButtonIcon as f } from "../ButtonIcon/ButtonIcon.js";
6
- import "../ButtonIcon/buttonIconVariants.js";
7
- function y({
6
+ function b({
8
7
  ...t
9
8
  }) {
10
9
  return /* @__PURE__ */ e(a.Root, { "data-slot": "dialog", ...t });
11
10
  }
12
- function w({
11
+ function y({
13
12
  ...t
14
13
  }) {
15
14
  return /* @__PURE__ */ e(a.Trigger, { "data-slot": "dialog-trigger", ...t });
@@ -19,7 +18,7 @@ function g({
19
18
  }) {
20
19
  return /* @__PURE__ */ e(a.Portal, { "data-slot": "dialog-portal", ...t });
21
20
  }
22
- function D({
21
+ function w({
23
22
  ...t
24
23
  }) {
25
24
  return /* @__PURE__ */ e(a.Close, { "data-slot": "dialog-close", ...t });
@@ -40,7 +39,7 @@ function p({
40
39
  }
41
40
  );
42
41
  }
43
- function N(t) {
42
+ function D(t) {
44
43
  const {
45
44
  className: o,
46
45
  children: i,
@@ -102,7 +101,7 @@ function N(t) {
102
101
  }
103
102
  ) }) });
104
103
  }
105
- function C({ className: t, ...o }) {
104
+ function N({ className: t, ...o }) {
106
105
  return /* @__PURE__ */ e(
107
106
  "div",
108
107
  {
@@ -112,7 +111,7 @@ function C({ className: t, ...o }) {
112
111
  }
113
112
  );
114
113
  }
115
- function z({ className: t, ...o }) {
114
+ function C({ className: t, ...o }) {
116
115
  return /* @__PURE__ */ e(
117
116
  "div",
118
117
  {
@@ -125,7 +124,7 @@ function z({ className: t, ...o }) {
125
124
  }
126
125
  );
127
126
  }
128
- function k(t) {
127
+ function z(t) {
129
128
  const {
130
129
  className: o,
131
130
  children: i,
@@ -155,7 +154,7 @@ function k(t) {
155
154
  }
156
155
  );
157
156
  }
158
- function j({
157
+ function k({
159
158
  className: t,
160
159
  ...o
161
160
  }) {
@@ -173,16 +172,16 @@ function j({
173
172
  );
174
173
  }
175
174
  export {
176
- y as Dialog,
177
- D as DialogClose,
178
- N as DialogContent,
179
- j as DialogDescription,
180
- z as DialogFooter,
181
- C as DialogHeader,
175
+ b as Dialog,
176
+ w as DialogClose,
177
+ D as DialogContent,
178
+ k as DialogDescription,
179
+ C as DialogFooter,
180
+ N as DialogHeader,
182
181
  p as DialogOverlay,
183
182
  g as DialogPortal,
184
183
  a as DialogPrimitive,
185
- k as DialogTitle,
186
- w as DialogTrigger
184
+ z as DialogTitle,
185
+ y as DialogTrigger
187
186
  };
188
187
  //# sourceMappingURL=Dialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../../src/Dialog/Dialog.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"@oneplatformdev/utils\"\nimport { ButtonIcon } from \"../ButtonIcon\";\n\nfunction Dialog({\n ...props\n }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n ...props\n }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n ...props\n }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n ...props\n }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent(props: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n slotProps?: {\n overlay?: React.ComponentProps<typeof DialogPrimitive.Overlay>;\n }\n}) {\n const {\n className,\n children,\n showCloseButton = true,\n style,\n slotProps,\n ...rest\n } = props;\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay {...slotProps?.overlay}>\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n data-closable={JSON.stringify(showCloseButton)}\n className={cn(\n 'group group/content',\n 'fixed top-[50%] left-[50%] z-50 translate-x-[-50%] translate-y-[-50%]',\n 'flex flex-col w-full max-w-[calc(100%-2rem)] sm:max-w-2xl gap-3',\n 'max-h-[90%] overflow-auto overscroll-none',\n 'bg-background rounded-lg border shadow-lg duration-200 p-6',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n \"focus:outline-none focus-visible:outline-none focus:ring-0 focus-visible:ring-0 focus:ring-transparent\",\n 'outline-none focus:outline-none focus-visible:outline-none',\n className\n )}\n {...rest}\n style={{\n pointerEvents: 'auto',\n ...(style || {}),\n }}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n 'absolute top-6 right-6 rounded-2xl opacity-70 transition-opacity hover:opacity-100',\n 'data-[state=open]:bg-accent data-[state=open]:text-muted-foreground',\n 'ring-offset-background focus:ring-transparent focus:ring-0 focus:ring-offset-0 focus:outline-hidden',\n 'focus:outline-none focus:ring-0',\n 'disabled:pointer-events-none [&_svg]:pointer-events-none',\n '[&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:size-5',\n 'cursor-pointer size-10 flex items-center justify-center',\n )}\n >\n <ButtonIcon\n variant='ghost'\n color='secondary'\n icon={XIcon}\n />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogOverlay>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-4 justify-center text-center sm:text-left min-h-10\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end pt-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle(props: React.ComponentProps<typeof DialogPrimitive.Title>) {\n const {\n className,\n children,\n ...rest\n } = props;\n return (\n <DialogPrimitive.Title\n asChild\n data-slot=\"dialog-title\"\n className={cn(\n \"flex items-center min-h-10\",\n \"group-data-[closable='true']/content:pr-13\",\n className\n )}\n {...rest}\n >\n <span\n className={cn(\n \"text-lg leading-[1.2] font-bold text-[#06080D]\",\n 'whitespace-pre-wrap wrap-break-word line-clamp-10',\n )}\n >\n {children}\n </span>\n </DialogPrimitive.Title>\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n }: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\n \"text-[#06080D] font-medium text-base\",\n 'whitespace-pre-wrap wrap-break-word line-clamp-10',\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n DialogPrimitive\n}\n"],"names":["Dialog","props","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","jsx","cn","DialogContent","children","showCloseButton","style","slotProps","rest","jsxs","ButtonIcon","XIcon","DialogHeader","DialogFooter","DialogTitle","DialogDescription"],"mappings":"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"}
1
+ {"version":3,"file":"Dialog.js","sources":["../../src/Dialog/Dialog.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\r\nimport { XIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@oneplatformdev/utils\"\r\nimport { ButtonIcon } from \"../ButtonIcon\";\r\n\r\nfunction Dialog({\r\n ...props\r\n }: React.ComponentProps<typeof DialogPrimitive.Root>) {\r\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\r\n}\r\n\r\nfunction DialogTrigger({\r\n ...props\r\n }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\r\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\r\n}\r\n\r\nfunction DialogPortal({\r\n ...props\r\n }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\r\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\r\n}\r\n\r\nfunction DialogClose({\r\n ...props\r\n }: React.ComponentProps<typeof DialogPrimitive.Close>) {\r\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\r\n}\r\n\r\nfunction DialogOverlay({\r\n className,\r\n ...props\r\n }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\r\n return (\r\n <DialogPrimitive.Overlay\r\n data-slot=\"dialog-overlay\"\r\n className={cn(\r\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction DialogContent(props: React.ComponentProps<typeof DialogPrimitive.Content> & {\r\n showCloseButton?: boolean;\r\n slotProps?: {\r\n overlay?: React.ComponentProps<typeof DialogPrimitive.Overlay>;\r\n }\r\n}) {\r\n const {\r\n className,\r\n children,\r\n showCloseButton = true,\r\n style,\r\n slotProps,\r\n ...rest\r\n } = props;\r\n return (\r\n <DialogPortal data-slot=\"dialog-portal\">\r\n <DialogOverlay {...slotProps?.overlay}>\r\n <DialogPrimitive.Content\r\n data-slot=\"dialog-content\"\r\n data-closable={JSON.stringify(showCloseButton)}\r\n className={cn(\r\n 'group group/content',\r\n 'fixed top-[50%] left-[50%] z-50 translate-x-[-50%] translate-y-[-50%]',\r\n 'flex flex-col w-full max-w-[calc(100%-2rem)] sm:max-w-2xl gap-3',\r\n 'max-h-[90%] overflow-auto overscroll-none',\r\n 'bg-background rounded-lg border shadow-lg duration-200 p-6',\r\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\r\n \"focus:outline-none focus-visible:outline-none focus:ring-0 focus-visible:ring-0 focus:ring-transparent\",\r\n 'outline-none focus:outline-none focus-visible:outline-none',\r\n className\r\n )}\r\n {...rest}\r\n style={{\r\n pointerEvents: 'auto',\r\n ...(style || {}),\r\n }}\r\n >\r\n {children}\r\n {showCloseButton && (\r\n <DialogPrimitive.Close\r\n data-slot=\"dialog-close\"\r\n className={cn(\r\n 'absolute top-6 right-6 rounded-2xl opacity-70 transition-opacity hover:opacity-100',\r\n 'data-[state=open]:bg-accent data-[state=open]:text-muted-foreground',\r\n 'ring-offset-background focus:ring-transparent focus:ring-0 focus:ring-offset-0 focus:outline-hidden',\r\n 'focus:outline-none focus:ring-0',\r\n 'disabled:pointer-events-none [&_svg]:pointer-events-none',\r\n '[&_svg]:shrink-0 [&_svg:not([class*=\"size-\"])]:size-5',\r\n 'cursor-pointer size-10 flex items-center justify-center',\r\n )}\r\n >\r\n <ButtonIcon\r\n variant='ghost'\r\n color='secondary'\r\n icon={XIcon}\r\n />\r\n <span className=\"sr-only\">Close</span>\r\n </DialogPrimitive.Close>\r\n )}\r\n </DialogPrimitive.Content>\r\n </DialogOverlay>\r\n </DialogPortal>\r\n )\r\n}\r\n\r\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"dialog-header\"\r\n className={cn(\"flex flex-col gap-4 justify-center text-center sm:text-left min-h-10\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"dialog-footer\"\r\n className={cn(\r\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end pt-4\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction DialogTitle(props: React.ComponentProps<typeof DialogPrimitive.Title>) {\r\n const {\r\n className,\r\n children,\r\n ...rest\r\n } = props;\r\n return (\r\n <DialogPrimitive.Title\r\n asChild\r\n data-slot=\"dialog-title\"\r\n className={cn(\r\n \"flex items-center min-h-10\",\r\n \"group-data-[closable='true']/content:pr-13\",\r\n className\r\n )}\r\n {...rest}\r\n >\r\n <span\r\n className={cn(\r\n \"text-lg leading-[1.2] font-bold text-[#06080D]\",\r\n 'whitespace-pre-wrap wrap-break-word line-clamp-10',\r\n )}\r\n >\r\n {children}\r\n </span>\r\n </DialogPrimitive.Title>\r\n )\r\n}\r\n\r\nfunction DialogDescription({\r\n className,\r\n ...props\r\n }: React.ComponentProps<typeof DialogPrimitive.Description>) {\r\n return (\r\n <DialogPrimitive.Description\r\n data-slot=\"dialog-description\"\r\n className={cn(\r\n \"text-[#06080D] font-medium text-base\",\r\n 'whitespace-pre-wrap wrap-break-word line-clamp-10',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport {\r\n Dialog,\r\n DialogClose,\r\n DialogContent,\r\n DialogDescription,\r\n DialogFooter,\r\n DialogHeader,\r\n DialogOverlay,\r\n DialogPortal,\r\n DialogTitle,\r\n DialogTrigger,\r\n DialogPrimitive\r\n}\r\n"],"names":["Dialog","props","DialogPrimitive","DialogTrigger","DialogPortal","DialogClose","DialogOverlay","className","jsx","cn","DialogContent","children","showCloseButton","style","slotProps","rest","jsxs","ButtonIcon","XIcon","DialogHeader","DialogFooter","DialogTitle","DialogDescription"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import { jsx as o, jsxs as e } from "react/jsx-runtime";
2
2
  import { Dialog as b, DialogTrigger as O, DialogContent as B, DialogHeader as v, DialogTitle as w, DialogDescription as T, DialogFooter as F, DialogClose as L } from "./Dialog.js";
3
- import { Button as l } from "../Button/Button.js";
4
- import "../Button/buttonVariants.js";
5
3
  import { useState as N, useCallback as S } from "react";
4
+ import { Button as l } from "../Button/Button.js";
6
5
  function I(p) {
7
6
  const {
8
7
  open: i,
@@ -42,7 +41,7 @@ function I(p) {
42
41
  ] })
43
42
  ] }) });
44
43
  }
45
- const W = {
44
+ const U = {
46
45
  title: "UI/Dialog",
47
46
  component: I,
48
47
  parameters: {
@@ -68,35 +67,35 @@ const W = {
68
67
  bodyText: "Some content inside dialog…",
69
68
  longBody: !1
70
69
  }
71
- }, _ = {}, q = {
70
+ }, W = {}, _ = {
72
71
  args: {
73
72
  description: ""
74
73
  }
75
- }, z = {
74
+ }, q = {
76
75
  args: {
77
76
  showCloseButton: !1
78
77
  }
79
- }, E = {
78
+ }, z = {
80
79
  args: {
81
80
  withFooter: !1
82
81
  }
83
- }, G = {
82
+ }, E = {
84
83
  args: {
85
84
  longBody: !0,
86
85
  bodyText: "Long text line"
87
86
  }
88
- }, J = {
87
+ }, G = {
89
88
  args: {
90
89
  initialOpen: !0
91
90
  }
92
91
  };
93
92
  export {
94
- _ as Default,
95
- J as InitiallyOpen,
96
- G as LongContentScrollable,
97
- z as NoCloseButton,
98
- E as NoFooter,
99
- q as WithoutDescription,
100
- W as default
93
+ W as Default,
94
+ G as InitiallyOpen,
95
+ E as LongContentScrollable,
96
+ q as NoCloseButton,
97
+ z as NoFooter,
98
+ _ as WithoutDescription,
99
+ U as default
101
100
  };
102
101
  //# sourceMappingURL=Dialog.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.stories.js","sources":["../../src/Dialog/Dialog.stories.tsx"],"sourcesContent":["import * as React from \"react\";\nimport type { Meta, StoryObj } from \"@storybook/react\";\n\nimport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n DialogClose,\n} from \"./Dialog\";\nimport { Button } from \"../Button\";\nimport { useCallback, useState } from \"react\";\nimport { DialogControlsProps } from \"./Dialog.types\";\n\ntype DialogDemoProps = DialogControlsProps & {\n title: string;\n description?: string;\n showCloseButton?: boolean;\n withFooter?: boolean;\n initialOpen?: boolean;\n triggerLabel?: string;\n bodyText?: string;\n longBody?: boolean;\n};\n\n// TODO: create cmp like alert\nfunction DialogDemo(props: DialogDemoProps) {\n const {\n open: controlledOpen,\n onOpenChange,\n title,\n description,\n showCloseButton = true,\n withFooter = true,\n initialOpen = false,\n triggerLabel = \"Open dialog\",\n bodyText = \"Some content inside dialog…\",\n longBody = false,\n } = props;\n\n const [ internalOpen, setInternalOpen ] = useState(initialOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n const setOpen = useCallback((next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n }, [ isControlled, onOpenChange ]);\n\n return (\n <div className=\"p-10\">\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger asChild>\n <Button variant='outlined'>\n {triggerLabel}\n </Button>\n </DialogTrigger>\n\n <DialogContent showCloseButton={showCloseButton}>\n <DialogHeader>\n <DialogTitle>{title} 123</DialogTitle>\n {description ? <DialogDescription>{description}</DialogDescription> : null}\n </DialogHeader>\n\n <div className={longBody ? \"max-h-[50vh] overflow-auto pr-1\" : undefined}>\n {longBody ? (\n <div className=\"space-y-3 text-sm leading-6\">\n {Array.from({ length: 30 }).map((_, i) => (\n <p key={i}>\n #{i + 1}. {bodyText} Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n </p>\n ))}\n </div>\n ) : (\n <p className=\"text-sm leading-6\">{bodyText}</p>\n )}\n </div>\n\n {withFooter ? (\n <DialogFooter>\n <DialogClose asChild>\n <Button color='secondary'>\n Cancel\n </Button>\n </DialogClose>\n\n <Button onClick={() => setOpen(false)}>\n Save\n </Button>\n </DialogFooter>\n ) : null}\n </DialogContent>\n </Dialog>\n </div>\n );\n}\n\nconst meta: Meta<typeof DialogDemo> = {\n title: \"UI/Dialog\",\n component: DialogDemo,\n parameters: {\n layout: \"fullscreen\",\n },\n argTypes: {\n title: { control: \"text\" },\n description: { control: \"text\" },\n showCloseButton: { control: \"boolean\" },\n withFooter: { control: \"boolean\" },\n initialOpen: { control: \"boolean\" },\n triggerLabel: { control: \"text\" },\n bodyText: { control: \"text\" },\n longBody: { control: \"boolean\" },\n },\n args: {\n title: \"Dialog title\",\n description: \"Dialog description\",\n showCloseButton: true,\n withFooter: true,\n initialOpen: false,\n triggerLabel: \"Open dialog\",\n bodyText: \"Some content inside dialog…\",\n longBody: false,\n },\n};\nexport default meta;\n\ntype Story = StoryObj<typeof DialogDemo>;\n\nexport const Default: Story = {};\n\nexport const WithoutDescription: Story = {\n args: {\n description: \"\",\n },\n};\n\nexport const NoCloseButton: Story = {\n args: {\n showCloseButton: false,\n },\n};\n\nexport const NoFooter: Story = {\n args: {\n withFooter: false,\n },\n};\n\nexport const LongContentScrollable: Story = {\n args: {\n longBody: true,\n bodyText: \"Long text line\",\n },\n};\n\nexport const InitiallyOpen: Story = {\n args: {\n initialOpen: true,\n },\n};\n"],"names":["DialogDemo","props","controlledOpen","onOpenChange","title","description","showCloseButton","withFooter","initialOpen","triggerLabel","bodyText","longBody","internalOpen","setInternalOpen","useState","isControlled","open","setOpen","useCallback","next","jsx","Dialog","DialogTrigger","Button","jsxs","DialogContent","DialogHeader","DialogTitle","DialogDescription","_","i","DialogFooter","DialogClose","meta","Default","WithoutDescription","NoCloseButton","NoFooter","LongContentScrollable","InitiallyOpen"],"mappings":"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"}
1
+ {"version":3,"file":"Dialog.stories.js","sources":["../../src/Dialog/Dialog.stories.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport type { Meta, StoryObj } from \"@storybook/react\";\r\n\r\nimport {\r\n Dialog,\r\n DialogTrigger,\r\n DialogContent,\r\n DialogHeader,\r\n DialogTitle,\r\n DialogDescription,\r\n DialogFooter,\r\n DialogClose,\r\n} from \"./Dialog\";\r\nimport { Button } from \"../Button\";\r\nimport { useCallback, useState } from \"react\";\r\nimport { DialogControlsProps } from \"./Dialog.types\";\r\n\r\ntype DialogDemoProps = DialogControlsProps & {\r\n title: string;\r\n description?: string;\r\n showCloseButton?: boolean;\r\n withFooter?: boolean;\r\n initialOpen?: boolean;\r\n triggerLabel?: string;\r\n bodyText?: string;\r\n longBody?: boolean;\r\n};\r\n\r\n// TODO: create cmp like alert\r\nfunction DialogDemo(props: DialogDemoProps) {\r\n const {\r\n open: controlledOpen,\r\n onOpenChange,\r\n title,\r\n description,\r\n showCloseButton = true,\r\n withFooter = true,\r\n initialOpen = false,\r\n triggerLabel = \"Open dialog\",\r\n bodyText = \"Some content inside dialog…\",\r\n longBody = false,\r\n } = props;\r\n\r\n const [ internalOpen, setInternalOpen ] = useState(initialOpen);\r\n const isControlled = controlledOpen !== undefined;\r\n const open = isControlled ? controlledOpen : internalOpen;\r\n const setOpen = useCallback((next: boolean) => {\r\n if (!isControlled) setInternalOpen(next);\r\n onOpenChange?.(next);\r\n }, [ isControlled, onOpenChange ]);\r\n\r\n return (\r\n <div className=\"p-10\">\r\n <Dialog open={open} onOpenChange={setOpen}>\r\n <DialogTrigger asChild>\r\n <Button variant='outlined'>\r\n {triggerLabel}\r\n </Button>\r\n </DialogTrigger>\r\n\r\n <DialogContent showCloseButton={showCloseButton}>\r\n <DialogHeader>\r\n <DialogTitle>{title} 123</DialogTitle>\r\n {description ? <DialogDescription>{description}</DialogDescription> : null}\r\n </DialogHeader>\r\n\r\n <div className={longBody ? \"max-h-[50vh] overflow-auto pr-1\" : undefined}>\r\n {longBody ? (\r\n <div className=\"space-y-3 text-sm leading-6\">\r\n {Array.from({ length: 30 }).map((_, i) => (\r\n <p key={i}>\r\n #{i + 1}. {bodyText} Lorem ipsum dolor sit amet, consectetur adipiscing elit.\r\n </p>\r\n ))}\r\n </div>\r\n ) : (\r\n <p className=\"text-sm leading-6\">{bodyText}</p>\r\n )}\r\n </div>\r\n\r\n {withFooter ? (\r\n <DialogFooter>\r\n <DialogClose asChild>\r\n <Button color='secondary'>\r\n Cancel\r\n </Button>\r\n </DialogClose>\r\n\r\n <Button onClick={() => setOpen(false)}>\r\n Save\r\n </Button>\r\n </DialogFooter>\r\n ) : null}\r\n </DialogContent>\r\n </Dialog>\r\n </div>\r\n );\r\n}\r\n\r\nconst meta: Meta<typeof DialogDemo> = {\r\n title: \"UI/Dialog\",\r\n component: DialogDemo,\r\n parameters: {\r\n layout: \"fullscreen\",\r\n },\r\n argTypes: {\r\n title: { control: \"text\" },\r\n description: { control: \"text\" },\r\n showCloseButton: { control: \"boolean\" },\r\n withFooter: { control: \"boolean\" },\r\n initialOpen: { control: \"boolean\" },\r\n triggerLabel: { control: \"text\" },\r\n bodyText: { control: \"text\" },\r\n longBody: { control: \"boolean\" },\r\n },\r\n args: {\r\n title: \"Dialog title\",\r\n description: \"Dialog description\",\r\n showCloseButton: true,\r\n withFooter: true,\r\n initialOpen: false,\r\n triggerLabel: \"Open dialog\",\r\n bodyText: \"Some content inside dialog…\",\r\n longBody: false,\r\n },\r\n};\r\nexport default meta;\r\n\r\ntype Story = StoryObj<typeof DialogDemo>;\r\n\r\nexport const Default: Story = {};\r\n\r\nexport const WithoutDescription: Story = {\r\n args: {\r\n description: \"\",\r\n },\r\n};\r\n\r\nexport const NoCloseButton: Story = {\r\n args: {\r\n showCloseButton: false,\r\n },\r\n};\r\n\r\nexport const NoFooter: Story = {\r\n args: {\r\n withFooter: false,\r\n },\r\n};\r\n\r\nexport const LongContentScrollable: Story = {\r\n args: {\r\n longBody: true,\r\n bodyText: \"Long text line\",\r\n },\r\n};\r\n\r\nexport const InitiallyOpen: Story = {\r\n args: {\r\n initialOpen: true,\r\n },\r\n};\r\n"],"names":["DialogDemo","props","controlledOpen","onOpenChange","title","description","showCloseButton","withFooter","initialOpen","triggerLabel","bodyText","longBody","internalOpen","setInternalOpen","useState","isControlled","open","setOpen","useCallback","next","jsx","Dialog","DialogTrigger","Button","jsxs","DialogContent","DialogHeader","DialogTitle","DialogDescription","_","i","DialogFooter","DialogClose","meta","Default","WithoutDescription","NoCloseButton","NoFooter","LongContentScrollable","InitiallyOpen"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DialogOverlayScope.js","sources":["../../src/Dialog/DialogOverlayScope.tsx"],"sourcesContent":["import { createContext, PropsWithChildren, useContext } from 'react';\n\nexport const DialogOverlayContainerContext = createContext<HTMLElement | null>(\n null\n);\nexport const useDialogOverlayContainer = () => useContext(DialogOverlayContainerContext);\n\ninterface IDialogOverlayScopeProps\n extends PropsWithChildren {\n value: HTMLElement | null;\n}\n\nexport const DialogOverlayScope = ({ value, children }: IDialogOverlayScopeProps) => {\n return (\n <DialogOverlayContainerContext.Provider value={value}>\n {children}\n </DialogOverlayContainerContext.Provider>\n );\n}\n"],"names":["DialogOverlayContainerContext","createContext","useDialogOverlayContainer","useContext","DialogOverlayScope","value","children","jsx"],"mappings":";;AAEO,MAAMA,IAAgCC;AAAA,EAC3C;AACF,GACaC,IAA4B,MAAMC,EAAWH,CAA6B,GAO1EI,IAAqB,CAAC,EAAE,OAAAC,GAAO,UAAAC,QAExC,gBAAAC,EAACP,EAA8B,UAA9B,EAAuC,OAAAK,GACrC,UAAAC,EAAA,CACH;"}
1
+ {"version":3,"file":"DialogOverlayScope.js","sources":["../../src/Dialog/DialogOverlayScope.tsx"],"sourcesContent":["import { createContext, PropsWithChildren, useContext } from 'react';\r\n\r\nexport const DialogOverlayContainerContext = createContext<HTMLElement | null>(\r\n null\r\n);\r\nexport const useDialogOverlayContainer = () => useContext(DialogOverlayContainerContext);\r\n\r\ninterface IDialogOverlayScopeProps\r\n extends PropsWithChildren {\r\n value: HTMLElement | null;\r\n}\r\n\r\nexport const DialogOverlayScope = ({ value, children }: IDialogOverlayScopeProps) => {\r\n return (\r\n <DialogOverlayContainerContext.Provider value={value}>\r\n {children}\r\n </DialogOverlayContainerContext.Provider>\r\n );\r\n}\r\n"],"names":["DialogOverlayContainerContext","createContext","useDialogOverlayContainer","useContext","DialogOverlayScope","value","children","jsx"],"mappings":";;AAEO,MAAMA,IAAgCC;AAAA,EAC3C;AACF,GACaC,IAA4B,MAAMC,EAAWH,CAA6B,GAO1EI,IAAqB,CAAC,EAAE,OAAAC,GAAO,UAAAC,QAExC,gBAAAC,EAACP,EAA8B,UAA9B,EAAuC,OAAAK,GACrC,UAAAC,EAAA,CACH;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Drawer.js","sources":["../../src/Drawer/Drawer.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"@oneplatformdev/utils\";\n\nconst Drawer = ({\n shouldScaleBackground = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n {...props}\n />\n)\nDrawer.displayName = \"Drawer\"\n\nconst DrawerTrigger = DrawerPrimitive.Trigger\n\nconst DrawerPortal = DrawerPrimitive.Portal\n\nconst DrawerClose = DrawerPrimitive.Close\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\n {...props}\n />\n))\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\n className\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n))\nDrawerContent.displayName = \"DrawerContent\"\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n)\nDrawerHeader.displayName = \"DrawerHeader\"\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n)\nDrawerFooter.displayName = \"DrawerFooter\"\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n"],"names":["Drawer","shouldScaleBackground","props","jsx","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","React","className","ref","cn","DrawerContent","children","jsxs","DrawerHeader","DrawerFooter","DrawerTitle","DrawerDescription"],"mappings":";;;;AAOA,MAAMA,IAAS,CAAC;AAAA,EACd,uBAAAC,IAAwB;AAAA,EACxB,GAAGC;AACL,MACE,gBAAAC;AAAA,EAACC,EAAgB;AAAA,EAAhB;AAAA,IACC,uBAAAH;AAAA,IACC,GAAGC;AAAA,EAAA;AACN;AAEFF,EAAO,cAAc;AAErB,MAAMK,IAAgBD,EAAgB,SAEhCE,IAAeF,EAAgB,QAE/BG,IAAcH,EAAgB,OAE9BI,IAAgBC,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGR,EAAA,GAASS,MAC1B,gBAAAR;AAAA,EAACC,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAO;AAAA,IACA,WAAWC,EAAG,kCAAkCF,CAAS;AAAA,IACxD,GAAGR;AAAA,EAAA;AACN,CACD;AACDM,EAAc,cAAcJ,EAAgB,QAAQ;AAEpD,MAAMS,IAAgBJ,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,UAAAI,GAAU,GAAGZ,EAAA,GAASS,MACpC,gBAAAI,EAACT,GAAA,EACC,UAAA;AAAA,EAAA,gBAAAH,EAACK,GAAA,EAAc;AAAA,EACf,gBAAAO;AAAA,IAACX,EAAgB;AAAA,IAAhB;AAAA,MACC,KAAAO;AAAA,MACA,WAAWC;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGR;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,mDAAA,CAAmD;AAAA,QACjEW;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AACH,GACF,CACD;AACDD,EAAc,cAAc;AAE5B,MAAMG,IAAe,CAAC;AAAA,EACpB,WAAAN;AAAA,EACA,GAAGR;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWS,EAAG,6CAA6CF,CAAS;AAAA,IACnE,GAAGR;AAAA,EAAA;AACN;AAEFc,EAAa,cAAc;AAE3B,MAAMC,IAAe,CAAC;AAAA,EACpB,WAAAP;AAAA,EACA,GAAGR;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWS,EAAG,mCAAmCF,CAAS;AAAA,IACzD,GAAGR;AAAA,EAAA;AACN;AAEFe,EAAa,cAAc;AAE3B,MAAMC,IAAcT,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGR,EAAA,GAASS,MAC1B,gBAAAR;AAAA,EAACC,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAO;AAAA,IACA,WAAWC;AAAA,MACT;AAAA,MACAF;AAAA,IAAA;AAAA,IAED,GAAGR;AAAA,EAAA;AACN,CACD;AACDgB,EAAY,cAAcd,EAAgB,MAAM;AAEhD,MAAMe,IAAoBV,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,GAAGR,EAAA,GAASS,MAC1B,gBAAAR;AAAA,EAACC,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAO;AAAA,IACA,WAAWC,EAAG,iCAAiCF,CAAS;AAAA,IACvD,GAAGR;AAAA,EAAA;AACN,CACD;AACDiB,EAAkB,cAAcf,EAAgB,YAAY;"}
1
+ {"version":3,"file":"Drawer.js","sources":["../../src/Drawer/Drawer.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { Drawer as DrawerPrimitive } from \"vaul\"\r\n\r\nimport { cn } from \"@oneplatformdev/utils\";\r\n\r\nconst Drawer = ({\r\n shouldScaleBackground = true,\r\n ...props\r\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\r\n <DrawerPrimitive.Root\r\n shouldScaleBackground={shouldScaleBackground}\r\n {...props}\r\n />\r\n)\r\nDrawer.displayName = \"Drawer\"\r\n\r\nconst DrawerTrigger = DrawerPrimitive.Trigger\r\n\r\nconst DrawerPortal = DrawerPrimitive.Portal\r\n\r\nconst DrawerClose = DrawerPrimitive.Close\r\n\r\nconst DrawerOverlay = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Overlay\r\n ref={ref}\r\n className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\r\n {...props}\r\n />\r\n))\r\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\r\n\r\nconst DrawerContent = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Content>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\r\n>(({ className, children, ...props }, ref) => (\r\n <DrawerPortal>\r\n <DrawerOverlay />\r\n <DrawerPrimitive.Content\r\n ref={ref}\r\n className={cn(\r\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\r\n {children}\r\n </DrawerPrimitive.Content>\r\n </DrawerPortal>\r\n))\r\nDrawerContent.displayName = \"DrawerContent\"\r\n\r\nconst DrawerHeader = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\r\n {...props}\r\n />\r\n)\r\nDrawerHeader.displayName = \"DrawerHeader\"\r\n\r\nconst DrawerFooter = ({\r\n className,\r\n ...props\r\n}: React.HTMLAttributes<HTMLDivElement>) => (\r\n <div\r\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\r\n {...props}\r\n />\r\n)\r\nDrawerFooter.displayName = \"DrawerFooter\"\r\n\r\nconst DrawerTitle = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Title>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Title\r\n ref={ref}\r\n className={cn(\r\n \"text-lg font-semibold leading-none tracking-tight\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n))\r\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\r\n\r\nconst DrawerDescription = React.forwardRef<\r\n React.ElementRef<typeof DrawerPrimitive.Description>,\r\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\r\n>(({ className, ...props }, ref) => (\r\n <DrawerPrimitive.Description\r\n ref={ref}\r\n className={cn(\"text-sm text-muted-foreground\", className)}\r\n {...props}\r\n />\r\n))\r\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\r\n\r\nexport {\r\n Drawer,\r\n DrawerPortal,\r\n DrawerOverlay,\r\n DrawerTrigger,\r\n DrawerClose,\r\n DrawerContent,\r\n DrawerHeader,\r\n DrawerFooter,\r\n DrawerTitle,\r\n DrawerDescription,\r\n}\r\n"],"names":["Drawer","shouldScaleBackground","props","jsx","DrawerPrimitive","DrawerTrigger","DrawerPortal","DrawerClose","DrawerOverlay","React","className","ref","cn","DrawerContent","children","jsxs","DrawerHeader","DrawerFooter","DrawerTitle","DrawerDescription"],"mappings":";;;;AAOA,MAAMA,IAAS,CAAC;AAAA,EACd,uBAAAC,IAAwB;AAAA,EACxB,GAAGC;AACL,MACE,gBAAAC;AAAA,EAACC,EAAgB;AAAA,EAAhB;AAAA,IACC,uBAAAH;AAAA,IACC,GAAGC;AAAA,EAAA;AACN;AAEFF,EAAO,cAAc;AAErB,MAAMK,IAAgBD,EAAgB,SAEhCE,IAAeF,EAAgB,QAE/BG,IAAcH,EAAgB,OAE9BI,IAAgBC,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,GAAGR,EAAA,GAASS,MAC1B,gBAAAR;AAAA,EAACC,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAO;AAAA,IACA,WAAWC,EAAG,kCAAkCF,CAAS;AAAA,IACxD,GAAGR;AAAA,EAAA;AACN,CACD;AACDM,EAAc,cAAcJ,EAAgB,QAAQ;AAEpD,MAAMS,IAAgBJ,EAAM,WAG1B,CAAC,EAAE,WAAAC,GAAW,UAAAI,GAAU,GAAGZ,EAAA,GAASS,MACpC,gBAAAI,EAACT,GAAA,EACC,UAAA;AAAA,EAAA,gBAAAH,EAACK,GAAA,EAAc;AAAA,EACf,gBAAAO;AAAA,IAACX,EAAgB;AAAA,IAAhB;AAAA,MACC,KAAAO;AAAA,MACA,WAAWC;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGR;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,mDAAA,CAAmD;AAAA,QACjEW;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AACH,GACF,CACD;AACDD,EAAc,cAAc;AAE5B,MAAMG,IAAe,CAAC;AAAA,EACpB,WAAAN;AAAA,EACA,GAAGR;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWS,EAAG,6CAA6CF,CAAS;AAAA,IACnE,GAAGR;AAAA,EAAA;AACN;AAEFc,EAAa,cAAc;AAE3B,MAAMC,IAAe,CAAC;AAAA,EACpB,WAAAP;AAAA,EACA,GAAGR;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWS,EAAG,mCAAmCF,CAAS;AAAA,IACzD,GAAGR;AAAA,EAAA;AACN;AAEFe,EAAa,cAAc;AAE3B,MAAMC,IAAcT,EAAM,WAGxB,CAAC,EAAE,WAAAC,GAAW,GAAGR,EAAA,GAASS,MAC1B,gBAAAR;AAAA,EAACC,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAO;AAAA,IACA,WAAWC;AAAA,MACT;AAAA,MACAF;AAAA,IAAA;AAAA,IAED,GAAGR;AAAA,EAAA;AACN,CACD;AACDgB,EAAY,cAAcd,EAAgB,MAAM;AAEhD,MAAMe,IAAoBV,EAAM,WAG9B,CAAC,EAAE,WAAAC,GAAW,GAAGR,EAAA,GAASS,MAC1B,gBAAAR;AAAA,EAACC,EAAgB;AAAA,EAAhB;AAAA,IACC,KAAAO;AAAA,IACA,WAAWC,EAAG,iCAAiCF,CAAS;AAAA,IACvD,GAAGR;AAAA,EAAA;AACN,CACD;AACDiB,EAAkB,cAAcf,EAAgB,YAAY;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownMenu.js","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"@oneplatformdev/utils\"\n\nfunction DropdownMenu({\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return (\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n )\n}\n\nfunction DropdownMenuTrigger({\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return (\n <DropdownMenuPrimitive.Trigger\n data-slot=\"dropdown-menu-trigger\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n className={cn(\n 'rounded-lg border border-[#EBEBEB] p-1',\n \"bg-[#FCFCFC] shadow-[1px_1px_10px_rgba(6,8,13,0.06)]\",\n 'text-sm text-[#06080D] font-medium leading-[1.25]',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50',\n 'max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin)',\n 'overflow-x-hidden overflow-y-auto',\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return (\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n 'relative flex items-center gap-1 rounded-md p-1',\n 'text-sm text-[#06080D] font-medium leading-[1.25]',\n \"[&_svg:not([class*='text-'])]:text-[#06080D]\",\n 'outline-hidden select-none',\n 'focus:bg-accent focus:text-accent-foreground ',\n \"data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive\",\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6\",\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8',\n 'cursor-pointer',\n className\n )}\n {...props}\n />\n )\n}\n\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return (\n <DropdownMenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto size-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n }: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n DropdownMenuPrimitive\n}\n"],"names":["DropdownMenu","props","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","jsx","DropdownMenuContent","className","sideOffset","cn","DropdownMenuGroup","DropdownMenuItem","inset","variant","DropdownMenuCheckboxItem","children","checked","jsxs","CheckIcon","DropdownMenuRadioGroup","DropdownMenuRadioItem","CircleIcon","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","ChevronRightIcon","DropdownMenuSubContent"],"mappings":"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"}
1
+ {"version":3,"file":"DropdownMenu.js","sources":["../../src/DropdownMenu/DropdownMenu.tsx"],"sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\r\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@oneplatformdev/utils\"\r\n\r\nfunction DropdownMenu({\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\r\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\r\n}\r\n\r\nfunction DropdownMenuPortal({\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\r\n return (\r\n <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\r\n )\r\n}\r\n\r\nfunction DropdownMenuTrigger({\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\r\n return (\r\n <DropdownMenuPrimitive.Trigger\r\n data-slot=\"dropdown-menu-trigger\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction DropdownMenuContent({\r\n className,\r\n sideOffset = 4,\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\r\n return (\r\n <DropdownMenuPrimitive.Portal>\r\n <DropdownMenuPrimitive.Content\r\n data-slot=\"dropdown-menu-content\"\r\n sideOffset={sideOffset}\r\n className={cn(\r\n 'rounded-lg border border-[#EBEBEB] p-1',\r\n \"bg-[#FCFCFC] shadow-[1px_1px_10px_rgba(6,8,13,0.06)]\",\r\n 'text-sm text-[#06080D] font-medium leading-[1.25]',\r\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50',\r\n 'max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin)',\r\n 'overflow-x-hidden overflow-y-auto',\r\n className\r\n )}\r\n {...props}\r\n />\r\n </DropdownMenuPrimitive.Portal>\r\n )\r\n}\r\n\r\nfunction DropdownMenuGroup({\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\r\n return (\r\n <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\r\n )\r\n}\r\n\r\nfunction DropdownMenuItem({\r\n className,\r\n inset,\r\n variant = \"default\",\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\r\n inset?: boolean\r\n variant?: \"default\" | \"destructive\"\r\n}) {\r\n return (\r\n <DropdownMenuPrimitive.Item\r\n data-slot=\"dropdown-menu-item\"\r\n data-inset={inset}\r\n data-variant={variant}\r\n className={cn(\r\n 'relative flex items-center gap-1 rounded-md p-1',\r\n 'text-sm text-[#06080D] font-medium leading-[1.25]',\r\n \"[&_svg:not([class*='text-'])]:text-[#06080D]\",\r\n 'outline-hidden select-none',\r\n 'focus:bg-accent focus:text-accent-foreground ',\r\n \"data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive\",\r\n \"[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-6\",\r\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8',\r\n 'cursor-pointer',\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\n\r\nfunction DropdownMenuCheckboxItem({\r\n className,\r\n children,\r\n checked,\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\r\n return (\r\n <DropdownMenuPrimitive.CheckboxItem\r\n data-slot=\"dropdown-menu-checkbox-item\"\r\n className={cn(\r\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\r\n className\r\n )}\r\n checked={checked}\r\n {...props}\r\n >\r\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <CheckIcon className=\"size-4\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.CheckboxItem>\r\n )\r\n}\r\n\r\nfunction DropdownMenuRadioGroup({\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\r\n return (\r\n <DropdownMenuPrimitive.RadioGroup\r\n data-slot=\"dropdown-menu-radio-group\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction DropdownMenuRadioItem({\r\n className,\r\n children,\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\r\n return (\r\n <DropdownMenuPrimitive.RadioItem\r\n data-slot=\"dropdown-menu-radio-item\"\r\n className={cn(\r\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\r\n <DropdownMenuPrimitive.ItemIndicator>\r\n <CircleIcon className=\"size-2 fill-current\" />\r\n </DropdownMenuPrimitive.ItemIndicator>\r\n </span>\r\n {children}\r\n </DropdownMenuPrimitive.RadioItem>\r\n )\r\n}\r\n\r\nfunction DropdownMenuLabel({\r\n className,\r\n inset,\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\r\n inset?: boolean\r\n}) {\r\n return (\r\n <DropdownMenuPrimitive.Label\r\n data-slot=\"dropdown-menu-label\"\r\n data-inset={inset}\r\n className={cn(\r\n \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction DropdownMenuSeparator({\r\n className,\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\r\n return (\r\n <DropdownMenuPrimitive.Separator\r\n data-slot=\"dropdown-menu-separator\"\r\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction DropdownMenuShortcut({\r\n className,\r\n ...props\r\n }: React.ComponentProps<\"span\">) {\r\n return (\r\n <span\r\n data-slot=\"dropdown-menu-shortcut\"\r\n className={cn(\r\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction DropdownMenuSub({\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\r\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\r\n}\r\n\r\nfunction DropdownMenuSubTrigger({\r\n className,\r\n inset,\r\n children,\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\r\n inset?: boolean\r\n}) {\r\n return (\r\n <DropdownMenuPrimitive.SubTrigger\r\n data-slot=\"dropdown-menu-sub-trigger\"\r\n data-inset={inset}\r\n className={cn(\r\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ChevronRightIcon className=\"ml-auto size-4\" />\r\n </DropdownMenuPrimitive.SubTrigger>\r\n )\r\n}\r\n\r\nfunction DropdownMenuSubContent({\r\n className,\r\n ...props\r\n }: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\r\n return (\r\n <DropdownMenuPrimitive.SubContent\r\n data-slot=\"dropdown-menu-sub-content\"\r\n className={cn(\r\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport {\r\n DropdownMenu,\r\n DropdownMenuPortal,\r\n DropdownMenuTrigger,\r\n DropdownMenuContent,\r\n DropdownMenuGroup,\r\n DropdownMenuLabel,\r\n DropdownMenuItem,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuRadioGroup,\r\n DropdownMenuRadioItem,\r\n DropdownMenuSeparator,\r\n DropdownMenuShortcut,\r\n DropdownMenuSub,\r\n DropdownMenuSubTrigger,\r\n DropdownMenuSubContent,\r\n DropdownMenuPrimitive\r\n}\r\n"],"names":["DropdownMenu","props","DropdownMenuPrimitive","DropdownMenuPortal","DropdownMenuTrigger","jsx","DropdownMenuContent","className","sideOffset","cn","DropdownMenuGroup","DropdownMenuItem","inset","variant","DropdownMenuCheckboxItem","children","checked","jsxs","CheckIcon","DropdownMenuRadioGroup","DropdownMenuRadioItem","CircleIcon","DropdownMenuLabel","DropdownMenuSeparator","DropdownMenuShortcut","DropdownMenuSub","DropdownMenuSubTrigger","ChevronRightIcon","DropdownMenuSubContent"],"mappings":";;;;AAQA,SAASA,EAAa;AAAA,EACE,GAAGC;AACL,GAA4D;AAChF,2BAAQC,EAAsB,MAAtB,EAA2B,aAAU,iBAAiB,GAAGD,GAAO;AAC1E;AAEA,SAASE,EAAmB;AAAA,EACE,GAAGF;AACL,GAA8D;AACxF,2BACGC,EAAsB,QAAtB,EAA6B,aAAU,wBAAwB,GAAGD,GAAO;AAE9E;AAEA,SAASG,EAAoB;AAAA,EACE,GAAGH;AACL,GAA+D;AAC1F,SACE,gBAAAI;AAAA,IAACH,EAAsB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACT,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASK,EAAoB;AAAA,EACE,WAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,GAAGP;AACL,GAA+D;AAC1F,SACE,gBAAAI,EAACH,EAAsB,QAAtB,EACC,UAAA,gBAAAG;AAAA,IAACH,EAAsB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,YAAAM;AAAA,MACA,WAAWC;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGN;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;AAEA,SAASS,EAAkB;AAAA,EACE,GAAGT;AACL,GAA6D;AACtF,2BACGC,EAAsB,OAAtB,EAA4B,aAAU,uBAAuB,GAAGD,GAAO;AAE5E;AAEA,SAASU,EAAiB;AAAA,EACE,WAAAJ;AAAA,EACA,OAAAK;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,GAAGZ;AACL,GAGvB;AACD,SACE,gBAAAI;AAAA,IAACH,EAAsB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,cAAYU;AAAA,MACZ,gBAAcC;AAAA,MACd,WAAWJ;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;AAGA,SAASa,EAAyB;AAAA,EACE,WAAAP;AAAA,EACA,UAAAQ;AAAA,EACA,SAAAC;AAAA,EACA,GAAGf;AACL,GAAoE;AACpG,SACE,gBAAAgB;AAAA,IAACf,EAAsB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,WAAWO;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAEF,SAAAS;AAAA,MACC,GAAGf;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAI,EAAC,QAAA,EAAK,WAAU,iFACd,UAAA,gBAAAA,EAACH,EAAsB,eAAtB,EACC,UAAA,gBAAAG,EAACa,GAAA,EAAU,WAAU,SAAA,CAAS,EAAA,CAChC,GACF;AAAA,QACCH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAASI,EAAuB;AAAA,EACE,GAAGlB;AACL,GAAkE;AAChG,SACE,gBAAAI;AAAA,IAACH,EAAsB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACT,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASmB,EAAsB;AAAA,EACE,WAAAb;AAAA,EACA,UAAAQ;AAAA,EACA,GAAGd;AACL,GAAiE;AAC9F,SACE,gBAAAgB;AAAA,IAACf,EAAsB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,WAAWO;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGN;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAI,EAAC,QAAA,EAAK,WAAU,iFACd,UAAA,gBAAAA,EAACH,EAAsB,eAAtB,EACC,UAAA,gBAAAG,EAACgB,GAAA,EAAW,WAAU,sBAAA,CAAsB,EAAA,CAC9C,GACF;AAAA,QACCN;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;AAEA,SAASO,EAAkB;AAAA,EACE,WAAAf;AAAA,EACA,OAAAK;AAAA,EACA,GAAGX;AACL,GAExB;AACD,SACE,gBAAAI;AAAA,IAACH,EAAsB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,cAAYU;AAAA,MACZ,WAAWH;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASsB,EAAsB;AAAA,EACE,WAAAhB;AAAA,EACA,GAAGN;AACL,GAAiE;AAC9F,SACE,gBAAAI;AAAA,IAACH,EAAsB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,WAAWO,EAAG,6BAA6BF,CAAS;AAAA,MACnD,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASuB,EAAqB;AAAA,EACE,WAAAjB;AAAA,EACA,GAAGN;AACL,GAAiC;AAC7D,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWI;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASwB,EAAgB;AAAA,EACE,GAAGxB;AACL,GAA2D;AAClF,2BAAQC,EAAsB,KAAtB,EAA0B,aAAU,qBAAqB,GAAGD,GAAO;AAC7E;AAEA,SAASyB,EAAuB;AAAA,EACE,WAAAnB;AAAA,EACA,OAAAK;AAAA,EACA,UAAAG;AAAA,EACA,GAAGd;AACL,GAE7B;AACD,SACE,gBAAAgB;AAAA,IAACf,EAAsB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,cAAYU;AAAA,MACZ,WAAWH;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGN;AAAA,MAEH,UAAA;AAAA,QAAAc;AAAA,QACD,gBAAAV,EAACsB,GAAA,EAAiB,WAAU,iBAAA,CAAiB;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGnD;AAEA,SAASC,EAAuB;AAAA,EACE,WAAArB;AAAA,EACA,GAAGN;AACL,GAAkE;AAChG,SACE,gBAAAI;AAAA,IAACH,EAAsB;AAAA,IAAtB;AAAA,MACC,aAAU;AAAA,MACV,WAAWO;AAAA,QACT;AAAA,QACAF;AAAA,MAAA;AAAA,MAED,GAAGN;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1 +1 @@
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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"}
1
+ {"version":3,"file":"Dropzone.js","sources":["../../src/Dropzone/Dropzone.tsx"],"sourcesContent":["import { FileDownIcon, X } from 'lucide-react';\r\nimport { forwardRef, useImperativeHandle, useState } from 'react';\r\nimport { FileRejection, useDropzone } from 'react-dropzone';\r\n\r\nimport { cn } from '@oneplatformdev/utils';\r\n\r\nimport { Card } from '../Card/Card';\r\n\r\nimport {\r\n DEFAULT_FILE_TYPES,\r\n DropzoneControl,\r\n DropzoneProps,\r\n DropzoneValueItem\r\n} from './Dropzone.types';\r\nimport { FilePreview } from './DropzoneFilePreview';\r\nimport { DropzoneSinglePickPreview } from './DropzoneSinglePickPreview';\r\nimport { DefaultFileIcon, extractName, isFile } from './DropzoneUtils';\r\n\r\n/**\r\n * Dropzone component - A drag-and-drop file upload area with image previews, error handling, and localization.\r\n *\r\n * @component\r\n * @param {DropzoneProps} props - The props for the Dropzone component.\r\n * @param {string[]} [props.acceptTypes=DEFAULT_FILE_TYPES] - Allowed file MIME types.\r\n * @param {number} props.maxSizeMB - Maximum allowed file size in megabytes.\r\n * @param {number} [props.maxFiles=1] - Maximum number of files that can be uploaded.\r\n * @param {DropzoneTranslations} props.translations - Translations for text labels.\r\n * @param {(errors: FileRejection[]) => void} [props.onErrors] - Callback triggered when file errors occur.\r\n * @param {boolean} [props.hideErrors=false] - Whether to hide error messages.\r\n * @param {boolean} [props.disabled=false] - Whether the dropzone is disabled.\r\n * @param {DropzoneStyles} [props.classNames] - Custom classNames for different dropzone states.\r\n * @param {DropzoneValueItem[]} [props.value=[]] - Current selected files or URLs.\r\n * @param {(items: DropzoneValueItem[]) => void} [props.onChangeValue] - Callback triggered when file selection changes.\r\n * @param {string} [props.className] - Additional class names for styling.\r\n * @param {React.Ref<HTMLDivElement>} ref - Ref for the root dropzone container.\r\n * @returns {JSX.Element} The rendered Dropzone component.\r\n */\r\nexport const Dropzone = forwardRef<DropzoneControl, DropzoneProps>(\r\n (\r\n {\r\n acceptTypes = DEFAULT_FILE_TYPES,\r\n maxSizeMB,\r\n maxFiles = 1,\r\n onErrors,\r\n hideErrors = false,\r\n disabled = false,\r\n classNames,\r\n value = [],\r\n onChangeValue,\r\n className,\r\n labelDropzonePrompt = 'Drop files here or click to select',\r\n labelDropzoneSubPrompt = '',\r\n labelOrClickToSelect = 'Click to select files',\r\n labelSelectedFiles = 'Selected Files',\r\n labelUploadErrors = 'Upload Errors',\r\n labelFileTooLarge = 'File is too large',\r\n labelInvalidFileType = 'Invalid file type',\r\n singlePick = false,\r\n labelDropzoneClassname,\r\n labelDropzoneSubClassname,\r\n ...restProps\r\n },\r\n ref\r\n ) => {\r\n const [items, setItems] = useState<DropzoneValueItem[]>(value);\r\n const [fileErrors, setFileErrors] = useState<FileRejection[]>([]);\r\n\r\n const onDrop = (acceptedFiles: File[], fileRejections: FileRejection[]) => {\r\n setFileErrors(fileRejections);\r\n onErrors?.(fileRejections);\r\n\r\n const newItems = singlePick\r\n ? acceptedFiles.slice(0, 1)\r\n : [...items, ...acceptedFiles].slice(0, maxFiles);\r\n\r\n setItems(newItems);\r\n onChangeValue?.(newItems);\r\n };\r\n\r\n const removeItem = (\r\n event: React.MouseEvent<HTMLDivElement>,\r\n index: number\r\n ) => {\r\n if (disabled) return;\r\n event.stopPropagation();\r\n\r\n const newItems = items.filter((_, i) => i !== index);\r\n setItems(newItems);\r\n onChangeValue?.(newItems);\r\n };\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n accept: acceptTypes.reduce((acc, fileType) => {\r\n acc[fileType] = [];\r\n return acc;\r\n }, {} as Record<string, string[]>),\r\n maxSize: maxSizeMB * 1024 * 1024,\r\n maxFiles: singlePick ? 1 : maxFiles,\r\n disabled,\r\n });\r\n\r\n useImperativeHandle(ref, () => {\r\n return {\r\n setItems,\r\n };\r\n }, []);\r\n\r\n\r\n return (\r\n <Card\r\n {...getRootProps()}\r\n {...restProps}\r\n className={cn(\r\n `border-dashed p-2 text-center flex flex-col items-center justify-center cursor-pointer`,\r\n disabled && 'border-[#E4E4E7] pointer-events-none',\r\n fileErrors.length > 0 ? 'border-red-500' : 'border-[#E4E4E7]!',\r\n isDragActive && 'bg-gray-100',\r\n singlePick && 'shadow-none!',\r\n singlePick && items.length > 0 && 'p-0! shadow-none!',\r\n className\r\n )}\r\n >\r\n <input {...getInputProps()} />\r\n\r\n {items.length === 0 && fileErrors.length === 0 && (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center',\r\n classNames?.idleWrapper\r\n )}\r\n >\r\n <FileDownIcon className=\"mb-4\" />\r\n\r\n <div className=\"flex flex-col items-center gap-1\">\r\n {!disabled && (\r\n <>\r\n <span\r\n className={cn(\r\n \"font-medium text-base text-foreground max-w-[264px]\",\r\n labelDropzoneClassname\r\n )}\r\n >\r\n {labelDropzonePrompt}\r\n </span>\r\n\r\n <span\r\n className={cn(\r\n \"font-normal text-sm text-foreground max-w-[264px]\",\r\n labelDropzoneSubClassname\r\n )}\r\n >\r\n {labelDropzoneSubPrompt}\r\n </span>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {fileErrors.length > 0 && (\r\n <div className={cn('w-full mt-4', classNames?.errorWrapper)}>\r\n <span className=\"font-semibold text-red-500\">\r\n {labelUploadErrors}:\r\n </span>\r\n <ul className=\"mt-2 text-sm text-red-500 list-disc list-inside\">\r\n {fileErrors.map((fileRejection, index) => (\r\n <li key={index}>\r\n {fileRejection.file.name} (\r\n {(fileRejection.file.size / (1024 * 1024)).toFixed(2)} MB)\r\n {!hideErrors && (\r\n <ul className=\"ml-4 list-disc list-inside\">\r\n {fileRejection.errors.map((error, errorIndex) => (\r\n <li key={errorIndex}>\r\n {error.code === 'file-too-large' && labelFileTooLarge}\r\n {error.code === 'file-invalid-type' &&\r\n labelInvalidFileType}\r\n {error.code !== 'file-too-large' &&\r\n error.code !== 'file-invalid-type' &&\r\n error.message}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {Boolean(singlePick && items.length) && (\r\n <DropzoneSinglePickPreview\r\n item={items[0]}\r\n onRemoveClick={(e) => removeItem(e, 0)}\r\n disabled={disabled}\r\n />\r\n )}\r\n\r\n {!singlePick && items.length > 0 && (\r\n <div className={cn('w-full mt-2', classNames?.previewWrapper)}>\r\n <pre className=\"font-semibold text-gray-600\">\r\n {labelSelectedFiles}:\r\n </pre>\r\n <ul className=\"mt-2 text-sm text-gray-500 flex flex-wrap gap-4 items-start justify-center\">\r\n {items.map((item, index) => {\r\n const fileName = isFile(item) ? item.name : extractName(item);\r\n const fileSize = isFile(item)\r\n ? (item.size / (1024 * 1024)).toFixed(2) + ' MB'\r\n : '';\r\n\r\n return (\r\n <li\r\n key={index}\r\n className=\"flex flex-col items-center gap-2 relative\"\r\n >\r\n <div className=\"relative\">\r\n <FilePreview item={item} styles={classNames} />\r\n <div\r\n className=\"absolute top-0 right-0 cursor-pointer bg-gray-300 rounded-sm\"\r\n onClick={(event) => removeItem(event, index)}\r\n >\r\n <X size={16} strokeWidth={1} color=\"black\" />\r\n </div>\r\n </div>\r\n <span className=\"inline-flex flex-col items-center\">\r\n <span className=\"max-w-[80px] text-ellipsis overflow-hidden whitespace-nowrap\">\r\n {fileName}\r\n </span>\r\n {fileSize && <span>({fileSize})</span>}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n )}\r\n </Card>\r\n );\r\n }\r\n);\r\n\r\nDropzone.displayName = 'Dropzone';\r\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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"}
@@ -1 +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
+ {"version":3,"file":"Dropzone.stories.js","sources":["../../src/Dropzone/Dropzone.stories.tsx"],"sourcesContent":["import React, { useState } from 'react';\r\nimport type { Meta, StoryObj } from '@storybook/react';\r\n\r\nimport { Dropzone } from './Dropzone';\r\n\r\ntype ControlledProps = React.ComponentProps<typeof Dropzone> & {\r\n initialValue?: string[];\r\n};\r\n\r\nfunction ControlledDropzone({ initialValue = [], ...args }: ControlledProps) {\r\n const [value, setValue] = useState<string[]>(initialValue);\r\n\r\n return (\r\n <div className=\"max-w-md space-y-3 h-58\">\r\n <Dropzone {...args} value={value} />\r\n\r\n <div className=\"text-xs text-muted-foreground\">\r\n value:\r\n <pre className=\"mt-1 text-[11px] bg-muted p-2 rounded\">\r\n {JSON.stringify(value, null, 2)}\r\n </pre>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nconst meta = {\r\n title: 'Dropzone',\r\n component: Dropzone,\r\n parameters: {\r\n layout: 'centered',\r\n },\r\n args: {\r\n labelDropzonePrompt: 'Завантажте або перетягніть',\r\n labelSelectedFiles: 'Selected files',\r\n labelFileTooLarge: 'File is too large',\r\n labelDropzoneSubPrompt: \"Підтримуються файли до 5МБ у форматі .jpg .jpeg .png .webp .heic \",\r\n maxFiles: 1,\r\n maxSizeMB: 10,\r\n acceptTypes: [\"image/jpeg\", \"image/png\", \"image/webp\"],\r\n singlePick: true,\r\n className: 'w-full p-0 rounded-[8px] bg-[#F5F5F5] h-[180px] max-h-[180px]'\r\n },\r\n argTypes: {\r\n onChangeValue: { control: false },\r\n value: { control: false },\r\n },\r\n decorators: [\r\n (Story) => (\r\n <div className=\"p-6 w-[420px]\">\r\n <Story />\r\n </div>\r\n ),\r\n ],\r\n} satisfies Meta<typeof Dropzone>;\r\n\r\nexport default meta;\r\n\r\ntype Story = StoryObj<typeof meta>;\r\n\r\n//\r\n// 1️⃣ Default single image\r\n//\r\nexport const Default: Story = {\r\n render: (args) => <ControlledDropzone {...args} />,\r\n};\r\n\r\n//\r\n// 2️⃣ With initial image\r\n//\r\nexport const WithInitialValue: Story = {\r\n render: (args) => (\r\n <ControlledDropzone\r\n {...args}\r\n initialValue={[\r\n 'https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d?w=400',\r\n ]}\r\n />\r\n ),\r\n};\r\n\r\n//\r\n// 3️⃣ Multiple files\r\n//\r\nexport const MultipleFiles: Story = {\r\n args: {\r\n maxFiles: 5,\r\n singlePick: false,\r\n },\r\n render: (args) => <ControlledDropzone {...args} />,\r\n};\r\n\r\n//\r\n// 4️⃣ Disabled\r\n//\r\nexport const Disabled: Story = {\r\n args: {\r\n disabled: true,\r\n },\r\n render: (args) => (\r\n <ControlledDropzone\r\n {...args}\r\n initialValue={[\r\n 'https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d?w=400',\r\n ]}\r\n />\r\n ),\r\n};\r\n\r\n//\r\n// 5️⃣ Big size limit example\r\n//\r\nexport const SmallFileLimit: Story = {\r\n args: {\r\n maxSizeMB: 1,\r\n labelFileTooLarge: 'Max 1MB allowed',\r\n },\r\n render: (args) => <ControlledDropzone {...args} />,\r\n};\r\n\r\n//\r\n// 6️⃣ Without singlePick (gallery mode)\r\n//\r\n//\r\nexport const GalleryMode: Story = {\r\n args: {\r\n maxFiles: 10,\r\n singlePick: false,\r\n },\r\n render: (args) => (\r\n <ControlledDropzone\r\n {...args}\r\n initialValue={[\r\n 'https://images.unsplash.com/photo-1492724441997-5dc865305da7?w=400',\r\n 'https://images.unsplash.com/photo-1495567720989-cebdbdd97913?w=400',\r\n ]}\r\n />\r\n ),\r\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":"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
+ {"version":3,"file":"Dropzone.types.js","sources":["../../src/Dropzone/Dropzone.types.tsx"],"sourcesContent":["import { FileRejection } from 'react-dropzone';\r\nimport { Dispatch, SetStateAction } from 'react';\r\n\r\nexport type DropzoneValueItem = File | string;\r\n\r\nexport interface FilePreviewProps {\r\n item: DropzoneValueItem;\r\n styles?: Pick<\r\n DropzoneStyles,\r\n 'previewWraper' | 'previewImage' | 'previewFile'\r\n >;\r\n}\r\n\r\nexport interface DropzoneTranslations {\r\n labelDropzonePrompt?: string;\r\n labelDropzoneSubPrompt?: string;\r\n labelOrClickToSelect?: string;\r\n labelSelectedFiles?: string;\r\n labelUploadErrors?: string;\r\n labelFileTooLarge?: string;\r\n labelInvalidFileType?: string;\r\n}\r\n\r\nexport interface DropzoneProps\r\n extends DropzoneTranslations,\r\n React.HTMLAttributes<HTMLDivElement> {\r\n acceptTypes?: string[];\r\n maxSizeMB: number;\r\n maxFiles?: number;\r\n onErrors?: (errors: FileRejection[]) => void;\r\n hideErrors?: boolean;\r\n disabled?: boolean;\r\n classNames?: DropzoneStyles;\r\n value?: DropzoneValueItem[];\r\n onChangeValue?: (items: DropzoneValueItem[]) => void;\r\n singlePick?: boolean;\r\n labelDropzoneClassname?: string;\r\n labelDropzoneSubClassname?: string;\r\n}\r\n\r\nexport interface DropzoneStyles {\r\n idleWrapper?: string;\r\n previewWrapper?: string;\r\n errorWrapper?: string;\r\n previewWraper?: string;\r\n previewImage?: string;\r\n previewFile?: string;\r\n}\r\n\r\nexport const DEFAULT_FILE_TYPES = [\r\n 'application/msword',\r\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n 'text/csv',\r\n 'text/plain',\r\n 'application/pdf',\r\n];\r\n\r\nexport const DEFAULT_IMAGES_TYPES = [\r\n 'image/png',\r\n 'image/jpeg',\r\n 'image/jpg',\r\n 'image/webp',\r\n // 'image/gif', // TODO: normalize this type\r\n];\r\n\r\n\r\nexport interface DropzoneControl {\r\n setItems: Dispatch<SetStateAction<DropzoneValueItem[]>>;\r\n}\r\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":"DropzoneFilePreview.js","sources":["../../src/Dropzone/DropzoneFilePreview.tsx"],"sourcesContent":["import { FC, useEffect, useState } from 'react';\nimport { File as FileIcon } from 'lucide-react';\nimport { DEFAULT_IMAGES_TYPES, FilePreviewProps } from './Dropzone.types';\nimport { isFile } from './DropzoneUtils';\nimport { cn } from '@oneplatformdev/utils';\n\nexport const FilePreview: FC<FilePreviewProps> = ({ item, styles }) => {\n const [preview, setPreview] = useState<string | null>(null);\n\n const isFileTypeImage =\n isFile(item) && DEFAULT_IMAGES_TYPES.includes(item.type);\n\n useEffect(() => {\n let img: HTMLImageElement | null = null;\n\n if (isFile(item) && isFileTypeImage) {\n const reader = new FileReader();\n reader.onloadend = () => setPreview(reader.result as string);\n reader.readAsDataURL(item);\n\n return () => setPreview(null);\n } else if (typeof item === 'string') {\n img = new Image();\n img.src = item;\n img.onload = () => setPreview(item);\n img.onerror = () => setPreview(null);\n\n return () => {\n img!.onload = null;\n img!.onerror = null;\n };\n } else {\n setPreview(null);\n }\n\n return () => setPreview(null);\n }, [item, isFileTypeImage]);\n\n return (\n <div\n className={cn(\n 'w-32 h-32 border border-gray-300 rounded-md overflow-hidden flex items-center justify-center',\n styles?.previewWraper\n )}\n >\n {preview ? (\n <img\n src={preview}\n alt={isFile(item) ? item.name : 'external-image'}\n className={cn('w-full h-full object-cover', styles?.previewImage)}\n />\n ) : (\n <div\n className={cn(\n 'flex flex-col items-center justify-center text-gray-500 text-sm p-2 text-center',\n styles?.previewFile\n )}\n >\n <FileIcon className=\"w-6 h-6\" />\n {!isFile(item) ? (\n <span className=\"text-xs break-all\">{item}</span>\n ) : (\n <span className=\"text-xs break-all\">{item.name}</span>\n )}\n </div>\n )}\n </div>\n );\n};\n"],"names":["FilePreview","item","styles","preview","setPreview","useState","isFileTypeImage","isFile","DEFAULT_IMAGES_TYPES","useEffect","img","reader","jsx","cn","jsxs","FileIcon"],"mappings":";;;;;;AAMO,MAAMA,IAAoC,CAAC,EAAE,MAAAC,GAAM,QAAAC,QAAa;AACrE,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAwB,IAAI,GAEpDC,IACJC,EAAON,CAAI,KAAKO,EAAqB,SAASP,EAAK,IAAI;AAEzD,SAAAQ,EAAU,MAAM;AACd,QAAIC,IAA+B;AAEnC,QAAIH,EAAON,CAAI,KAAKK,GAAiB;AACnC,YAAMK,IAAS,IAAI,WAAA;AACnB,aAAAA,EAAO,YAAY,MAAMP,EAAWO,EAAO,MAAgB,GAC3DA,EAAO,cAAcV,CAAI,GAElB,MAAMG,EAAW,IAAI;AAAA,IAC9B,OAAA;AAAA,UAAW,OAAOH,KAAS;AACzB,eAAAS,IAAM,IAAI,MAAA,GACVA,EAAI,MAAMT,GACVS,EAAI,SAAS,MAAMN,EAAWH,CAAI,GAClCS,EAAI,UAAU,MAAMN,EAAW,IAAI,GAE5B,MAAM;AACX,UAAAM,EAAK,SAAS,MACdA,EAAK,UAAU;AAAA,QACjB;AAEA,MAAAN,EAAW,IAAI;AAAA;AAGjB,WAAO,MAAMA,EAAW,IAAI;AAAA,EAC9B,GAAG,CAACH,GAAMK,CAAe,CAAC,GAGxB,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAX,GAAQ;AAAA,MAAA;AAAA,MAGT,UAAAC,IACC,gBAAAS;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKT;AAAA,UACL,KAAKI,EAAON,CAAI,IAAIA,EAAK,OAAO;AAAA,UAChC,WAAWY,EAAG,8BAA8BX,GAAQ,YAAY;AAAA,QAAA;AAAA,MAAA,IAGlE,gBAAAY;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWD;AAAA,YACT;AAAA,YACAX,GAAQ;AAAA,UAAA;AAAA,UAGV,UAAA;AAAA,YAAA,gBAAAU,EAACG,GAAA,EAAS,WAAU,UAAA,CAAU;AAAA,YAC5BR,EAAON,CAAI,IAGX,gBAAAW,EAAC,QAAA,EAAK,WAAU,qBAAqB,YAAK,KAAA,CAAK,sBAF9C,QAAA,EAAK,WAAU,qBAAqB,UAAAX,EAAA,CAAK;AAAA,UAEK;AAAA,QAAA;AAAA,MAAA;AAAA,IAEnD;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"DropzoneFilePreview.js","sources":["../../src/Dropzone/DropzoneFilePreview.tsx"],"sourcesContent":["import { FC, useEffect, useState } from 'react';\r\nimport { File as FileIcon } from 'lucide-react';\r\nimport { DEFAULT_IMAGES_TYPES, FilePreviewProps } from './Dropzone.types';\r\nimport { isFile } from './DropzoneUtils';\r\nimport { cn } from '@oneplatformdev/utils';\r\n\r\nexport const FilePreview: FC<FilePreviewProps> = ({ item, styles }) => {\r\n const [preview, setPreview] = useState<string | null>(null);\r\n\r\n const isFileTypeImage =\r\n isFile(item) && DEFAULT_IMAGES_TYPES.includes(item.type);\r\n\r\n useEffect(() => {\r\n let img: HTMLImageElement | null = null;\r\n\r\n if (isFile(item) && isFileTypeImage) {\r\n const reader = new FileReader();\r\n reader.onloadend = () => setPreview(reader.result as string);\r\n reader.readAsDataURL(item);\r\n\r\n return () => setPreview(null);\r\n } else if (typeof item === 'string') {\r\n img = new Image();\r\n img.src = item;\r\n img.onload = () => setPreview(item);\r\n img.onerror = () => setPreview(null);\r\n\r\n return () => {\r\n img!.onload = null;\r\n img!.onerror = null;\r\n };\r\n } else {\r\n setPreview(null);\r\n }\r\n\r\n return () => setPreview(null);\r\n }, [item, isFileTypeImage]);\r\n\r\n return (\r\n <div\r\n className={cn(\r\n 'w-32 h-32 border border-gray-300 rounded-md overflow-hidden flex items-center justify-center',\r\n styles?.previewWraper\r\n )}\r\n >\r\n {preview ? (\r\n <img\r\n src={preview}\r\n alt={isFile(item) ? item.name : 'external-image'}\r\n className={cn('w-full h-full object-cover', styles?.previewImage)}\r\n />\r\n ) : (\r\n <div\r\n className={cn(\r\n 'flex flex-col items-center justify-center text-gray-500 text-sm p-2 text-center',\r\n styles?.previewFile\r\n )}\r\n >\r\n <FileIcon className=\"w-6 h-6\" />\r\n {!isFile(item) ? (\r\n <span className=\"text-xs break-all\">{item}</span>\r\n ) : (\r\n <span className=\"text-xs break-all\">{item.name}</span>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n"],"names":["FilePreview","item","styles","preview","setPreview","useState","isFileTypeImage","isFile","DEFAULT_IMAGES_TYPES","useEffect","img","reader","jsx","cn","jsxs","FileIcon"],"mappings":";;;;;;AAMO,MAAMA,IAAoC,CAAC,EAAE,MAAAC,GAAM,QAAAC,QAAa;AACrE,QAAM,CAACC,GAASC,CAAU,IAAIC,EAAwB,IAAI,GAEpDC,IACJC,EAAON,CAAI,KAAKO,EAAqB,SAASP,EAAK,IAAI;AAEzD,SAAAQ,EAAU,MAAM;AACd,QAAIC,IAA+B;AAEnC,QAAIH,EAAON,CAAI,KAAKK,GAAiB;AACnC,YAAMK,IAAS,IAAI,WAAA;AACnB,aAAAA,EAAO,YAAY,MAAMP,EAAWO,EAAO,MAAgB,GAC3DA,EAAO,cAAcV,CAAI,GAElB,MAAMG,EAAW,IAAI;AAAA,IAC9B,OAAA;AAAA,UAAW,OAAOH,KAAS;AACzB,eAAAS,IAAM,IAAI,MAAA,GACVA,EAAI,MAAMT,GACVS,EAAI,SAAS,MAAMN,EAAWH,CAAI,GAClCS,EAAI,UAAU,MAAMN,EAAW,IAAI,GAE5B,MAAM;AACX,UAAAM,EAAK,SAAS,MACdA,EAAK,UAAU;AAAA,QACjB;AAEA,MAAAN,EAAW,IAAI;AAAA;AAGjB,WAAO,MAAMA,EAAW,IAAI;AAAA,EAC9B,GAAG,CAACH,GAAMK,CAAe,CAAC,GAGxB,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAX,GAAQ;AAAA,MAAA;AAAA,MAGT,UAAAC,IACC,gBAAAS;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,KAAKT;AAAA,UACL,KAAKI,EAAON,CAAI,IAAIA,EAAK,OAAO;AAAA,UAChC,WAAWY,EAAG,8BAA8BX,GAAQ,YAAY;AAAA,QAAA;AAAA,MAAA,IAGlE,gBAAAY;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWD;AAAA,YACT;AAAA,YACAX,GAAQ;AAAA,UAAA;AAAA,UAGV,UAAA;AAAA,YAAA,gBAAAU,EAACG,GAAA,EAAS,WAAU,UAAA,CAAU;AAAA,YAC5BR,EAAON,CAAI,IAGX,gBAAAW,EAAC,QAAA,EAAK,WAAU,qBAAqB,YAAK,KAAA,CAAK,sBAF9C,QAAA,EAAK,WAAU,qBAAqB,UAAAX,EAAA,CAAK;AAAA,UAEK;AAAA,QAAA;AAAA,MAAA;AAAA,IAEnD;AAAA,EAAA;AAIR;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropzoneSinglePickPreview.js","sources":["../../src/Dropzone/DropzoneSinglePickPreview.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { DropzoneValueItem } from './Dropzone.types';\nimport { isFile } from './DropzoneUtils';\nimport { FileIcon, X } from 'lucide-react';\n\nexport const transformImageToSrc = (preview?: string | File | null): string => {\n if (!preview) return '';\n switch (true) {\n case typeof preview === 'string' && !!preview.trim() && preview !== 'null':\n return preview;\n case preview instanceof File:\n return URL.createObjectURL(preview);\n case preview instanceof FileList:\n return preview[0] ? URL.createObjectURL(preview[0]) : '';\n default:\n return '';\n }\n};\n\ninterface SinglePickPreviewProps {\n item: DropzoneValueItem;\n disabled?: boolean;\n onRemoveClick: (e: React.MouseEvent<HTMLDivElement>) => void;\n}\n\nexport const DropzoneSinglePickPreview = ({\n item,\n disabled,\n onRemoveClick,\n}: SinglePickPreviewProps) => {\n const isFileType = isFile(item);\n const fileName = isFileType ? item.name : item;\n\n const showImage = useMemo(() => {\n return (isFileType && (item as File)?.type?.includes('image')) || typeof item === 'string';\n }, [item, isFileType]);\n\n const preview = useMemo(() => (showImage ? transformImageToSrc(item) : ''), [item, showImage]);\n\n return (\n <div className=\"relative w-full h-64 sm:h-80 md:h-96 overflow-hidden outline-[#E4E4E7] outline-2 outline-dashed -outline-offset-1 rounded-lg\">\n {!disabled && (\n <div className=\"absolute top-2 right-2 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm\" onClick={onRemoveClick} >\n <X size={16} strokeWidth={2} color=\"black\" />\n </div>\n )}\n\n {preview ? (\n <img\n src={preview}\n alt={fileName?.toString()}\n className=\"w-full h-full object-cover rounded-lg \"\n />\n ) : (\n <div className=\"w-full h-full flex flex-col items-center justify-center text-gray-600\">\n <FileIcon size={28} />\n <span className=\"text-sm mt-2 break-all px-2 text-center\">\n {fileName?.toString()}\n </span>\n </div>\n )}\n </div>\n );\n};\n"],"names":["transformImageToSrc","preview","DropzoneSinglePickPreview","item","disabled","onRemoveClick","isFileType","isFile","fileName","showImage","useMemo","jsxs","jsx","X","FileIcon"],"mappings":";;;;AAKO,MAAMA,IAAsB,CAACC,MAA2C;AAC7E,MAAI,CAACA,EAAS,QAAO;AACrB,UAAQ,IAAA;AAAA,IACN,MAAK,OAAOA,KAAY,YAAY,CAAC,CAACA,EAAQ,KAAA,KAAUA,MAAY;AAClE,aAAOA;AAAA,IACT,KAAKA,aAAmB;AACtB,aAAO,IAAI,gBAAgBA,CAAO;AAAA,IACpC,KAAKA,aAAmB;AACtB,aAAOA,EAAQ,CAAC,IAAI,IAAI,gBAAgBA,EAAQ,CAAC,CAAC,IAAI;AAAA,IACxD;AACE,aAAO;AAAA,EAAA;AAEb,GAQaC,IAA4B,CAAC;AAAA,EACxC,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AACF,MAA8B;AAC5B,QAAMC,IAAaC,EAAOJ,CAAI,GACxBK,IAAWF,IAAaH,EAAK,OAAOA,GAEpCM,IAAYC,EAAQ,MAChBJ,KAAeH,GAAe,MAAM,SAAS,OAAO,KAAM,OAAOA,KAAS,UACjF,CAACA,GAAMG,CAAU,CAAC,GAEfL,IAAUS,EAAQ,MAAOD,IAAYT,EAAoBG,CAAI,IAAI,IAAK,CAACA,GAAMM,CAAS,CAAC;AAE7F,SACE,gBAAAE,EAAC,OAAA,EAAI,WAAU,iIACZ,UAAA;AAAA,IAAA,CAACP,KACA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,iFAAgF,SAASP,GACtG,UAAA,gBAAAO,EAACC,GAAA,EAAE,MAAM,IAAI,aAAa,GAAG,OAAM,SAAQ,GAC7C;AAAA,IAGDZ,IACC,gBAAAW;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKX;AAAA,QACL,KAAKO,GAAU,SAAA;AAAA,QACf,WAAU;AAAA,MAAA;AAAA,IAAA,IAGZ,gBAAAG,EAAC,OAAA,EAAI,WAAU,yEACb,UAAA;AAAA,MAAA,gBAAAC,EAACE,GAAA,EAAS,MAAM,GAAA,CAAI;AAAA,wBACnB,QAAA,EAAK,WAAU,2CACb,UAAAN,GAAU,WAAS,CACtB;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"DropzoneSinglePickPreview.js","sources":["../../src/Dropzone/DropzoneSinglePickPreview.tsx"],"sourcesContent":["import { useMemo } from 'react';\r\nimport { DropzoneValueItem } from './Dropzone.types';\r\nimport { isFile } from './DropzoneUtils';\r\nimport { FileIcon, X } from 'lucide-react';\r\n\r\nexport const transformImageToSrc = (preview?: string | File | null): string => {\r\n if (!preview) return '';\r\n switch (true) {\r\n case typeof preview === 'string' && !!preview.trim() && preview !== 'null':\r\n return preview;\r\n case preview instanceof File:\r\n return URL.createObjectURL(preview);\r\n case preview instanceof FileList:\r\n return preview[0] ? URL.createObjectURL(preview[0]) : '';\r\n default:\r\n return '';\r\n }\r\n};\r\n\r\ninterface SinglePickPreviewProps {\r\n item: DropzoneValueItem;\r\n disabled?: boolean;\r\n onRemoveClick: (e: React.MouseEvent<HTMLDivElement>) => void;\r\n}\r\n\r\nexport const DropzoneSinglePickPreview = ({\r\n item,\r\n disabled,\r\n onRemoveClick,\r\n}: SinglePickPreviewProps) => {\r\n const isFileType = isFile(item);\r\n const fileName = isFileType ? item.name : item;\r\n\r\n const showImage = useMemo(() => {\r\n return (isFileType && (item as File)?.type?.includes('image')) || typeof item === 'string';\r\n }, [item, isFileType]);\r\n\r\n const preview = useMemo(() => (showImage ? transformImageToSrc(item) : ''), [item, showImage]);\r\n\r\n return (\r\n <div className=\"relative w-full h-64 sm:h-80 md:h-96 overflow-hidden outline-[#E4E4E7] outline-2 outline-dashed -outline-offset-1 rounded-lg\">\r\n {!disabled && (\r\n <div className=\"absolute top-2 right-2 cursor-pointer bg-white/70 rounded-[4px] p-1 shadow-sm\" onClick={onRemoveClick} >\r\n <X size={16} strokeWidth={2} color=\"black\" />\r\n </div>\r\n )}\r\n\r\n {preview ? (\r\n <img\r\n src={preview}\r\n alt={fileName?.toString()}\r\n className=\"w-full h-full object-cover rounded-lg \"\r\n />\r\n ) : (\r\n <div className=\"w-full h-full flex flex-col items-center justify-center text-gray-600\">\r\n <FileIcon size={28} />\r\n <span className=\"text-sm mt-2 break-all px-2 text-center\">\r\n {fileName?.toString()}\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n"],"names":["transformImageToSrc","preview","DropzoneSinglePickPreview","item","disabled","onRemoveClick","isFileType","isFile","fileName","showImage","useMemo","jsxs","jsx","X","FileIcon"],"mappings":";;;;AAKO,MAAMA,IAAsB,CAACC,MAA2C;AAC7E,MAAI,CAACA,EAAS,QAAO;AACrB,UAAQ,IAAA;AAAA,IACN,MAAK,OAAOA,KAAY,YAAY,CAAC,CAACA,EAAQ,KAAA,KAAUA,MAAY;AAClE,aAAOA;AAAA,IACT,KAAKA,aAAmB;AACtB,aAAO,IAAI,gBAAgBA,CAAO;AAAA,IACpC,KAAKA,aAAmB;AACtB,aAAOA,EAAQ,CAAC,IAAI,IAAI,gBAAgBA,EAAQ,CAAC,CAAC,IAAI;AAAA,IACxD;AACE,aAAO;AAAA,EAAA;AAEb,GAQaC,IAA4B,CAAC;AAAA,EACxC,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AACF,MAA8B;AAC5B,QAAMC,IAAaC,EAAOJ,CAAI,GACxBK,IAAWF,IAAaH,EAAK,OAAOA,GAEpCM,IAAYC,EAAQ,MAChBJ,KAAeH,GAAe,MAAM,SAAS,OAAO,KAAM,OAAOA,KAAS,UACjF,CAACA,GAAMG,CAAU,CAAC,GAEfL,IAAUS,EAAQ,MAAOD,IAAYT,EAAoBG,CAAI,IAAI,IAAK,CAACA,GAAMM,CAAS,CAAC;AAE7F,SACE,gBAAAE,EAAC,OAAA,EAAI,WAAU,iIACZ,UAAA;AAAA,IAAA,CAACP,KACA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,iFAAgF,SAASP,GACtG,UAAA,gBAAAO,EAACC,GAAA,EAAE,MAAM,IAAI,aAAa,GAAG,OAAM,SAAQ,GAC7C;AAAA,IAGDZ,IACC,gBAAAW;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKX;AAAA,QACL,KAAKO,GAAU,SAAA;AAAA,QACf,WAAU;AAAA,MAAA;AAAA,IAAA,IAGZ,gBAAAG,EAAC,OAAA,EAAI,WAAU,yEACb,UAAA;AAAA,MAAA,gBAAAC,EAACE,GAAA,EAAS,MAAM,GAAA,CAAI;AAAA,wBACnB,QAAA,EAAK,WAAU,2CACb,UAAAN,GAAU,WAAS,CACtB;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DropzoneUtils.js","sources":["../../src/Dropzone/DropzoneUtils.tsx"],"sourcesContent":["import { DropzoneValueItem } from './Dropzone.types';\n\nexport function isFile(item: DropzoneValueItem): item is File {\n return item instanceof File;\n}\n\nexport function extractName(url: string) {\n try {\n const parts = url.split('?')[0].split('#')[0].split('/');\n return parts[parts.length - 1] || url;\n } catch {\n return url;\n }\n}\n\nexport const DefaultFileIcon = () => {\n return (\n <svg width=\"55\" height=\"55\" viewBox=\"0 0 55 55\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <mask id=\"mask0_2430_114601\" maskUnits=\"userSpaceOnUse\" x=\"7\" y=\"4\" width=\"39\" height=\"46\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.25 4.68359H45.6174V49.354H7.25V4.68359Z\" fill=\"white\"/>\n </mask>\n <g mask=\"url(#mask0_2430_114601)\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17.5386 8.05859C13.8103 8.05859 10.7143 11.0781 10.6266 14.8018V38.9196C10.5456 42.7468 13.5606 45.8968 17.3518 45.9801H35.5386C39.2938 45.8451 42.2661 42.7468 42.2413 38.9308V18.9216L31.8148 8.05859H17.5656H17.5386ZM17.5664 49.3551H17.2829C11.6309 49.2336 7.1309 44.5356 7.2524 38.8836V14.7613C7.38515 9.17909 11.9932 4.68359 17.5327 4.68359H17.5732H32.5334C32.9924 4.68359 33.4312 4.87034 33.7507 5.20109L45.1492 17.0743C45.4484 17.3871 45.6172 17.8078 45.6172 18.2421V38.9196C45.6532 44.5648 41.2522 49.1526 35.5979 49.3551H17.5664Z\" fill=\"#0D0E2B\" fill-opacity=\"0.7\"/>\n </g>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M43.9198 20.3703H37.7233C33.6036 20.359 30.2578 17.002 30.2578 12.889V6.34375C30.2578 5.41225 31.0138 4.65625 31.9453 4.65625C32.8768 4.65625 33.6328 5.41225 33.6328 6.34375V12.889C33.6328 15.148 35.4688 16.9885 37.7278 16.9953H43.9198C44.8513 16.9953 45.6073 17.7513 45.6073 18.6828C45.6073 19.6143 44.8513 20.3703 43.9198 20.3703Z\" fill=\"#0D0E2B\" fill-opacity=\"0.7\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M25.5708 37.729C24.6393 37.729 23.8833 36.973 23.8833 36.0415V22.4492C23.8833 21.5177 24.6393 20.7617 25.5708 20.7617C26.5023 20.7617 27.2583 21.5177 27.2583 22.4492V36.0415C27.2583 36.973 26.5023 37.729 25.5708 37.729Z\" fill=\"#0D0E2B\" fill-opacity=\"0.7\"/>\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M25.5678 37.7279C25.1201 37.7279 24.6881 37.5501 24.3731 37.2306L19.0968 31.9341C18.4398 31.2726 18.4421 30.2039 19.1013 29.5469C19.7628 28.8899 20.8316 28.8899 21.4886 29.5514L25.5678 33.6509L29.6471 29.5514C30.3041 28.8899 31.3728 28.8899 32.0343 29.5469C32.6936 30.2039 32.6958 31.2726 32.0388 31.9341L26.7626 37.2306C26.4476 37.5501 26.0156 37.7279 25.5678 37.7279Z\" fill=\"#0D0E2B\" fill-opacity=\"0.7\"/>\n </svg>\n \n );\n};\n"],"names":["isFile","item","extractName","url","parts","DefaultFileIcon","jsxs","jsx"],"mappings":";AAEO,SAASA,EAAOC,GAAuC;AAC5D,SAAOA,aAAgB;AACzB;AAEO,SAASC,EAAYC,GAAa;AACvC,MAAI;AACF,UAAMC,IAAQD,EAAI,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG;AACvD,WAAOC,EAAMA,EAAM,SAAS,CAAC,KAAKD;AAAA,EACpC,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;AAEO,MAAME,IAAkB,MAE3B,gBAAAC,EAAC,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAClE,UAAA;AAAA,EAAA,gBAAAC,EAAC,QAAA,EAAK,IAAG,qBAAoB,WAAU,kBAAiB,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MACtF,UAAA,gBAAAA,EAAC,QAAA,EAAK,aAAU,WAAU,aAAU,WAAU,GAAE,8CAA6C,MAAK,QAAA,CAAO,EAAA,CACzG;AAAA,oBACC,KAAA,EAAE,MAAK,2BACR,UAAA,gBAAAA,EAAC,UAAK,aAAU,WAAU,aAAU,WAAU,GAAE,4hBAA2hB,MAAK,WAAU,gBAAa,OAAK,GAC5mB;AAAA,EACA,gBAAAA,EAAC,QAAA,EAAK,aAAU,WAAU,aAAU,WAAU,GAAE,gVAA+U,MAAK,WAAU,gBAAa,MAAA,CAAK;AAAA,EACha,gBAAAA,EAAC,QAAA,EAAK,aAAU,WAAU,aAAU,WAAU,GAAE,+NAA8N,MAAK,WAAU,gBAAa,MAAA,CAAK;AAAA,EAC/S,gBAAAA,EAAC,QAAA,EAAK,aAAU,WAAU,aAAU,WAAU,GAAE,qXAAoX,MAAK,WAAU,gBAAa,MAAA,CAAK;AAAA,GACrc;"}
1
+ {"version":3,"file":"DropzoneUtils.js","sources":["../../src/Dropzone/DropzoneUtils.tsx"],"sourcesContent":["import { DropzoneValueItem } from './Dropzone.types';\r\n\r\nexport function isFile(item: DropzoneValueItem): item is File {\r\n return item instanceof File;\r\n}\r\n\r\nexport function extractName(url: string) {\r\n try {\r\n const parts = url.split('?')[0].split('#')[0].split('/');\r\n return parts[parts.length - 1] || url;\r\n } catch {\r\n return url;\r\n }\r\n}\r\n\r\nexport const DefaultFileIcon = () => {\r\n return (\r\n <svg width=\"55\" height=\"55\" viewBox=\"0 0 55 55\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <mask id=\"mask0_2430_114601\" maskUnits=\"userSpaceOnUse\" x=\"7\" y=\"4\" width=\"39\" height=\"46\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M7.25 4.68359H45.6174V49.354H7.25V4.68359Z\" fill=\"white\"/>\r\n </mask>\r\n <g mask=\"url(#mask0_2430_114601)\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M17.5386 8.05859C13.8103 8.05859 10.7143 11.0781 10.6266 14.8018V38.9196C10.5456 42.7468 13.5606 45.8968 17.3518 45.9801H35.5386C39.2938 45.8451 42.2661 42.7468 42.2413 38.9308V18.9216L31.8148 8.05859H17.5656H17.5386ZM17.5664 49.3551H17.2829C11.6309 49.2336 7.1309 44.5356 7.2524 38.8836V14.7613C7.38515 9.17909 11.9932 4.68359 17.5327 4.68359H17.5732H32.5334C32.9924 4.68359 33.4312 4.87034 33.7507 5.20109L45.1492 17.0743C45.4484 17.3871 45.6172 17.8078 45.6172 18.2421V38.9196C45.6532 44.5648 41.2522 49.1526 35.5979 49.3551H17.5664Z\" fill=\"#0D0E2B\" fill-opacity=\"0.7\"/>\r\n </g>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M43.9198 20.3703H37.7233C33.6036 20.359 30.2578 17.002 30.2578 12.889V6.34375C30.2578 5.41225 31.0138 4.65625 31.9453 4.65625C32.8768 4.65625 33.6328 5.41225 33.6328 6.34375V12.889C33.6328 15.148 35.4688 16.9885 37.7278 16.9953H43.9198C44.8513 16.9953 45.6073 17.7513 45.6073 18.6828C45.6073 19.6143 44.8513 20.3703 43.9198 20.3703Z\" fill=\"#0D0E2B\" fill-opacity=\"0.7\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M25.5708 37.729C24.6393 37.729 23.8833 36.973 23.8833 36.0415V22.4492C23.8833 21.5177 24.6393 20.7617 25.5708 20.7617C26.5023 20.7617 27.2583 21.5177 27.2583 22.4492V36.0415C27.2583 36.973 26.5023 37.729 25.5708 37.729Z\" fill=\"#0D0E2B\" fill-opacity=\"0.7\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M25.5678 37.7279C25.1201 37.7279 24.6881 37.5501 24.3731 37.2306L19.0968 31.9341C18.4398 31.2726 18.4421 30.2039 19.1013 29.5469C19.7628 28.8899 20.8316 28.8899 21.4886 29.5514L25.5678 33.6509L29.6471 29.5514C30.3041 28.8899 31.3728 28.8899 32.0343 29.5469C32.6936 30.2039 32.6958 31.2726 32.0388 31.9341L26.7626 37.2306C26.4476 37.5501 26.0156 37.7279 25.5678 37.7279Z\" fill=\"#0D0E2B\" fill-opacity=\"0.7\"/>\r\n </svg>\r\n \r\n );\r\n};\r\n"],"names":["isFile","item","extractName","url","parts","DefaultFileIcon","jsxs","jsx"],"mappings":";AAEO,SAASA,EAAOC,GAAuC;AAC5D,SAAOA,aAAgB;AACzB;AAEO,SAASC,EAAYC,GAAa;AACvC,MAAI;AACF,UAAMC,IAAQD,EAAI,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG;AACvD,WAAOC,EAAMA,EAAM,SAAS,CAAC,KAAKD;AAAA,EACpC,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;AAEO,MAAME,IAAkB,MAE3B,gBAAAC,EAAC,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAClE,UAAA;AAAA,EAAA,gBAAAC,EAAC,QAAA,EAAK,IAAG,qBAAoB,WAAU,kBAAiB,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MACtF,UAAA,gBAAAA,EAAC,QAAA,EAAK,aAAU,WAAU,aAAU,WAAU,GAAE,8CAA6C,MAAK,QAAA,CAAO,EAAA,CACzG;AAAA,oBACC,KAAA,EAAE,MAAK,2BACR,UAAA,gBAAAA,EAAC,UAAK,aAAU,WAAU,aAAU,WAAU,GAAE,4hBAA2hB,MAAK,WAAU,gBAAa,OAAK,GAC5mB;AAAA,EACA,gBAAAA,EAAC,QAAA,EAAK,aAAU,WAAU,aAAU,WAAU,GAAE,gVAA+U,MAAK,WAAU,gBAAa,MAAA,CAAK;AAAA,EACha,gBAAAA,EAAC,QAAA,EAAK,aAAU,WAAU,aAAU,WAAU,GAAE,+NAA8N,MAAK,WAAU,gBAAa,MAAA,CAAK;AAAA,EAC/S,gBAAAA,EAAC,QAAA,EAAK,aAAU,WAAU,aAAU,WAAU,GAAE,qXAAoX,MAAK,WAAU,gBAAa,MAAA,CAAK;AAAA,GACrc;"}