@definable/ui 0.1.0 → 0.1.8

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 (322) hide show
  1. package/README.md +6 -6
  2. package/dist/alert-dialog.d.ts +18 -0
  3. package/dist/alert.d.ts +18 -0
  4. package/dist/avatar.d.ts +9 -0
  5. package/dist/badge.d.ts +15 -0
  6. package/dist/button.d.ts +16 -0
  7. package/dist/calendar.d.ts +21 -0
  8. package/dist/card.d.ts +15 -0
  9. package/dist/carousel.d.ts +18 -0
  10. package/dist/charts.d.ts +26 -0
  11. package/dist/checkbox.d.ts +6 -0
  12. package/dist/collapse.d.ts +15 -0
  13. package/dist/command-menu.d.ts +12 -0
  14. package/dist/command.d.ts +89 -0
  15. package/dist/components/alert-dialog.d.ts +15 -0
  16. package/dist/components/alert-dialog.esm.js +59 -0
  17. package/dist/components/alert-dialog.esm.js.map +1 -0
  18. package/dist/components/alert-dialog.js +2 -0
  19. package/dist/components/alert-dialog.js.map +1 -0
  20. package/dist/components/alert.d.ts +11 -0
  21. package/dist/components/alert.esm.js +51 -0
  22. package/dist/components/alert.esm.js.map +1 -0
  23. package/dist/components/alert.js +2 -0
  24. package/dist/components/alert.js.map +1 -0
  25. package/dist/components/avatar.d.ts +5 -0
  26. package/dist/components/avatar.esm.js +42 -0
  27. package/dist/components/avatar.esm.js.map +1 -0
  28. package/dist/components/avatar.js +2 -0
  29. package/dist/components/avatar.js.map +1 -0
  30. package/dist/components/badge.d.ts +9 -0
  31. package/dist/components/badge.esm.js +27 -0
  32. package/dist/components/badge.esm.js.map +1 -0
  33. package/dist/components/badge.js +2 -0
  34. package/dist/components/badge.js.map +1 -0
  35. package/dist/components/button.d.ts +13 -0
  36. package/dist/components/button.esm.js +48 -0
  37. package/dist/components/button.esm.js.map +1 -0
  38. package/dist/components/button.js +2 -0
  39. package/dist/components/button.js.map +1 -0
  40. package/dist/components/calendar.d.ts +18 -0
  41. package/dist/components/calendar.esm.js +5562 -0
  42. package/dist/components/calendar.esm.js.map +1 -0
  43. package/dist/components/calendar.js +2 -0
  44. package/dist/components/calendar.js.map +1 -0
  45. package/dist/components/card.d.ts +8 -0
  46. package/dist/components/card.esm.js +62 -0
  47. package/dist/components/card.esm.js.map +1 -0
  48. package/dist/components/card.js +2 -0
  49. package/dist/components/card.js.map +1 -0
  50. package/dist/components/carousel.d.ts +13 -0
  51. package/dist/components/carousel.esm.js +101 -0
  52. package/dist/components/carousel.esm.js.map +1 -0
  53. package/dist/components/carousel.js +2 -0
  54. package/dist/components/carousel.js.map +1 -0
  55. package/dist/components/charts.d.ts +17 -0
  56. package/dist/components/charts.esm.js +48 -0
  57. package/dist/components/charts.esm.js.map +1 -0
  58. package/dist/components/charts.js +2 -0
  59. package/dist/components/charts.js.map +1 -0
  60. package/dist/components/checkbox.d.ts +4 -0
  61. package/dist/components/checkbox.esm.js +32 -0
  62. package/dist/components/checkbox.esm.js.map +1 -0
  63. package/dist/components/checkbox.js +2 -0
  64. package/dist/components/checkbox.js.map +1 -0
  65. package/dist/components/collapse.d.ts +11 -0
  66. package/dist/components/collapse.esm.js +50 -0
  67. package/dist/components/collapse.esm.js.map +1 -0
  68. package/dist/components/collapse.js +2 -0
  69. package/dist/components/collapse.js.map +1 -0
  70. package/dist/components/command-menu.d.ts +7 -0
  71. package/dist/components/command-menu.esm.js +90 -0
  72. package/dist/components/command-menu.esm.js.map +1 -0
  73. package/dist/components/command-menu.js +2 -0
  74. package/dist/components/command-menu.js.map +1 -0
  75. package/dist/components/command.d.ts +79 -0
  76. package/dist/components/command.esm.js +425 -0
  77. package/dist/components/command.esm.js.map +1 -0
  78. package/dist/components/command.js +2 -0
  79. package/dist/components/command.js.map +1 -0
  80. package/dist/components/confirmation-modal.d.ts +12 -0
  81. package/dist/components/confirmation-modal.esm.js +46 -0
  82. package/dist/components/confirmation-modal.esm.js.map +1 -0
  83. package/dist/components/confirmation-modal.js +2 -0
  84. package/dist/components/confirmation-modal.js.map +1 -0
  85. package/dist/components/context-menu.d.ts +26 -0
  86. package/dist/components/context-menu.esm.js +186 -0
  87. package/dist/components/context-menu.esm.js.map +1 -0
  88. package/dist/components/context-menu.js +2 -0
  89. package/dist/components/context-menu.js.map +1 -0
  90. package/dist/components/dialog.d.ts +21 -0
  91. package/dist/components/dialog.esm.js +122 -0
  92. package/dist/components/dialog.esm.js.map +1 -0
  93. package/dist/components/dialog.js +2 -0
  94. package/dist/components/dialog.js.map +1 -0
  95. package/dist/components/dropdown-menu.d.ts +9 -0
  96. package/dist/components/dropdown-menu.esm.js +49 -0
  97. package/dist/components/dropdown-menu.esm.js.map +1 -0
  98. package/dist/components/dropdown-menu.js +2 -0
  99. package/dist/components/dropdown-menu.js.map +1 -0
  100. package/dist/components/dropzone.d.ts +12 -0
  101. package/dist/components/dropzone.esm.js +45 -0
  102. package/dist/components/dropzone.esm.js.map +1 -0
  103. package/dist/components/dropzone.js +2 -0
  104. package/dist/components/dropzone.js.map +1 -0
  105. package/dist/components/image-cropper-modal.d.ts +10 -0
  106. package/dist/components/image-cropper-modal.esm.js +251 -0
  107. package/dist/components/image-cropper-modal.esm.js.map +1 -0
  108. package/dist/components/image-cropper-modal.js +2 -0
  109. package/dist/components/image-cropper-modal.js.map +1 -0
  110. package/dist/components/image-cropper.d.ts +11 -0
  111. package/dist/components/image-cropper.esm.js +131 -0
  112. package/dist/components/image-cropper.esm.js.map +1 -0
  113. package/dist/components/image-cropper.js +2 -0
  114. package/dist/components/image-cropper.js.map +1 -0
  115. package/dist/components/input.d.ts +5 -0
  116. package/dist/components/input.esm.js +22 -0
  117. package/dist/components/input.esm.js.map +1 -0
  118. package/dist/components/input.js +2 -0
  119. package/dist/components/input.js.map +1 -0
  120. package/dist/components/label.d.ts +4 -0
  121. package/dist/components/label.esm.js +20 -0
  122. package/dist/components/label.esm.js.map +1 -0
  123. package/dist/components/label.js +2 -0
  124. package/dist/components/label.js.map +1 -0
  125. package/dist/components/loader.d.ts +10 -0
  126. package/dist/components/loader.esm.js +70 -0
  127. package/dist/components/loader.esm.js.map +1 -0
  128. package/dist/components/loader.js +2 -0
  129. package/dist/components/loader.js.map +1 -0
  130. package/dist/components/loading-placeholder.d.ts +8 -0
  131. package/dist/components/loading-placeholder.esm.js +25 -0
  132. package/dist/components/loading-placeholder.esm.js.map +1 -0
  133. package/dist/components/loading-placeholder.js +2 -0
  134. package/dist/components/loading-placeholder.js.map +1 -0
  135. package/dist/components/markdown.d.ts +2 -0
  136. package/dist/components/markdown.esm.js +12066 -0
  137. package/dist/components/markdown.esm.js.map +1 -0
  138. package/dist/components/markdown.js +18 -0
  139. package/dist/components/markdown.js.map +1 -0
  140. package/dist/components/mention.d.ts +25 -0
  141. package/dist/components/mention.esm.js +154 -0
  142. package/dist/components/mention.esm.js.map +1 -0
  143. package/dist/components/mention.js +2 -0
  144. package/dist/components/mention.js.map +1 -0
  145. package/dist/components/modal.d.ts +19 -0
  146. package/dist/components/modal.esm.js +92 -0
  147. package/dist/components/modal.esm.js.map +1 -0
  148. package/dist/components/modal.js +2 -0
  149. package/dist/components/modal.js.map +1 -0
  150. package/dist/components/monaco-editor.d.ts +2 -0
  151. package/dist/components/monaco-editor.esm.js +295 -0
  152. package/dist/components/monaco-editor.esm.js.map +1 -0
  153. package/dist/components/monaco-editor.js +8 -0
  154. package/dist/components/monaco-editor.js.map +1 -0
  155. package/dist/components/notification.d.ts +5 -0
  156. package/dist/components/notification.esm.js +26 -0
  157. package/dist/components/notification.esm.js.map +1 -0
  158. package/dist/components/notification.js +2 -0
  159. package/dist/components/notification.js.map +1 -0
  160. package/dist/components/popover.d.ts +6 -0
  161. package/dist/components/popover.esm.js +24 -0
  162. package/dist/components/popover.esm.js.map +1 -0
  163. package/dist/components/popover.js +2 -0
  164. package/dist/components/popover.js.map +1 -0
  165. package/dist/components/progress.d.ts +4 -0
  166. package/dist/components/progress.esm.js +35 -0
  167. package/dist/components/progress.esm.js.map +1 -0
  168. package/dist/components/progress.js +2 -0
  169. package/dist/components/progress.js.map +1 -0
  170. package/dist/components/radio-group.d.ts +5 -0
  171. package/dist/components/radio-group.esm.js +48 -0
  172. package/dist/components/radio-group.esm.js.map +1 -0
  173. package/dist/components/radio-group.js +2 -0
  174. package/dist/components/radio-group.js.map +1 -0
  175. package/dist/components/scroll-area.d.ts +5 -0
  176. package/dist/components/scroll-area.esm.js +47 -0
  177. package/dist/components/scroll-area.esm.js.map +1 -0
  178. package/dist/components/scroll-area.js +2 -0
  179. package/dist/components/scroll-area.js.map +1 -0
  180. package/dist/components/select.d.ts +20 -0
  181. package/dist/components/select.esm.js +131 -0
  182. package/dist/components/select.esm.js.map +1 -0
  183. package/dist/components/select.js +2 -0
  184. package/dist/components/select.js.map +1 -0
  185. package/dist/components/selection-bar.d.ts +11 -0
  186. package/dist/components/selection-bar.esm.js +54 -0
  187. package/dist/components/selection-bar.esm.js.map +1 -0
  188. package/dist/components/selection-bar.js +2 -0
  189. package/dist/components/selection-bar.js.map +1 -0
  190. package/dist/components/separator.d.ts +4 -0
  191. package/dist/components/separator.esm.js +25 -0
  192. package/dist/components/separator.esm.js.map +1 -0
  193. package/dist/components/separator.js +2 -0
  194. package/dist/components/separator.js.map +1 -0
  195. package/dist/components/sheet.d.ts +13 -0
  196. package/dist/components/sheet.esm.js +129 -0
  197. package/dist/components/sheet.esm.js.map +1 -0
  198. package/dist/components/sheet.js +2 -0
  199. package/dist/components/sheet.js.map +1 -0
  200. package/dist/components/skeleton.d.ts +2 -0
  201. package/dist/components/skeleton.esm.js +18 -0
  202. package/dist/components/skeleton.esm.js.map +1 -0
  203. package/dist/components/skeleton.js +2 -0
  204. package/dist/components/skeleton.js.map +1 -0
  205. package/dist/components/slider.d.ts +4 -0
  206. package/dist/components/slider.esm.js +33 -0
  207. package/dist/components/slider.esm.js.map +1 -0
  208. package/dist/components/slider.js +2 -0
  209. package/dist/components/slider.js.map +1 -0
  210. package/dist/components/stepper.d.ts +2 -0
  211. package/dist/components/stepper.esm.js +214 -0
  212. package/dist/components/stepper.esm.js.map +1 -0
  213. package/dist/components/stepper.js +2 -0
  214. package/dist/components/stepper.js.map +1 -0
  215. package/dist/components/switch.d.ts +4 -0
  216. package/dist/components/switch.esm.js +36 -0
  217. package/dist/components/switch.esm.js.map +1 -0
  218. package/dist/components/switch.js +2 -0
  219. package/dist/components/switch.js.map +1 -0
  220. package/dist/components/table-empty.d.ts +9 -0
  221. package/dist/components/table-empty.esm.js +23 -0
  222. package/dist/components/table-empty.esm.js.map +1 -0
  223. package/dist/components/table-empty.js +2 -0
  224. package/dist/components/table-empty.js.map +1 -0
  225. package/dist/components/table-mobile.d.ts +4 -0
  226. package/dist/components/table-mobile.esm.js +92 -0
  227. package/dist/components/table-mobile.esm.js.map +1 -0
  228. package/dist/components/table-mobile.js +2 -0
  229. package/dist/components/table-mobile.js.map +1 -0
  230. package/dist/components/table.d.ts +31 -0
  231. package/dist/components/table.esm.js +143 -0
  232. package/dist/components/table.esm.js.map +1 -0
  233. package/dist/components/table.js +2 -0
  234. package/dist/components/table.js.map +1 -0
  235. package/dist/components/tabs.d.ts +7 -0
  236. package/dist/components/tabs.esm.js +47 -0
  237. package/dist/components/tabs.esm.js.map +1 -0
  238. package/dist/components/tabs.js +2 -0
  239. package/dist/components/tabs.js.map +1 -0
  240. package/dist/components/terminal.d.ts +43 -0
  241. package/dist/components/terminal.esm.js +50 -0
  242. package/dist/components/terminal.esm.js.map +1 -0
  243. package/dist/components/terminal.js +2 -0
  244. package/dist/components/terminal.js.map +1 -0
  245. package/dist/components/textarea.d.ts +5 -0
  246. package/dist/components/textarea.esm.js +21 -0
  247. package/dist/components/textarea.esm.js.map +1 -0
  248. package/dist/components/textarea.js +2 -0
  249. package/dist/components/textarea.js.map +1 -0
  250. package/dist/components/tooltip.d.ts +8 -0
  251. package/dist/components/tooltip.esm.js +100 -0
  252. package/dist/components/tooltip.esm.js.map +1 -0
  253. package/dist/components/tooltip.js +2 -0
  254. package/dist/components/tooltip.js.map +1 -0
  255. package/dist/components/use-toast.d.ts +21 -0
  256. package/dist/components/use-toast.esm.js +65 -0
  257. package/dist/components/use-toast.esm.js.map +1 -0
  258. package/dist/components/use-toast.js +2 -0
  259. package/dist/components/use-toast.js.map +1 -0
  260. package/dist/confirmation-modal.d.ts +16 -0
  261. package/dist/context-menu.d.ts +41 -0
  262. package/dist/dialog.d.ts +33 -0
  263. package/dist/dropdown-menu.d.ts +16 -0
  264. package/dist/dropzone.d.ts +16 -0
  265. package/dist/image-cropper-modal.d.ts +14 -0
  266. package/dist/image-cropper.d.ts +15 -0
  267. package/dist/index-DACAHwoB.js +35 -0
  268. package/dist/index-DACAHwoB.js.map +1 -0
  269. package/dist/index-Deooizx8.cjs +2 -0
  270. package/dist/index-Deooizx8.cjs.map +1 -0
  271. package/dist/index.d.ts +8 -2
  272. package/dist/index.esm.js +111 -75430
  273. package/dist/index.esm.js.map +1 -1
  274. package/dist/index.js +2 -0
  275. package/dist/index.js.map +1 -0
  276. package/dist/input.d.ts +8 -0
  277. package/dist/jsx-runtime-BYECrxsp.cjs +31 -0
  278. package/dist/jsx-runtime-BYECrxsp.cjs.map +1 -0
  279. package/dist/jsx-runtime-DGlMoOmv.js +631 -0
  280. package/dist/jsx-runtime-DGlMoOmv.js.map +1 -0
  281. package/dist/label.d.ts +6 -0
  282. package/dist/lib/utils.d.ts +2 -0
  283. package/dist/lib/utils.esm.js +5 -0
  284. package/dist/lib/utils.esm.js.map +1 -0
  285. package/dist/lib/utils.js +2 -0
  286. package/dist/lib/utils.js.map +1 -0
  287. package/dist/loader.d.ts +14 -0
  288. package/dist/loading-placeholder.d.ts +12 -0
  289. package/dist/markdown.d.ts +122 -0
  290. package/dist/mention.d.ts +29 -0
  291. package/dist/modal.d.ts +24 -0
  292. package/dist/monaco-editor.d.ts +76 -0
  293. package/dist/notification.d.ts +9 -0
  294. package/dist/popover.d.ts +10 -0
  295. package/dist/progress.d.ts +6 -0
  296. package/dist/radio-group.d.ts +8 -0
  297. package/dist/scroll-area.d.ts +8 -0
  298. package/dist/select.d.ts +31 -0
  299. package/dist/selection-bar.d.ts +15 -0
  300. package/dist/separator.d.ts +6 -0
  301. package/dist/sheet.d.ts +17 -0
  302. package/dist/skeleton.d.ts +5 -0
  303. package/dist/slider.d.ts +6 -0
  304. package/dist/stepper.d.ts +71 -0
  305. package/dist/styles.css +1 -1
  306. package/dist/switch.d.ts +6 -0
  307. package/dist/table-empty.d.ts +13 -0
  308. package/dist/table-mobile.d.ts +37 -0
  309. package/dist/table.d.ts +37 -0
  310. package/dist/tabs.d.ts +12 -0
  311. package/dist/terminal.d.ts +47 -0
  312. package/dist/textarea.d.ts +8 -0
  313. package/dist/tooltip.d.ts +12 -0
  314. package/dist/use-toast.d.ts +28 -0
  315. package/dist/utils-DSKoFOjv.cjs +2 -0
  316. package/dist/utils-DSKoFOjv.cjs.map +1 -0
  317. package/dist/utils-qaFjX9_3.js +2279 -0
  318. package/dist/utils-qaFjX9_3.js.map +1 -0
  319. package/dist/utils.d.ts +5 -0
  320. package/package.json +259 -1
  321. package/dist/index.cjs.js +0 -315
  322. package/dist/index.cjs.js.map +0 -1
@@ -0,0 +1,25 @@
1
+ import { default as React } from 'react';
2
+ import { SuggestionDataItem } from 'react-mentions';
3
+ export interface MentionUserData extends SuggestionDataItem {
4
+ avatar?: string;
5
+ subtitle?: string;
6
+ }
7
+ export interface MentionProps {
8
+ value: string;
9
+ onChange: (event: {
10
+ target: {
11
+ value: string;
12
+ };
13
+ }) => void;
14
+ placeholder?: string;
15
+ data: MentionUserData[];
16
+ disabled?: boolean;
17
+ className?: string;
18
+ inputClassName?: string;
19
+ suggestionItemClassName?: string;
20
+ trigger?: string;
21
+ displayTransform?: (id: string, display: string) => string;
22
+ onKeyDown?: (e: React.KeyboardEvent) => void;
23
+ }
24
+ declare const MentionComponent: React.ForwardRefExoticComponent<MentionProps & React.RefAttributes<HTMLDivElement>>;
25
+ export { MentionComponent as Mention };
@@ -0,0 +1,154 @@
1
+ import { j as o } from "../jsx-runtime-DGlMoOmv.js";
2
+ import x, { forwardRef as f } from "react";
3
+ import { MentionsInput as b, Mention as v } from "react-mentions";
4
+ import { c as n } from "../utils-qaFjX9_3.js";
5
+ const y = (e, t, i, a, r) => /* @__PURE__ */ o.jsxs(
6
+ "div",
7
+ {
8
+ className: n(
9
+ "flex items-center gap-2 p-2 text-sm",
10
+ r ? "bg-primary/10 text-primary" : "bg-transparent"
11
+ ),
12
+ children: [
13
+ e.avatar && /* @__PURE__ */ o.jsx("div", { className: "flex-shrink-0 h-6 w-6 rounded-full overflow-hidden", children: /* @__PURE__ */ o.jsx(
14
+ "img",
15
+ {
16
+ src: e.avatar,
17
+ alt: e.display,
18
+ className: "h-full w-full object-cover"
19
+ }
20
+ ) }),
21
+ /* @__PURE__ */ o.jsxs("div", { className: "flex flex-col", children: [
22
+ /* @__PURE__ */ o.jsx("span", { className: "font-medium", children: e.display }),
23
+ e.subtitle && /* @__PURE__ */ o.jsx("span", { className: "text-xs text-muted-foreground", children: e.subtitle })
24
+ ] })
25
+ ]
26
+ }
27
+ ), w = (e, t) => `@${t}`, _ = f(
28
+ ({
29
+ value: e,
30
+ onChange: t,
31
+ placeholder: i = "Type @ to mention someone",
32
+ data: a,
33
+ disabled: r = !1,
34
+ className: s,
35
+ inputClassName: d,
36
+ suggestionItemClassName: l,
37
+ trigger: m = "@",
38
+ displayTransform: p = w,
39
+ onKeyDown: u
40
+ }, c) => {
41
+ const g = {
42
+ control: {
43
+ fontSize: 14,
44
+ fontWeight: "normal",
45
+ lineHeight: "1.5",
46
+ minHeight: "60px"
47
+ },
48
+ highlighter: {
49
+ border: "0",
50
+ boxSizing: "border-box",
51
+ overflow: "hidden",
52
+ minHeight: "60px"
53
+ },
54
+ input: {
55
+ padding: "12px 12px",
56
+ border: "0",
57
+ overflow: "auto",
58
+ fontSize: "14px",
59
+ outline: "none",
60
+ backgroundColor: "transparent",
61
+ fontFamily: "inherit",
62
+ lineHeight: "1.5",
63
+ minHeight: "60px",
64
+ margin: 0
65
+ },
66
+ suggestions: {
67
+ marginTop: "0px",
68
+ list: {
69
+ backgroundColor: "var(--suggestion-background, hsl(var(--background)))",
70
+ border: "1px solid hsl(var(--border))",
71
+ boxShadow: "0 4px 12px rgba(0, 0, 0, 0.1)",
72
+ overflow: "hidden",
73
+ zIndex: 100,
74
+ maxHeight: "250px",
75
+ overflowY: "auto",
76
+ color: "hsl(var(--foreground))",
77
+ minWidth: "280px",
78
+ width: "auto"
79
+ },
80
+ item: {
81
+ padding: "0",
82
+ borderBottom: "1px solid hsl(var(--border))"
83
+ }
84
+ }
85
+ }, h = {
86
+ mentions: {
87
+ normal: {
88
+ color: "inherit",
89
+ fontWeight: "normal"
90
+ },
91
+ highlight: {
92
+ color: "hsl(var(--primary))",
93
+ fontWeight: "500",
94
+ backgroundColor: "transparent",
95
+ padding: "0",
96
+ margin: "0",
97
+ boxShadow: "none",
98
+ borderRadius: "0",
99
+ textDecoration: "none"
100
+ }
101
+ }
102
+ };
103
+ return x.useEffect(() => {
104
+ typeof window < "u" && document.documentElement.style.setProperty(
105
+ "--suggestion-background",
106
+ "hsl(var(--background))"
107
+ );
108
+ }, []), /* @__PURE__ */ o.jsx(
109
+ "div",
110
+ {
111
+ ref: c,
112
+ className: n("relative w-full", s),
113
+ children: /* @__PURE__ */ o.jsx(
114
+ b,
115
+ {
116
+ value: e,
117
+ onChange: t,
118
+ style: { ...g, ...h },
119
+ placeholder: i,
120
+ disabled: r,
121
+ a11ySuggestionsListLabel: "Suggested mentions",
122
+ className: n(
123
+ "w-full rounded-md bg-transparent text-sm placeholder:text-muted-foreground resize-none font-normal",
124
+ d
125
+ ),
126
+ suggestionsPortalHost: typeof document < "u" ? document.body : void 0,
127
+ allowSuggestionsAboveCursor: !0,
128
+ onKeyDown: u,
129
+ children: /* @__PURE__ */ o.jsx(
130
+ v,
131
+ {
132
+ trigger: m,
133
+ data: a,
134
+ renderSuggestion: y,
135
+ displayTransform: p,
136
+ appendSpaceOnAdd: !0,
137
+ className: n(
138
+ "text-primary font-medium",
139
+ l
140
+ ),
141
+ markup: "@[__display__](__id__)"
142
+ }
143
+ )
144
+ }
145
+ )
146
+ }
147
+ );
148
+ }
149
+ );
150
+ _.displayName = "Mention";
151
+ export {
152
+ _ as Mention
153
+ };
154
+ //# sourceMappingURL=mention.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention.esm.js","sources":["../../src/components/mention.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport { MentionsInput, MentionsInputStyle, Mention as ReactMention, SuggestionDataItem } from \"react-mentions\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface MentionUserData extends SuggestionDataItem {\n avatar?: string;\n subtitle?: string;\n}\n\nexport interface MentionProps {\n value: string;\n onChange: (event: { target: { value: string } }) => void;\n placeholder?: string;\n data: MentionUserData[];\n disabled?: boolean;\n className?: string;\n inputClassName?: string;\n suggestionItemClassName?: string;\n trigger?: string;\n displayTransform?: (id: string, display: string) => string;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nconst defaultRenderSuggestion = (\n suggestion: MentionUserData,\n _search: string,\n _highlightedDisplay: React.ReactNode,\n _index: number,\n focused: boolean\n) => (\n <div\n className={cn(\n \"flex items-center gap-2 p-2 text-sm\",\n focused ? \"bg-primary/10 text-primary\" : \"bg-transparent\"\n )}\n >\n {suggestion.avatar && (\n <div className=\"flex-shrink-0 h-6 w-6 rounded-full overflow-hidden\">\n <img\n src={suggestion.avatar}\n alt={suggestion.display}\n className=\"h-full w-full object-cover\"\n />\n </div>\n )}\n <div className=\"flex flex-col\">\n <span className=\"font-medium\">{suggestion.display}</span>\n {suggestion.subtitle && (\n <span className=\"text-xs text-muted-foreground\">{suggestion.subtitle}</span>\n )}\n </div>\n </div>\n);\n\nconst defaultDisplayTransform = (_id: string, display: string) => `@${display}`;\n\nconst MentionComponent = forwardRef<HTMLDivElement, MentionProps>(\n (\n {\n value,\n onChange,\n placeholder = \"Type @ to mention someone\",\n data,\n disabled = false,\n className,\n inputClassName,\n suggestionItemClassName,\n trigger = \"@\",\n displayTransform = defaultDisplayTransform,\n onKeyDown,\n },\n ref\n ) => {\n // Custom styles to match your UI\n const mentionInputStyle: MentionsInputStyle = {\n control: {\n fontSize: 14,\n fontWeight: 'normal',\n lineHeight: '1.5',\n minHeight: '60px',\n },\n highlighter: {\n border: '0',\n boxSizing: 'border-box',\n overflow: 'hidden',\n minHeight: '60px',\n },\n input: {\n padding: '12px 12px',\n border: '0',\n overflow: 'auto',\n fontSize: '14px',\n outline: 'none',\n backgroundColor: 'transparent',\n fontFamily: 'inherit',\n lineHeight: '1.5',\n minHeight: '60px',\n margin: 0,\n },\n suggestions: {\n marginTop: \"0px\",\n list: {\n backgroundColor: \"var(--suggestion-background, hsl(var(--background)))\",\n border: \"1px solid hsl(var(--border))\",\n boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.1)\",\n overflow: \"hidden\",\n zIndex: 100,\n maxHeight: \"250px\",\n overflowY: \"auto\",\n color: \"hsl(var(--foreground))\",\n minWidth: \"280px\",\n width: \"auto\"\n },\n item: {\n padding: \"0\",\n borderBottom: \"1px solid hsl(var(--border))\"\n },\n },\n };\n\n // Custom styles for the mention component (the highlight)\n const customStyle = {\n mentions: {\n normal: {\n color: \"inherit\", \n fontWeight: \"normal\"\n },\n highlight: {\n color: \"hsl(var(--primary))\",\n fontWeight: \"500\",\n backgroundColor: \"transparent\",\n padding: \"0\",\n margin: \"0\",\n boxShadow: \"none\",\n borderRadius: \"0\",\n textDecoration: \"none\"\n }\n }\n };\n\n // Add theme CSS variables to document when component mounts\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n document.documentElement.style.setProperty(\n '--suggestion-background', \n 'hsl(var(--background))'\n );\n }\n }, []);\n\n return (\n <div\n ref={ref}\n className={cn(\"relative w-full\", className)}\n >\n <MentionsInput\n value={value}\n onChange={onChange}\n style={{...mentionInputStyle, ...customStyle}}\n placeholder={placeholder}\n disabled={disabled}\n a11ySuggestionsListLabel=\"Suggested mentions\"\n className={cn(\n \"w-full rounded-md bg-transparent text-sm placeholder:text-muted-foreground resize-none font-normal\",\n inputClassName\n )}\n suggestionsPortalHost={typeof document !== \"undefined\" ? document.body : undefined}\n allowSuggestionsAboveCursor={true}\n onKeyDown={onKeyDown}\n >\n <ReactMention\n trigger={trigger}\n data={data}\n renderSuggestion={defaultRenderSuggestion}\n displayTransform={displayTransform}\n appendSpaceOnAdd\n className={cn(\n \"text-primary font-medium\",\n suggestionItemClassName\n )}\n markup=\"@[__display__](__id__)\"\n />\n </MentionsInput>\n </div>\n );\n }\n);\n\nMentionComponent.displayName = \"Mention\";\n\nexport { MentionComponent as Mention }; "],"names":["defaultRenderSuggestion","suggestion","_search","_highlightedDisplay","_index","focused","jsxs","cn","jsx","defaultDisplayTransform","_id","display","MentionComponent","forwardRef","value","onChange","placeholder","data","disabled","className","inputClassName","suggestionItemClassName","trigger","displayTransform","onKeyDown","ref","mentionInputStyle","customStyle","React","MentionsInput","ReactMention"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("../jsx-runtime-BYECrxsp.cjs"),a=require("react"),l=require("react-mentions"),o=require("../utils-DSKoFOjv.cjs"),v=(e,n,i,s,r)=>t.jsxRuntimeExports.jsxs("div",{className:o.cn("flex items-center gap-2 p-2 text-sm",r?"bg-primary/10 text-primary":"bg-transparent"),children:[e.avatar&&t.jsxRuntimeExports.jsx("div",{className:"flex-shrink-0 h-6 w-6 rounded-full overflow-hidden",children:t.jsxRuntimeExports.jsx("img",{src:e.avatar,alt:e.display,className:"h-full w-full object-cover"})}),t.jsxRuntimeExports.jsxs("div",{className:"flex flex-col",children:[t.jsxRuntimeExports.jsx("span",{className:"font-medium",children:e.display}),e.subtitle&&t.jsxRuntimeExports.jsx("span",{className:"text-xs text-muted-foreground",children:e.subtitle})]})]}),y=(e,n)=>`@${n}`,d=a.forwardRef(({value:e,onChange:n,placeholder:i="Type @ to mention someone",data:s,disabled:r=!1,className:u,inputClassName:m,suggestionItemClassName:x,trigger:c="@",displayTransform:p=y,onKeyDown:g},h)=>{const f={control:{fontSize:14,fontWeight:"normal",lineHeight:"1.5",minHeight:"60px"},highlighter:{border:"0",boxSizing:"border-box",overflow:"hidden",minHeight:"60px"},input:{padding:"12px 12px",border:"0",overflow:"auto",fontSize:"14px",outline:"none",backgroundColor:"transparent",fontFamily:"inherit",lineHeight:"1.5",minHeight:"60px",margin:0},suggestions:{marginTop:"0px",list:{backgroundColor:"var(--suggestion-background, hsl(var(--background)))",border:"1px solid hsl(var(--border))",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.1)",overflow:"hidden",zIndex:100,maxHeight:"250px",overflowY:"auto",color:"hsl(var(--foreground))",minWidth:"280px",width:"auto"},item:{padding:"0",borderBottom:"1px solid hsl(var(--border))"}}},b={mentions:{normal:{color:"inherit",fontWeight:"normal"},highlight:{color:"hsl(var(--primary))",fontWeight:"500",backgroundColor:"transparent",padding:"0",margin:"0",boxShadow:"none",borderRadius:"0",textDecoration:"none"}}};return a.useEffect(()=>{typeof window<"u"&&document.documentElement.style.setProperty("--suggestion-background","hsl(var(--background))")},[]),t.jsxRuntimeExports.jsx("div",{ref:h,className:o.cn("relative w-full",u),children:t.jsxRuntimeExports.jsx(l.MentionsInput,{value:e,onChange:n,style:{...f,...b},placeholder:i,disabled:r,a11ySuggestionsListLabel:"Suggested mentions",className:o.cn("w-full rounded-md bg-transparent text-sm placeholder:text-muted-foreground resize-none font-normal",m),suggestionsPortalHost:typeof document<"u"?document.body:void 0,allowSuggestionsAboveCursor:!0,onKeyDown:g,children:t.jsxRuntimeExports.jsx(l.Mention,{trigger:c,data:s,renderSuggestion:v,displayTransform:p,appendSpaceOnAdd:!0,className:o.cn("text-primary font-medium",x),markup:"@[__display__](__id__)"})})})});d.displayName="Mention";exports.Mention=d;
2
+ //# sourceMappingURL=mention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention.js","sources":["../../src/components/mention.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport { MentionsInput, MentionsInputStyle, Mention as ReactMention, SuggestionDataItem } from \"react-mentions\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface MentionUserData extends SuggestionDataItem {\n avatar?: string;\n subtitle?: string;\n}\n\nexport interface MentionProps {\n value: string;\n onChange: (event: { target: { value: string } }) => void;\n placeholder?: string;\n data: MentionUserData[];\n disabled?: boolean;\n className?: string;\n inputClassName?: string;\n suggestionItemClassName?: string;\n trigger?: string;\n displayTransform?: (id: string, display: string) => string;\n onKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nconst defaultRenderSuggestion = (\n suggestion: MentionUserData,\n _search: string,\n _highlightedDisplay: React.ReactNode,\n _index: number,\n focused: boolean\n) => (\n <div\n className={cn(\n \"flex items-center gap-2 p-2 text-sm\",\n focused ? \"bg-primary/10 text-primary\" : \"bg-transparent\"\n )}\n >\n {suggestion.avatar && (\n <div className=\"flex-shrink-0 h-6 w-6 rounded-full overflow-hidden\">\n <img\n src={suggestion.avatar}\n alt={suggestion.display}\n className=\"h-full w-full object-cover\"\n />\n </div>\n )}\n <div className=\"flex flex-col\">\n <span className=\"font-medium\">{suggestion.display}</span>\n {suggestion.subtitle && (\n <span className=\"text-xs text-muted-foreground\">{suggestion.subtitle}</span>\n )}\n </div>\n </div>\n);\n\nconst defaultDisplayTransform = (_id: string, display: string) => `@${display}`;\n\nconst MentionComponent = forwardRef<HTMLDivElement, MentionProps>(\n (\n {\n value,\n onChange,\n placeholder = \"Type @ to mention someone\",\n data,\n disabled = false,\n className,\n inputClassName,\n suggestionItemClassName,\n trigger = \"@\",\n displayTransform = defaultDisplayTransform,\n onKeyDown,\n },\n ref\n ) => {\n // Custom styles to match your UI\n const mentionInputStyle: MentionsInputStyle = {\n control: {\n fontSize: 14,\n fontWeight: 'normal',\n lineHeight: '1.5',\n minHeight: '60px',\n },\n highlighter: {\n border: '0',\n boxSizing: 'border-box',\n overflow: 'hidden',\n minHeight: '60px',\n },\n input: {\n padding: '12px 12px',\n border: '0',\n overflow: 'auto',\n fontSize: '14px',\n outline: 'none',\n backgroundColor: 'transparent',\n fontFamily: 'inherit',\n lineHeight: '1.5',\n minHeight: '60px',\n margin: 0,\n },\n suggestions: {\n marginTop: \"0px\",\n list: {\n backgroundColor: \"var(--suggestion-background, hsl(var(--background)))\",\n border: \"1px solid hsl(var(--border))\",\n boxShadow: \"0 4px 12px rgba(0, 0, 0, 0.1)\",\n overflow: \"hidden\",\n zIndex: 100,\n maxHeight: \"250px\",\n overflowY: \"auto\",\n color: \"hsl(var(--foreground))\",\n minWidth: \"280px\",\n width: \"auto\"\n },\n item: {\n padding: \"0\",\n borderBottom: \"1px solid hsl(var(--border))\"\n },\n },\n };\n\n // Custom styles for the mention component (the highlight)\n const customStyle = {\n mentions: {\n normal: {\n color: \"inherit\", \n fontWeight: \"normal\"\n },\n highlight: {\n color: \"hsl(var(--primary))\",\n fontWeight: \"500\",\n backgroundColor: \"transparent\",\n padding: \"0\",\n margin: \"0\",\n boxShadow: \"none\",\n borderRadius: \"0\",\n textDecoration: \"none\"\n }\n }\n };\n\n // Add theme CSS variables to document when component mounts\n React.useEffect(() => {\n if (typeof window !== 'undefined') {\n document.documentElement.style.setProperty(\n '--suggestion-background', \n 'hsl(var(--background))'\n );\n }\n }, []);\n\n return (\n <div\n ref={ref}\n className={cn(\"relative w-full\", className)}\n >\n <MentionsInput\n value={value}\n onChange={onChange}\n style={{...mentionInputStyle, ...customStyle}}\n placeholder={placeholder}\n disabled={disabled}\n a11ySuggestionsListLabel=\"Suggested mentions\"\n className={cn(\n \"w-full rounded-md bg-transparent text-sm placeholder:text-muted-foreground resize-none font-normal\",\n inputClassName\n )}\n suggestionsPortalHost={typeof document !== \"undefined\" ? document.body : undefined}\n allowSuggestionsAboveCursor={true}\n onKeyDown={onKeyDown}\n >\n <ReactMention\n trigger={trigger}\n data={data}\n renderSuggestion={defaultRenderSuggestion}\n displayTransform={displayTransform}\n appendSpaceOnAdd\n className={cn(\n \"text-primary font-medium\",\n suggestionItemClassName\n )}\n markup=\"@[__display__](__id__)\"\n />\n </MentionsInput>\n </div>\n );\n }\n);\n\nMentionComponent.displayName = \"Mention\";\n\nexport { MentionComponent as Mention }; "],"names":["defaultRenderSuggestion","suggestion","_search","_highlightedDisplay","_index","focused","jsxs","cn","jsx","defaultDisplayTransform","_id","display","MentionComponent","forwardRef","value","onChange","placeholder","data","disabled","className","inputClassName","suggestionItemClassName","trigger","displayTransform","onKeyDown","ref","mentionInputStyle","customStyle","React","MentionsInput","ReactMention"],"mappings":"iNAuBMA,EAA0B,CAC9BC,EACAC,EACAC,EACAC,EACAC,IAEAC,EAAAA,kBAAAA,KAAC,MAAA,CACC,UAAWC,EAAAA,GACT,sCACAF,EAAU,6BAA+B,gBAAA,EAG1C,SAAA,CAAAJ,EAAW,QACVO,wBAAC,MAAA,CAAI,UAAU,qDACb,SAAAA,EAAAA,kBAAAA,IAAC,MAAA,CACC,IAAKP,EAAW,OAChB,IAAKA,EAAW,QAChB,UAAU,4BAAA,CAAA,EAEd,EAEFK,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,gBACb,SAAA,CAAAE,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,cAAe,SAAAP,EAAW,QAAQ,EACjDA,EAAW,UACVO,EAAAA,kBAAAA,IAAC,QAAK,UAAU,gCAAiC,WAAW,QAAA,CAAS,CAAA,CAAA,CAEzE,CAAA,CAAA,CACF,EAGIC,EAA0B,CAACC,EAAaC,IAAoB,IAAIA,CAAO,GAEvEC,EAAmBC,EAAAA,WACvB,CACE,CACE,MAAAC,EACA,SAAAC,EACA,YAAAC,EAAc,4BACd,KAAAC,EACA,SAAAC,EAAW,GACX,UAAAC,EACA,eAAAC,EACA,wBAAAC,EACA,QAAAC,EAAU,IACV,iBAAAC,EAAmBd,EACnB,UAAAe,CAAA,EAEFC,IACG,CAEH,MAAMC,EAAwC,CAC5C,QAAS,CACP,SAAU,GACV,WAAY,SACZ,WAAY,MACZ,UAAW,MAAA,EAEb,YAAa,CACX,OAAQ,IACR,UAAW,aACX,SAAU,SACV,UAAW,MAAA,EAEb,MAAO,CACL,QAAS,YACT,OAAQ,IACR,SAAU,OACV,SAAU,OACV,QAAS,OACT,gBAAiB,cACjB,WAAY,UACZ,WAAY,MACZ,UAAW,OACX,OAAQ,CAAA,EAEV,YAAa,CACX,UAAW,MACX,KAAM,CACJ,gBAAiB,uDACjB,OAAQ,+BACR,UAAW,gCACX,SAAU,SACV,OAAQ,IACR,UAAW,QACX,UAAW,OACX,MAAO,yBACP,SAAU,QACV,MAAO,MAAA,EAET,KAAM,CACJ,QAAS,IACT,aAAc,8BAAA,CAChB,CACF,EAIIC,EAAc,CAClB,SAAU,CACR,OAAQ,CACN,MAAO,UACP,WAAY,QAAA,EAEd,UAAW,CACT,MAAO,sBACP,WAAY,MACZ,gBAAiB,cACjB,QAAS,IACT,OAAQ,IACR,UAAW,OACX,aAAc,IACd,eAAgB,MAAA,CAClB,CACF,EAIF,OAAAC,EAAM,UAAU,IAAM,CAChB,OAAO,OAAW,KACpB,SAAS,gBAAgB,MAAM,YAC7B,0BACA,wBAAA,CAGN,EAAG,CAAA,CAAE,EAGHpB,EAAAA,kBAAAA,IAAC,MAAA,CACC,IAAAiB,EACA,UAAWlB,EAAAA,GAAG,kBAAmBY,CAAS,EAE1C,SAAAX,EAAAA,kBAAAA,IAACqB,EAAAA,cAAA,CACC,MAAAf,EACA,SAAAC,EACA,MAAO,CAAC,GAAGW,EAAmB,GAAGC,CAAA,EACjC,YAAAX,EACA,SAAAE,EACA,yBAAyB,qBACzB,UAAWX,EAAAA,GACT,qGACAa,CAAA,EAEF,sBAAuB,OAAO,SAAa,IAAc,SAAS,KAAO,OACzE,4BAA6B,GAC7B,UAAAI,EAEA,SAAAhB,EAAAA,kBAAAA,IAACsB,EAAAA,QAAA,CACC,QAAAR,EACA,KAAAL,EACA,iBAAkBjB,EAClB,iBAAAuB,EACA,iBAAgB,GAChB,UAAWhB,EAAAA,GACT,2BACAc,CAAA,EAEF,OAAO,wBAAA,CAAA,CACT,CAAA,CACF,CAAA,CAGN,CACF,EAEAT,EAAiB,YAAc"}
@@ -0,0 +1,19 @@
1
+ export interface ModalProps {
2
+ isOpen: boolean;
3
+ onClose: () => void;
4
+ title?: string;
5
+ description?: string | React.ReactNode;
6
+ icon?: React.ReactNode;
7
+ children: React.ReactNode;
8
+ footer?: React.ReactNode;
9
+ size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | '3xl';
10
+ showClose?: boolean;
11
+ className?: string;
12
+ mainClassName?: string;
13
+ isContentScrollable?: boolean;
14
+ header?: React.ReactNode;
15
+ headerClassName?: string;
16
+ contentClassName?: string;
17
+ zIndexClassName?: string;
18
+ }
19
+ export declare function Modal({ isOpen, onClose, title, description, icon, children, footer, size, showClose, className, isContentScrollable, mainClassName, contentClassName, header, zIndexClassName }: ModalProps): import('react').ReactPortal;
@@ -0,0 +1,92 @@
1
+ import { j as e } from "../jsx-runtime-DGlMoOmv.js";
2
+ import { createPortal as y } from "react-dom";
3
+ import { AnimatePresence as g, motion as c } from "framer-motion";
4
+ import { X as N } from "lucide-react";
5
+ import { c as r } from "../utils-qaFjX9_3.js";
6
+ import { useCallback as k, useEffect as E } from "react";
7
+ const z = {
8
+ sm: "max-w-sm",
9
+ md: "max-w-md",
10
+ lg: "max-w-lg",
11
+ xl: "max-w-xl",
12
+ "2xl": "max-w-[1200px] w-[90vw]",
13
+ "3xl": "max-w-[1600px] w-[90vw]",
14
+ full: "w-[100vw]"
15
+ };
16
+ function M({
17
+ isOpen: t,
18
+ onClose: s,
19
+ title: a,
20
+ description: d,
21
+ icon: i,
22
+ children: o,
23
+ footer: n,
24
+ size: x = "md",
25
+ showClose: u = !0,
26
+ className: f,
27
+ isContentScrollable: p = !0,
28
+ mainClassName: b,
29
+ contentClassName: h,
30
+ header: m,
31
+ zIndexClassName: j = "z-[50]"
32
+ }) {
33
+ const l = k((w) => {
34
+ w.key === "Escape" && t && s();
35
+ }, [t, s]);
36
+ E(() => (document.addEventListener("keydown", l), () => document.removeEventListener("keydown", l)), [l]);
37
+ const v = /* @__PURE__ */ e.jsx(g, { children: t && /* @__PURE__ */ e.jsx("div", { className: r("fixed inset-0 z-50 overflow-hidden", j), children: /* @__PURE__ */ e.jsxs("div", { className: r("min-h-full flex items-center justify-center p-4", b), children: [
38
+ /* @__PURE__ */ e.jsx(
39
+ c.div,
40
+ {
41
+ initial: { opacity: 0 },
42
+ animate: { opacity: 1 },
43
+ exit: { opacity: 0 },
44
+ className: "fixed inset-0 bg-background/80 backdrop-blur-sm",
45
+ onClick: s
46
+ }
47
+ ),
48
+ /* @__PURE__ */ e.jsxs(
49
+ c.div,
50
+ {
51
+ initial: { opacity: 0, scale: 0.95 },
52
+ animate: { opacity: 1, scale: 1 },
53
+ exit: { opacity: 0, scale: 0.95 },
54
+ transition: { duration: 0.1, ease: "easeOut" },
55
+ className: r(
56
+ "relative transform rounded-lg bg-background shadow-xl border border-border flex flex-col max-h-[85vh]",
57
+ z[x],
58
+ f
59
+ ),
60
+ children: [
61
+ (a || d || i || m) && /* @__PURE__ */ e.jsxs("div", { className: "flex-shrink-0 flex items-center justify-between p-2 border-b border-border", children: [
62
+ m || /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-3", children: [
63
+ i && /* @__PURE__ */ e.jsx("div", { className: "h-8 w-8 rounded-lg bg-primary flex items-center justify-center", children: i }),
64
+ /* @__PURE__ */ e.jsxs("div", { children: [
65
+ a && /* @__PURE__ */ e.jsx("h2", { className: "text-sm font-small", children: a }),
66
+ d && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted-foreground", children: d })
67
+ ] })
68
+ ] }),
69
+ u && /* @__PURE__ */ e.jsx(
70
+ "button",
71
+ {
72
+ onClick: s,
73
+ className: "p-1.5 rounded-md hover:bg-muted text-muted-foreground",
74
+ children: /* @__PURE__ */ e.jsxs("div", { className: "flex justify-center items-center", children: [
75
+ /* @__PURE__ */ e.jsx(N, { className: "h-4 w-4" }),
76
+ /* @__PURE__ */ e.jsx("kbd", { className: "ml-2 text-[10px] text-muted-foreground bg-muted px-1.5 py-0.5 rounded", children: "ESC" })
77
+ ] })
78
+ }
79
+ )
80
+ ] }),
81
+ /* @__PURE__ */ e.jsx("div", { className: r("flex-1 min-h-0", p ? "overflow-y-auto" : "", h), children: o }),
82
+ n && /* @__PURE__ */ e.jsx("div", { className: "flex-shrink-0 flex items-center justify-end gap-2 px-4 py-3 border-t border-border bg-muted/50", children: n })
83
+ ]
84
+ }
85
+ )
86
+ ] }) }) });
87
+ return y(v, document.body);
88
+ }
89
+ export {
90
+ M as Modal
91
+ };
92
+ //# sourceMappingURL=modal.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.esm.js","sources":["../../src/components/modal.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useEffect, useCallback } from 'react';\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n description?: string | React.ReactNode;\n icon?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | '3xl';\n showClose?: boolean;\n className?: string;\n mainClassName?: string;\n isContentScrollable?: boolean;\n header?: React.ReactNode;\n headerClassName?: string;\n contentClassName?: string;\n zIndexClassName?: string;\n}\n\nconst sizeClasses = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n '2xl': 'max-w-[1200px] w-[90vw]',\n '3xl': 'max-w-[1600px] w-[90vw]',\n full: 'w-[100vw]'\n};\n\nexport function Modal({\n isOpen,\n onClose,\n title,\n description,\n icon,\n children,\n footer,\n size = 'md',\n showClose = true,\n className,\n isContentScrollable = true,\n mainClassName,\n contentClassName,\n header,\n zIndexClassName = 'z-[50]'\n}: ModalProps) {\n const handleKeyDown = useCallback((e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n }, [isOpen, onClose]);\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [handleKeyDown]);\n\n const content = (\n <AnimatePresence>\n {isOpen && (\n <div className={cn(\"fixed inset-0 z-50 overflow-hidden\", zIndexClassName)}>\n <div className={cn(\"min-h-full flex items-center justify-center p-4\", mainClassName)}>\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={onClose}\n />\n \n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.95 }}\n transition={{ duration: 0.1, ease: \"easeOut\" }}\n className={cn(\n \"relative transform rounded-lg bg-background shadow-xl border border-border flex flex-col max-h-[85vh]\",\n sizeClasses[size],\n className\n )}\n >\n {/* Header - Fixed */}\n {(title || description || icon || header) && (\n <div className=\"flex-shrink-0 flex items-center justify-between p-2 border-b border-border\">\n \n {header ? header: (\n <div className=\"flex items-center gap-3\">\n {icon && (\n <div className=\"h-8 w-8 rounded-lg bg-primary flex items-center justify-center\">\n {icon}\n </div>\n )}\n <div>\n {title && <h2 className=\"text-sm font-small\">{title}</h2>}\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n </div>\n )}\n {showClose && (\n <button\n onClick={onClose}\n className=\"p-1.5 rounded-md hover:bg-muted text-muted-foreground\"\n >\n <div className=\"flex justify-center items-center\">\n <X className=\"h-4 w-4\" />\n <kbd className=\"ml-2 text-[10px] text-muted-foreground bg-muted px-1.5 py-0.5 rounded\">\n ESC\n </kbd>\n </div>\n </button>\n )}\n </div>\n )}\n\n {/* Content - Scrollable */}\n <div className={cn(\"flex-1 min-h-0\", isContentScrollable ? 'overflow-y-auto' : '', contentClassName )}>\n {children}\n </div>\n\n {/* Footer - Fixed */}\n {footer && (\n <div className=\"flex-shrink-0 flex items-center justify-end gap-2 px-4 py-3 border-t border-border bg-muted/50\">\n {footer}\n </div>\n )}\n </motion.div>\n </div>\n </div>\n )}\n </AnimatePresence>\n );\n\n return createPortal(content, document.body);\n}"],"names":["sizeClasses","Modal","isOpen","onClose","title","description","icon","children","footer","size","showClose","className","isContentScrollable","mainClassName","contentClassName","header","zIndexClassName","handleKeyDown","useCallback","e","useEffect","content","jsx","AnimatePresence","cn","jsxs","motion","X","createPortal"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../jsx-runtime-BYECrxsp.cjs"),w=require("react-dom"),m=require("framer-motion"),R=require("lucide-react"),t=require("../utils-DSKoFOjv.cjs"),d=require("react"),g={sm:"max-w-sm",md:"max-w-md",lg:"max-w-lg",xl:"max-w-xl","2xl":"max-w-[1200px] w-[90vw]","3xl":"max-w-[1600px] w-[90vw]",full:"w-[100vw]"};function N({isOpen:r,onClose:s,title:n,description:i,icon:x,children:l,footer:c,size:u="md",showClose:j=!0,className:p,isContentScrollable:f=!0,mainClassName:b,contentClassName:h,header:a,zIndexClassName:v="z-[50]"}){const o=d.useCallback(E=>{E.key==="Escape"&&r&&s()},[r,s]);d.useEffect(()=>(document.addEventListener("keydown",o),()=>document.removeEventListener("keydown",o)),[o]);const y=e.jsxRuntimeExports.jsx(m.AnimatePresence,{children:r&&e.jsxRuntimeExports.jsx("div",{className:t.cn("fixed inset-0 z-50 overflow-hidden",v),children:e.jsxRuntimeExports.jsxs("div",{className:t.cn("min-h-full flex items-center justify-center p-4",b),children:[e.jsxRuntimeExports.jsx(m.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 bg-background/80 backdrop-blur-sm",onClick:s}),e.jsxRuntimeExports.jsxs(m.motion.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},transition:{duration:.1,ease:"easeOut"},className:t.cn("relative transform rounded-lg bg-background shadow-xl border border-border flex flex-col max-h-[85vh]",g[u],p),children:[(n||i||x||a)&&e.jsxRuntimeExports.jsxs("div",{className:"flex-shrink-0 flex items-center justify-between p-2 border-b border-border",children:[a||e.jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-3",children:[x&&e.jsxRuntimeExports.jsx("div",{className:"h-8 w-8 rounded-lg bg-primary flex items-center justify-center",children:x}),e.jsxRuntimeExports.jsxs("div",{children:[n&&e.jsxRuntimeExports.jsx("h2",{className:"text-sm font-small",children:n}),i&&e.jsxRuntimeExports.jsx("p",{className:"text-sm text-muted-foreground",children:i})]})]}),j&&e.jsxRuntimeExports.jsx("button",{onClick:s,className:"p-1.5 rounded-md hover:bg-muted text-muted-foreground",children:e.jsxRuntimeExports.jsxs("div",{className:"flex justify-center items-center",children:[e.jsxRuntimeExports.jsx(R.X,{className:"h-4 w-4"}),e.jsxRuntimeExports.jsx("kbd",{className:"ml-2 text-[10px] text-muted-foreground bg-muted px-1.5 py-0.5 rounded",children:"ESC"})]})})]}),e.jsxRuntimeExports.jsx("div",{className:t.cn("flex-1 min-h-0",f?"overflow-y-auto":"",h),children:l}),c&&e.jsxRuntimeExports.jsx("div",{className:"flex-shrink-0 flex items-center justify-end gap-2 px-4 py-3 border-t border-border bg-muted/50",children:c})]})]})})});return w.createPortal(y,document.body)}exports.Modal=N;
2
+ //# sourceMappingURL=modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.js","sources":["../../src/components/modal.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useEffect, useCallback } from 'react';\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n description?: string | React.ReactNode;\n icon?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | '3xl';\n showClose?: boolean;\n className?: string;\n mainClassName?: string;\n isContentScrollable?: boolean;\n header?: React.ReactNode;\n headerClassName?: string;\n contentClassName?: string;\n zIndexClassName?: string;\n}\n\nconst sizeClasses = {\n sm: 'max-w-sm',\n md: 'max-w-md',\n lg: 'max-w-lg',\n xl: 'max-w-xl',\n '2xl': 'max-w-[1200px] w-[90vw]',\n '3xl': 'max-w-[1600px] w-[90vw]',\n full: 'w-[100vw]'\n};\n\nexport function Modal({\n isOpen,\n onClose,\n title,\n description,\n icon,\n children,\n footer,\n size = 'md',\n showClose = true,\n className,\n isContentScrollable = true,\n mainClassName,\n contentClassName,\n header,\n zIndexClassName = 'z-[50]'\n}: ModalProps) {\n const handleKeyDown = useCallback((e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n }, [isOpen, onClose]);\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [handleKeyDown]);\n\n const content = (\n <AnimatePresence>\n {isOpen && (\n <div className={cn(\"fixed inset-0 z-50 overflow-hidden\", zIndexClassName)}>\n <div className={cn(\"min-h-full flex items-center justify-center p-4\", mainClassName)}>\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={onClose}\n />\n \n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.95 }}\n transition={{ duration: 0.1, ease: \"easeOut\" }}\n className={cn(\n \"relative transform rounded-lg bg-background shadow-xl border border-border flex flex-col max-h-[85vh]\",\n sizeClasses[size],\n className\n )}\n >\n {/* Header - Fixed */}\n {(title || description || icon || header) && (\n <div className=\"flex-shrink-0 flex items-center justify-between p-2 border-b border-border\">\n \n {header ? header: (\n <div className=\"flex items-center gap-3\">\n {icon && (\n <div className=\"h-8 w-8 rounded-lg bg-primary flex items-center justify-center\">\n {icon}\n </div>\n )}\n <div>\n {title && <h2 className=\"text-sm font-small\">{title}</h2>}\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n </div>\n )}\n {showClose && (\n <button\n onClick={onClose}\n className=\"p-1.5 rounded-md hover:bg-muted text-muted-foreground\"\n >\n <div className=\"flex justify-center items-center\">\n <X className=\"h-4 w-4\" />\n <kbd className=\"ml-2 text-[10px] text-muted-foreground bg-muted px-1.5 py-0.5 rounded\">\n ESC\n </kbd>\n </div>\n </button>\n )}\n </div>\n )}\n\n {/* Content - Scrollable */}\n <div className={cn(\"flex-1 min-h-0\", isContentScrollable ? 'overflow-y-auto' : '', contentClassName )}>\n {children}\n </div>\n\n {/* Footer - Fixed */}\n {footer && (\n <div className=\"flex-shrink-0 flex items-center justify-end gap-2 px-4 py-3 border-t border-border bg-muted/50\">\n {footer}\n </div>\n )}\n </motion.div>\n </div>\n </div>\n )}\n </AnimatePresence>\n );\n\n return createPortal(content, document.body);\n}"],"names":["sizeClasses","Modal","isOpen","onClose","title","description","icon","children","footer","size","showClose","className","isContentScrollable","mainClassName","contentClassName","header","zIndexClassName","handleKeyDown","useCallback","e","useEffect","content","jsx","AnimatePresence","cn","jsxs","motion","X","createPortal"],"mappings":"iQAyBMA,EAAc,CAClB,GAAI,WACJ,GAAI,WACJ,GAAI,WACJ,GAAI,WACJ,MAAO,0BACP,MAAO,0BACP,KAAM,WACR,EAEO,SAASC,EAAM,CACpB,OAAAC,EACA,QAAAC,EACA,MAAAC,EACA,YAAAC,EACA,KAAAC,EACA,SAAAC,EACA,OAAAC,EACA,KAAAC,EAAO,KACP,UAAAC,EAAY,GACZ,UAAAC,EACA,oBAAAC,EAAsB,GACtB,cAAAC,EACA,iBAAAC,EACA,OAAAC,EACA,gBAAAC,EAAkB,QACpB,EAAe,CACb,MAAMC,EAAgBC,cAAaC,GAAqB,CAClDA,EAAE,MAAQ,UAAYjB,GACxBC,EAAA,CAEJ,EAAG,CAACD,EAAQC,CAAO,CAAC,EAEpBiB,EAAAA,UAAU,KACR,SAAS,iBAAiB,UAAWH,CAAa,EAC3C,IAAM,SAAS,oBAAoB,UAAWA,CAAa,GACjE,CAACA,CAAa,CAAC,EAElB,MAAMI,EACJC,wBAACC,EAAAA,gBAAA,CACE,SAAArB,GACCoB,wBAAC,OAAI,UAAWE,EAAAA,GAAG,qCAAsCR,CAAe,EACtE,SAAAS,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAWD,EAAAA,GAAG,kDAAmDX,CAAa,EACjF,SAAA,CAAAS,EAAAA,kBAAAA,IAACI,EAAAA,OAAO,IAAP,CACC,QAAS,CAAE,QAAS,CAAA,EACpB,QAAS,CAAE,QAAS,CAAA,EACpB,KAAM,CAAE,QAAS,CAAA,EACjB,UAAU,kDACV,QAASvB,CAAA,CAAA,EAGXsB,EAAAA,kBAAAA,KAACC,EAAAA,OAAO,IAAP,CACC,QAAS,CAAE,QAAS,EAAG,MAAO,GAAA,EAC9B,QAAS,CAAE,QAAS,EAAG,MAAO,CAAA,EAC9B,KAAM,CAAE,QAAS,EAAG,MAAO,GAAA,EAC3B,WAAY,CAAE,SAAU,GAAK,KAAM,SAAA,EACnC,UAAWF,EAAAA,GACT,wGACAxB,EAAYS,CAAI,EAChBE,CAAA,EAIA,SAAA,EAAAP,GAASC,GAAeC,GAAQS,IAChCU,yBAAC,MAAA,CAAI,UAAU,6EAEZ,SAAA,CAAAV,GACCU,yBAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAAnB,GACCgB,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,iEACZ,SAAAhB,EACH,2BAED,MAAA,CACE,SAAA,CAAAF,GAASkB,EAAAA,kBAAAA,IAAC,KAAA,CAAG,UAAU,qBAAsB,SAAAlB,EAAM,EACnDC,GAAeiB,EAAAA,kBAAAA,IAAC,IAAA,CAAE,UAAU,gCAAiC,SAAAjB,CAAA,CAAY,CAAA,CAAA,CAC5E,CAAA,EACF,EAEDK,GACCY,EAAAA,kBAAAA,IAAC,SAAA,CACC,QAASnB,EACT,UAAU,wDAEV,SAAAsB,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,mCACb,SAAA,CAAAH,EAAAA,kBAAAA,IAACK,EAAAA,EAAA,CAAE,UAAU,SAAA,CAAU,EACvBL,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,wEAAwE,SAAA,KAAA,CAEvF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,EAEJ,EAIFA,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAWE,EAAAA,GAAG,iBAAkBZ,EAAsB,kBAAoB,GAAIE,CAAiB,EACjG,SAAAP,CAAA,CACH,EAGCC,GACCc,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,iGACZ,SAAAd,CAAA,CACH,CAAA,CAAA,CAAA,CAEJ,CAAA,CACF,EACF,EAEJ,EAGF,OAAOoB,eAAaP,EAAS,SAAS,IAAI,CAC5C"}
@@ -0,0 +1,2 @@
1
+ export * from './monaco-editor/index'
2
+ export {}