@m5kdev/web-ui 0.9.0 → 0.9.1

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 (218) hide show
  1. package/dist/packages/backend/dist/src/modules/base/base.procedure.d.mts +11 -1
  2. package/dist/packages/backend/dist/src/modules/base/base.procedure.d.ts +11 -1
  3. package/dist/packages/backend/dist/src/modules/base/base.service.d.mts +1 -1
  4. package/dist/packages/backend/dist/src/modules/base/base.service.d.ts +1 -1
  5. package/dist/packages/backend/dist/src/modules/billing/billing.repository.d.mts +10 -10
  6. package/dist/packages/backend/dist/src/modules/billing/billing.repository.d.ts +10 -10
  7. package/dist/packages/backend/dist/src/modules/billing/billing.service.d.mts +6 -6
  8. package/dist/packages/backend/dist/src/modules/billing/billing.service.d.ts +6 -6
  9. package/dist/src/components/AvatarUpload.js +1 -1
  10. package/dist/src/components/AvatarUpload.mjs +2 -2
  11. package/dist/src/components/AvatarUpload.mjs.map +1 -1
  12. package/dist/src/components/Calendar.d.mts +1 -1
  13. package/dist/src/components/CardsSelect.js +1 -1
  14. package/dist/src/components/CardsSelect.mjs +1 -1
  15. package/dist/src/components/CollapsibleSidebarMenuItem.d.mts +1 -1
  16. package/dist/src/components/ColorPicker.d.mts +1 -1
  17. package/dist/src/components/ColorPicker.js +1 -1
  18. package/dist/src/components/ColorPicker.mjs +1 -1
  19. package/dist/src/components/CopyButton.d.mts +1 -1
  20. package/dist/src/components/CopyButton.js +1 -1
  21. package/dist/src/components/CopyButton.mjs +2 -2
  22. package/dist/src/components/CopyButton.mjs.map +1 -1
  23. package/dist/src/components/CropDialog.js +1 -1
  24. package/dist/src/components/CropDialog.mjs +1 -1
  25. package/dist/src/components/DialogProvider.d.mts +1 -1
  26. package/dist/src/components/DialogProvider.js +1 -1
  27. package/dist/src/components/DialogProvider.mjs +2 -2
  28. package/dist/src/components/DialogProvider.mjs.map +1 -1
  29. package/dist/src/components/FileDropzone.js +1 -1
  30. package/dist/src/components/FileDropzone.mjs +3 -3
  31. package/dist/src/components/FileDropzone.mjs.map +1 -1
  32. package/dist/src/components/MultiSelectDropdown.js +1 -1
  33. package/dist/src/components/MultiSelectDropdown.mjs +7 -7
  34. package/dist/src/components/MultiSelectDropdown.mjs.map +1 -1
  35. package/dist/src/components/Orb.js +1 -1
  36. package/dist/src/components/Orb.mjs +1 -1
  37. package/dist/src/components/PageAlert.d.mts +1 -1
  38. package/dist/src/components/PageAlert.d.ts +1 -1
  39. package/dist/src/components/PageAlert.js +1 -1
  40. package/dist/src/components/PageAlert.mjs +1 -1
  41. package/dist/src/components/SelectChips.d.mts +1 -1
  42. package/dist/src/components/SelectChips.js +1 -1
  43. package/dist/src/components/SelectChips.mjs +1 -1
  44. package/dist/src/components/SidebarItem.d.mts +1 -1
  45. package/dist/src/components/TablerIconPicker.d.mts +1 -1
  46. package/dist/src/components/TablerIconPicker.js +1 -1
  47. package/dist/src/components/TablerIconPicker.mjs +1 -1
  48. package/dist/src/components/app-header.js +1 -1
  49. package/dist/src/components/app-header.mjs +2 -2
  50. package/dist/src/components/app-header.mjs.map +1 -1
  51. package/dist/src/components/blur-card.d.mts +1 -1
  52. package/dist/src/components/blur-card.js +1 -1
  53. package/dist/src/components/blur-card.mjs +1 -1
  54. package/dist/src/components/features-section-demo-1.js +1 -1
  55. package/dist/src/components/features-section-demo-1.mjs +1 -1
  56. package/dist/src/components/features-section-demo-3.js +1 -1
  57. package/dist/src/components/features-section-demo-3.mjs +1 -1
  58. package/dist/src/components/shared/ButtonCopy.js +1 -1
  59. package/dist/src/components/shared/ButtonCopy.mjs +2 -2
  60. package/dist/src/components/shared/ButtonCopy.mjs.map +1 -1
  61. package/dist/src/components/team-switcher.d.mts +1 -1
  62. package/dist/src/components/team-switcher.js +1 -1
  63. package/dist/src/components/team-switcher.mjs +1 -1
  64. package/dist/src/components/theme-provider.js +1 -1
  65. package/dist/src/components/theme-provider.mjs +1 -1
  66. package/dist/src/components/typewriter.js +1 -1
  67. package/dist/src/components/typewriter.mjs +1 -1
  68. package/dist/src/components/ui/alert-dialog.d.mts +1 -1
  69. package/dist/src/components/ui/alert.d.mts +1 -1
  70. package/dist/src/components/ui/avatar.js +1 -1
  71. package/dist/src/components/ui/avatar.mjs +1 -1
  72. package/dist/src/components/ui/badge.d.mts +1 -1
  73. package/dist/src/components/ui/bento-grid2.d.mts +1 -1
  74. package/dist/src/components/ui/breadcrumb.d.mts +1 -1
  75. package/dist/src/components/ui/breadcrumb.js +1 -1
  76. package/dist/src/components/ui/breadcrumb.mjs +1 -1
  77. package/dist/src/components/ui/button.js +1 -1
  78. package/dist/src/components/ui/button.mjs +1 -1
  79. package/dist/src/components/ui/card.js +1 -1
  80. package/dist/src/components/ui/card.mjs +1 -1
  81. package/dist/src/components/ui/checkbox.js +1 -1
  82. package/dist/src/components/ui/checkbox.mjs +1 -1
  83. package/dist/src/components/ui/dialog.d.mts +1 -1
  84. package/dist/src/components/ui/dropdown-menu.d.mts +1 -1
  85. package/dist/src/components/ui/dropdown-menu.js +1 -1
  86. package/dist/src/components/ui/dropdown-menu.mjs +1 -1
  87. package/dist/src/components/ui/floating-navbar.d.mts +1 -1
  88. package/dist/src/components/ui/floating-navbar.js +1 -1
  89. package/dist/src/components/ui/floating-navbar.mjs +1 -1
  90. package/dist/src/components/ui/form.d.mts +1 -1
  91. package/dist/src/components/ui/form.js +1 -1
  92. package/dist/src/components/ui/form.mjs +1 -1
  93. package/dist/src/components/ui/image.js +1 -1
  94. package/dist/src/components/ui/image.mjs +1 -1
  95. package/dist/src/components/ui/input.js +1 -1
  96. package/dist/src/components/ui/input.mjs +1 -1
  97. package/dist/src/components/ui/label.js +1 -1
  98. package/dist/src/components/ui/label.mjs +1 -1
  99. package/dist/src/components/ui/pagination.d.mts +1 -1
  100. package/dist/src/components/ui/progress.js +1 -1
  101. package/dist/src/components/ui/progress.mjs +1 -1
  102. package/dist/src/components/ui/resizable-navbar.d.mts +1 -1
  103. package/dist/src/components/ui/resizable-navbar.js +1 -1
  104. package/dist/src/components/ui/resizable-navbar.mjs +1 -1
  105. package/dist/src/components/ui/segment-control.js +1 -1
  106. package/dist/src/components/ui/segment-control.mjs +3 -3
  107. package/dist/src/components/ui/segment-control.mjs.map +1 -1
  108. package/dist/src/components/ui/select.js +1 -1
  109. package/dist/src/components/ui/select.mjs +1 -1
  110. package/dist/src/components/ui/separator.js +1 -1
  111. package/dist/src/components/ui/separator.mjs +1 -1
  112. package/dist/src/components/ui/sheet.d.mts +1 -1
  113. package/dist/src/components/ui/sheet.js +1 -1
  114. package/dist/src/components/ui/sheet.mjs +1 -1
  115. package/dist/src/components/ui/sidebar.js +1 -1
  116. package/dist/src/components/ui/sidebar.mjs +1 -1
  117. package/dist/src/components/ui/slider.js +1 -1
  118. package/dist/src/components/ui/slider.mjs +1 -1
  119. package/dist/src/components/ui/spinner.d.mts +1 -1
  120. package/dist/src/components/ui/switch.js +1 -1
  121. package/dist/src/components/ui/switch.mjs +1 -1
  122. package/dist/src/components/ui/table.d.mts +1 -1
  123. package/dist/src/components/ui/tabs.d.mts +1 -1
  124. package/dist/src/components/ui/textarea.d.mts +1 -1
  125. package/dist/src/components/ui/timeline.d.mts +1 -1
  126. package/dist/src/components/ui/timeline.js +1 -1
  127. package/dist/src/components/ui/timeline.mjs +1 -1
  128. package/dist/src/components/ui/toast.js +1 -1
  129. package/dist/src/components/ui/toast.mjs +1 -1
  130. package/dist/src/components/ui/tooltip.d.mts +1 -1
  131. package/dist/src/components/ui/typewriter-effect.js +1 -1
  132. package/dist/src/components/ui/typewriter-effect.mjs +1 -1
  133. package/dist/src/icons/GoogleIcon.d.mts +1 -1
  134. package/dist/src/icons/LinkedInIcon.d.mts +1 -1
  135. package/dist/src/icons/MicrosoftIcon.d.mts +1 -1
  136. package/dist/src/modules/app/components/AppLoader.d.mts +1 -1
  137. package/dist/src/modules/app/components/AppLoader.js +1 -1
  138. package/dist/src/modules/app/components/AppLoader.mjs +1 -1
  139. package/dist/src/modules/app/components/AppShell.d.mts +1 -1
  140. package/dist/src/modules/app/components/AppSidebar.d.mts +1 -1
  141. package/dist/src/modules/app/components/AppSidebarHeader.js +1 -1
  142. package/dist/src/modules/app/components/AppSidebarHeader.mjs +1 -1
  143. package/dist/src/modules/app/components/AppSidebarInvites.js +1 -1
  144. package/dist/src/modules/app/components/AppSidebarInvites.mjs +1 -1
  145. package/dist/src/modules/auth/components/AdminUserManagement.js +2 -2
  146. package/dist/src/modules/auth/components/AdminUserManagement.mjs +6 -6
  147. package/dist/src/modules/auth/components/AdminUserManagement.mjs.map +1 -1
  148. package/dist/src/modules/auth/components/AdminWaitlist.js +1 -1
  149. package/dist/src/modules/auth/components/AdminWaitlist.mjs +3 -3
  150. package/dist/src/modules/auth/components/AdminWaitlist.mjs.map +1 -1
  151. package/dist/src/modules/auth/components/AuthLayout.d.mts +1 -1
  152. package/dist/src/modules/auth/components/AuthProviders.js +1 -1
  153. package/dist/src/modules/auth/components/AuthProviders.mjs +1 -1
  154. package/dist/src/modules/auth/components/AuthRouter.d.mts +1 -1
  155. package/dist/src/modules/auth/components/ClaimAccountRoute.js +1 -1
  156. package/dist/src/modules/auth/components/ClaimAccountRoute.mjs +1 -1
  157. package/dist/src/modules/auth/components/ErrorAuthRoute.js +1 -1
  158. package/dist/src/modules/auth/components/ErrorAuthRoute.mjs +1 -1
  159. package/dist/src/modules/auth/components/ForgotPasswordForm.js +1 -1
  160. package/dist/src/modules/auth/components/ForgotPasswordForm.mjs +1 -1
  161. package/dist/src/modules/auth/components/ForgotPasswordRoute.js +1 -1
  162. package/dist/src/modules/auth/components/ForgotPasswordRoute.mjs +1 -1
  163. package/dist/src/modules/auth/components/InviteFriends.js +1 -1
  164. package/dist/src/modules/auth/components/InviteFriends.mjs +1 -1
  165. package/dist/src/modules/auth/components/LastUsedBadge.d.mts +1 -1
  166. package/dist/src/modules/auth/components/LastUsedBadge.js +1 -1
  167. package/dist/src/modules/auth/components/LastUsedBadge.mjs +1 -1
  168. package/dist/src/modules/auth/components/LoginForm.js +1 -1
  169. package/dist/src/modules/auth/components/LoginForm.mjs +1 -1
  170. package/dist/src/modules/auth/components/LoginRoute.js +1 -1
  171. package/dist/src/modules/auth/components/LoginRoute.mjs +1 -1
  172. package/dist/src/modules/auth/components/LogoutRoute.js +1 -1
  173. package/dist/src/modules/auth/components/LogoutRoute.mjs +1 -1
  174. package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.js +1 -1
  175. package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.mjs +1 -1
  176. package/dist/src/modules/auth/components/OrganizationMembersRoute.js +2 -2
  177. package/dist/src/modules/auth/components/OrganizationMembersRoute.mjs +2 -2
  178. package/dist/src/modules/auth/components/OrganizationPreferences.js +1 -1
  179. package/dist/src/modules/auth/components/OrganizationPreferences.mjs +1 -1
  180. package/dist/src/modules/auth/components/OrganizationSettingsRoute.js +2 -2
  181. package/dist/src/modules/auth/components/OrganizationSettingsRoute.mjs +2 -2
  182. package/dist/src/modules/auth/components/OrganizationSwitcher.js +2 -2
  183. package/dist/src/modules/auth/components/OrganizationSwitcher.mjs +2 -2
  184. package/dist/src/modules/auth/components/PreferencesEditor.js +1 -1
  185. package/dist/src/modules/auth/components/PreferencesEditor.mjs +1 -1
  186. package/dist/src/modules/auth/components/ProfileRoute.js +1 -1
  187. package/dist/src/modules/auth/components/ProfileRoute.mjs +1 -1
  188. package/dist/src/modules/auth/components/RangeNuqsDatePicker.js +1 -1
  189. package/dist/src/modules/auth/components/RangeNuqsDatePicker.mjs +1 -1
  190. package/dist/src/modules/auth/components/ResetPasswordForm.js +1 -1
  191. package/dist/src/modules/auth/components/ResetPasswordForm.mjs +1 -1
  192. package/dist/src/modules/auth/components/ResetPasswordRoute.js +1 -1
  193. package/dist/src/modules/auth/components/ResetPasswordRoute.mjs +1 -1
  194. package/dist/src/modules/auth/components/SignupFormRoute.js +1 -1
  195. package/dist/src/modules/auth/components/SignupFormRoute.mjs +1 -1
  196. package/dist/src/modules/auth/components/SignupRoute.js +1 -1
  197. package/dist/src/modules/auth/components/SignupRoute.mjs +1 -1
  198. package/dist/src/modules/auth/components/WaitlistCard.js +1 -1
  199. package/dist/src/modules/auth/components/WaitlistCard.mjs +1 -1
  200. package/dist/src/modules/auth/components/WaitlistCodeValidation.js +1 -1
  201. package/dist/src/modules/auth/components/WaitlistCodeValidation.mjs +1 -1
  202. package/dist/src/modules/billing/components/BillingBetaPage.d.mts +1 -1
  203. package/dist/src/modules/billing/components/BillingInvoicePage.js +2 -2
  204. package/dist/src/modules/billing/components/BillingInvoicePage.mjs +2 -2
  205. package/dist/src/modules/billing/components/BillingSinglePlanSelect.js +1 -1
  206. package/dist/src/modules/billing/components/BillingSinglePlanSelect.mjs +1 -1
  207. package/dist/src/modules/table/components/ColumnOrderAndVisibility.js +1 -1
  208. package/dist/src/modules/table/components/ColumnOrderAndVisibility.mjs +1 -1
  209. package/dist/src/modules/table/components/NuqsTable.js +1 -1
  210. package/dist/src/modules/table/components/NuqsTable.mjs +3 -3
  211. package/dist/src/modules/table/components/NuqsTable.mjs.map +1 -1
  212. package/dist/src/modules/table/components/TableFiltering.js +1 -1
  213. package/dist/src/modules/table/components/TableFiltering.mjs +1 -1
  214. package/dist/src/modules/table/components/TableGroupBy.js +1 -1
  215. package/dist/src/modules/table/components/TableGroupBy.mjs +1 -1
  216. package/dist/src/modules/table/components/TablePagination.js +1 -1
  217. package/dist/src/modules/table/components/TablePagination.mjs +1 -1
  218. package/package.json +5 -5
@@ -1,8 +1,8 @@
1
1
  import { cn } from "../lib/utils.mjs";
2
2
  import { Button } from "./ui/button.mjs";
3
3
  import { Progress } from "./ui/progress.mjs";
4
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
5
  import { useCallback, useState } from "react";
5
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { File, Upload, X } from "lucide-react";
7
7
  import { useDropzone } from "react-dropzone";
8
8
  //#region src/components/FileDropzone.tsx
@@ -55,7 +55,7 @@ function FileDropzone({ onUploadComplete, className }) {
55
55
  className: cn("border-2 border-dashed rounded-lg p-6 cursor-pointer transition-colors", isDragActive ? "border-primary bg-primary/5" : "border-gray-300 hover:border-primary", selectedFile && "border-primary"),
56
56
  children: [/* @__PURE__ */ jsx("input", { ...getInputProps() }), /* @__PURE__ */ jsx("div", {
57
57
  className: "flex flex-col items-center justify-center space-y-2 text-center",
58
- children: selectedFile ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(File, { className: "h-8 w-8 text-primary" }), /* @__PURE__ */ jsxs("div", {
58
+ children: selectedFile ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(File, { className: "h-8 w-8 text-primary" }), /* @__PURE__ */ jsxs("div", {
59
59
  className: "flex items-center gap-2",
60
60
  children: [/* @__PURE__ */ jsx("span", {
61
61
  className: "text-sm text-gray-600",
@@ -69,7 +69,7 @@ function FileDropzone({ onUploadComplete, className }) {
69
69
  className: "p-1 hover:bg-gray-100 rounded-full",
70
70
  children: /* @__PURE__ */ jsx(X, { className: "h-4 w-4 text-gray-500" })
71
71
  })]
72
- })] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
72
+ })] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
73
73
  /* @__PURE__ */ jsx(Upload, { className: "h-8 w-8 text-gray-400" }),
74
74
  /* @__PURE__ */ jsx("p", {
75
75
  className: "text-sm text-gray-600",
@@ -1 +1 @@
1
- {"version":3,"file":"FileDropzone.mjs","names":[],"sources":["../../../src/components/FileDropzone.tsx"],"sourcesContent":["import { File, Upload, X } from \"lucide-react\";\r\nimport { useCallback, useState } from \"react\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport { Button } from \"./ui/button\";\r\nimport { Progress } from \"./ui/progress\";\r\nimport { cn } from \"../lib/utils\";\r\n\r\ninterface FileDropzoneProps {\r\n onUploadComplete?: (filePath: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function FileDropzone({ onUploadComplete, className }: FileDropzoneProps) {\r\n const [uploadProgress, setUploadProgress] = useState(0);\r\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\r\n const [isUploading, setIsUploading] = useState(false);\r\n\r\n const onDrop = useCallback((acceptedFiles: File[]) => {\r\n if (acceptedFiles.length > 0) {\r\n setSelectedFile(acceptedFiles[0]);\r\n }\r\n }, []);\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n accept: {\r\n \"image/jpeg\": [],\r\n \"image/png\": [],\r\n \"image/webp\": [],\r\n \"image/jpg\": [],\r\n },\r\n maxFiles: 1,\r\n });\r\n\r\n const uploadFile = async () => {\r\n if (!selectedFile) return;\r\n\r\n setIsUploading(true);\r\n setUploadProgress(0);\r\n\r\n const formData = new FormData();\r\n formData.append(\"file\", selectedFile);\r\n\r\n try {\r\n const response = await fetch(\"/api/upload/image\", {\r\n method: \"POST\",\r\n body: formData,\r\n // Note: Content-Type is automatically set for FormData\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n\r\n const data = await response.json();\r\n onUploadComplete?.(data.filePath);\r\n setSelectedFile(null);\r\n setUploadProgress(0);\r\n } catch (error) {\r\n console.error(\"Upload error:\", error);\r\n } finally {\r\n setIsUploading(false);\r\n }\r\n };\r\n\r\n const removeFile = () => {\r\n setSelectedFile(null);\r\n setUploadProgress(0);\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full max-w-xl\", className)}>\r\n <div\r\n {...getRootProps()}\r\n className={cn(\r\n \"border-2 border-dashed rounded-lg p-6 cursor-pointer transition-colors\",\r\n isDragActive ? \"border-primary bg-primary/5\" : \"border-gray-300 hover:border-primary\",\r\n selectedFile && \"border-primary\"\r\n )}\r\n >\r\n <input {...getInputProps()} />\r\n <div className=\"flex flex-col items-center justify-center space-y-2 text-center\">\r\n {selectedFile ? (\r\n <>\r\n <File className=\"h-8 w-8 text-primary\" />\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm text-gray-600\">{selectedFile.name}</span>\r\n <button\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n removeFile();\r\n }}\r\n className=\"p-1 hover:bg-gray-100 rounded-full\"\r\n >\r\n <X className=\"h-4 w-4 text-gray-500\" />\r\n </button>\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n <Upload className=\"h-8 w-8 text-gray-400\" />\r\n <p className=\"text-sm text-gray-600\">Drag & drop an image here, or click to select</p>\r\n <p className=\"text-xs text-gray-500\">Supports JPG, PNG, and WebP</p>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {selectedFile && (\r\n <div className=\"mt-4 space-y-4\">\r\n {isUploading && <Progress value={uploadProgress} className=\"h-2 w-full\" />}\r\n <Button onClick={uploadFile} disabled={isUploading} className=\"w-full\">\r\n {isUploading ? \"Uploading...\" : \"Upload File\"}\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;AAYA,SAAgB,aAAa,EAAE,kBAAkB,aAAgC;CAC/E,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,EAAE;CACvD,MAAM,CAAC,cAAc,mBAAmB,SAAsB,KAAK;CACnE,MAAM,CAAC,aAAa,kBAAkB,SAAS,MAAM;CAQrD,MAAM,EAAE,cAAc,eAAe,iBAAiB,YAAY;EAChE,QAPa,aAAa,kBAA0B;AACpD,OAAI,cAAc,SAAS,EACzB,iBAAgB,cAAc,GAAG;KAElC,EAAE,CAAC;EAIJ,QAAQ;GACN,cAAc,EAAE;GAChB,aAAa,EAAE;GACf,cAAc,EAAE;GAChB,aAAa,EAAE;GAChB;EACD,UAAU;EACX,CAAC;CAEF,MAAM,aAAa,YAAY;AAC7B,MAAI,CAAC,aAAc;AAEnB,iBAAe,KAAK;AACpB,oBAAkB,EAAE;EAEpB,MAAM,WAAW,IAAI,UAAU;AAC/B,WAAS,OAAO,QAAQ,aAAa;AAErC,MAAI;GACF,MAAM,WAAW,MAAM,MAAM,qBAAqB;IAChD,QAAQ;IACR,MAAM;IAEP,CAAC;AAEF,OAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,uBAAuB,SAAS,SAAS;GAG3D,MAAM,OAAO,MAAM,SAAS,MAAM;AAClC,sBAAmB,KAAK,SAAS;AACjC,mBAAgB,KAAK;AACrB,qBAAkB,EAAE;WACb,OAAO;AACd,WAAQ,MAAM,iBAAiB,MAAM;YAC7B;AACR,kBAAe,MAAM;;;CAIzB,MAAM,mBAAmB;AACvB,kBAAgB,KAAK;AACrB,oBAAkB,EAAE;;AAGtB,QACE,qBAAC,OAAD;EAAK,WAAW,GAAG,mBAAmB,UAAU;YAAhD,CACE,qBAAC,OAAD;GACE,GAAI,cAAc;GAClB,WAAW,GACT,0EACA,eAAe,gCAAgC,wCAC/C,gBAAgB,iBACjB;aANH,CAQE,oBAAC,SAAD,EAAO,GAAI,eAAe,EAAI,CAAA,EAC9B,oBAAC,OAAD;IAAK,WAAU;cACZ,eACC,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,MAAD,EAAM,WAAU,wBAAyB,CAAA,EACzC,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,QAAD;MAAM,WAAU;gBAAyB,aAAa;MAAY,CAAA,EAClE,oBAAC,UAAD;MACE,MAAK;MACL,UAAU,MAAM;AACd,SAAE,iBAAiB;AACnB,mBAAY;;MAEd,WAAU;gBAEV,oBAAC,GAAD,EAAG,WAAU,yBAA0B,CAAA;MAChC,CAAA,CACL;OACL,EAAA,CAAA,GAEH,qBAAA,YAAA,EAAA,UAAA;KACE,oBAAC,QAAD,EAAQ,WAAU,yBAA0B,CAAA;KAC5C,oBAAC,KAAD;MAAG,WAAU;gBAAwB;MAAiD,CAAA;KACtF,oBAAC,KAAD;MAAG,WAAU;gBAAwB;MAA+B,CAAA;KACnE,EAAA,CAAA;IAED,CAAA,CACF;MAEL,gBACC,qBAAC,OAAD;GAAK,WAAU;aAAf,CACG,eAAe,oBAAC,UAAD;IAAU,OAAO;IAAgB,WAAU;IAAe,CAAA,EAC1E,oBAAC,QAAD;IAAQ,SAAS;IAAY,UAAU;IAAa,WAAU;cAC3D,cAAc,iBAAiB;IACzB,CAAA,CACL;KAEJ"}
1
+ {"version":3,"file":"FileDropzone.mjs","names":[],"sources":["../../../src/components/FileDropzone.tsx"],"sourcesContent":["import { File, Upload, X } from \"lucide-react\";\r\nimport { useCallback, useState } from \"react\";\r\nimport { useDropzone } from \"react-dropzone\";\r\nimport { Button } from \"./ui/button\";\r\nimport { Progress } from \"./ui/progress\";\r\nimport { cn } from \"../lib/utils\";\r\n\r\ninterface FileDropzoneProps {\r\n onUploadComplete?: (filePath: string) => void;\r\n className?: string;\r\n}\r\n\r\nexport function FileDropzone({ onUploadComplete, className }: FileDropzoneProps) {\r\n const [uploadProgress, setUploadProgress] = useState(0);\r\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\r\n const [isUploading, setIsUploading] = useState(false);\r\n\r\n const onDrop = useCallback((acceptedFiles: File[]) => {\r\n if (acceptedFiles.length > 0) {\r\n setSelectedFile(acceptedFiles[0]);\r\n }\r\n }, []);\r\n\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\r\n onDrop,\r\n accept: {\r\n \"image/jpeg\": [],\r\n \"image/png\": [],\r\n \"image/webp\": [],\r\n \"image/jpg\": [],\r\n },\r\n maxFiles: 1,\r\n });\r\n\r\n const uploadFile = async () => {\r\n if (!selectedFile) return;\r\n\r\n setIsUploading(true);\r\n setUploadProgress(0);\r\n\r\n const formData = new FormData();\r\n formData.append(\"file\", selectedFile);\r\n\r\n try {\r\n const response = await fetch(\"/api/upload/image\", {\r\n method: \"POST\",\r\n body: formData,\r\n // Note: Content-Type is automatically set for FormData\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error! status: ${response.status}`);\r\n }\r\n\r\n const data = await response.json();\r\n onUploadComplete?.(data.filePath);\r\n setSelectedFile(null);\r\n setUploadProgress(0);\r\n } catch (error) {\r\n console.error(\"Upload error:\", error);\r\n } finally {\r\n setIsUploading(false);\r\n }\r\n };\r\n\r\n const removeFile = () => {\r\n setSelectedFile(null);\r\n setUploadProgress(0);\r\n };\r\n\r\n return (\r\n <div className={cn(\"w-full max-w-xl\", className)}>\r\n <div\r\n {...getRootProps()}\r\n className={cn(\r\n \"border-2 border-dashed rounded-lg p-6 cursor-pointer transition-colors\",\r\n isDragActive ? \"border-primary bg-primary/5\" : \"border-gray-300 hover:border-primary\",\r\n selectedFile && \"border-primary\"\r\n )}\r\n >\r\n <input {...getInputProps()} />\r\n <div className=\"flex flex-col items-center justify-center space-y-2 text-center\">\r\n {selectedFile ? (\r\n <>\r\n <File className=\"h-8 w-8 text-primary\" />\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm text-gray-600\">{selectedFile.name}</span>\r\n <button\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n removeFile();\r\n }}\r\n className=\"p-1 hover:bg-gray-100 rounded-full\"\r\n >\r\n <X className=\"h-4 w-4 text-gray-500\" />\r\n </button>\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n <Upload className=\"h-8 w-8 text-gray-400\" />\r\n <p className=\"text-sm text-gray-600\">Drag & drop an image here, or click to select</p>\r\n <p className=\"text-xs text-gray-500\">Supports JPG, PNG, and WebP</p>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {selectedFile && (\r\n <div className=\"mt-4 space-y-4\">\r\n {isUploading && <Progress value={uploadProgress} className=\"h-2 w-full\" />}\r\n <Button onClick={uploadFile} disabled={isUploading} className=\"w-full\">\r\n {isUploading ? \"Uploading...\" : \"Upload File\"}\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;AAYA,SAAgB,aAAa,EAAE,kBAAkB,aAAgC;CAC/E,MAAM,CAAC,gBAAgB,qBAAqB,SAAS,EAAE;CACvD,MAAM,CAAC,cAAc,mBAAmB,SAAsB,KAAK;CACnE,MAAM,CAAC,aAAa,kBAAkB,SAAS,MAAM;CAQrD,MAAM,EAAE,cAAc,eAAe,iBAAiB,YAAY;EAChE,QAPa,aAAa,kBAA0B;AACpD,OAAI,cAAc,SAAS,EACzB,iBAAgB,cAAc,GAAG;KAElC,EAAE,CAAC;EAIJ,QAAQ;GACN,cAAc,EAAE;GAChB,aAAa,EAAE;GACf,cAAc,EAAE;GAChB,aAAa,EAAE;GAChB;EACD,UAAU;EACX,CAAC;CAEF,MAAM,aAAa,YAAY;AAC7B,MAAI,CAAC,aAAc;AAEnB,iBAAe,KAAK;AACpB,oBAAkB,EAAE;EAEpB,MAAM,WAAW,IAAI,UAAU;AAC/B,WAAS,OAAO,QAAQ,aAAa;AAErC,MAAI;GACF,MAAM,WAAW,MAAM,MAAM,qBAAqB;IAChD,QAAQ;IACR,MAAM;IAEP,CAAC;AAEF,OAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,uBAAuB,SAAS,SAAS;GAG3D,MAAM,OAAO,MAAM,SAAS,MAAM;AAClC,sBAAmB,KAAK,SAAS;AACjC,mBAAgB,KAAK;AACrB,qBAAkB,EAAE;WACb,OAAO;AACd,WAAQ,MAAM,iBAAiB,MAAM;YAC7B;AACR,kBAAe,MAAM;;;CAIzB,MAAM,mBAAmB;AACvB,kBAAgB,KAAK;AACrB,oBAAkB,EAAE;;AAGtB,QACE,qBAAC,OAAD;EAAK,WAAW,GAAG,mBAAmB,UAAU;YAAhD,CACE,qBAAC,OAAD;GACE,GAAI,cAAc;GAClB,WAAW,GACT,0EACA,eAAe,gCAAgC,wCAC/C,gBAAgB,iBACjB;aANH,CAQE,oBAAC,SAAD,EAAO,GAAI,eAAe,EAAI,CAAA,EAC9B,oBAAC,OAAD;IAAK,WAAU;cACZ,eACC,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,MAAD,EAAM,WAAU,wBAAyB,CAAA,EACzC,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,QAAD;MAAM,WAAU;gBAAyB,aAAa;MAAY,CAAA,EAClE,oBAAC,UAAD;MACE,MAAK;MACL,UAAU,MAAM;AACd,SAAE,iBAAiB;AACnB,mBAAY;;MAEd,WAAU;gBAEV,oBAAC,GAAD,EAAG,WAAU,yBAA0B,CAAA;MAChC,CAAA,CACL;OACL,EAAA,CAAA,GAEH,qBAAA,UAAA,EAAA,UAAA;KACE,oBAAC,QAAD,EAAQ,WAAU,yBAA0B,CAAA;KAC5C,oBAAC,KAAD;MAAG,WAAU;gBAAwB;MAAiD,CAAA;KACtF,oBAAC,KAAD;MAAG,WAAU;gBAAwB;MAA+B,CAAA;KACnE,EAAA,CAAA;IAED,CAAA,CACF;MAEL,gBACC,qBAAC,OAAD;GAAK,WAAU;aAAf,CACG,eAAe,oBAAC,UAAD;IAAU,OAAO;IAAgB,WAAU;IAAe,CAAA,EAC1E,oBAAC,QAAD;IAAQ,SAAS;IAAY,UAAU;IAAa,WAAU;cAC3D,cAAc,iBAAiB;IACzB,CAAA,CACL;KAEJ"}
@@ -3,9 +3,9 @@ const require_runtime = require("../../_virtual/_rolldown/runtime.js");
3
3
  const require_src_lib_utils = require("../lib/utils.js");
4
4
  const require_src_components_ui_button = require("./ui/button.js");
5
5
  const require_src_components_ui_dropdown_menu = require("./ui/dropdown-menu.js");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
6
7
  let react = require("react");
7
8
  react = require_runtime.__toESM(react);
8
- let react_jsx_runtime = require("react/jsx-runtime");
9
9
  let lucide_react = require("lucide-react");
10
10
  //#region src/components/MultiSelectDropdown.tsx
11
11
  const MultiSelectDropdown = react.forwardRef(({ options, selectedValues, onValueChange, placeholder = "Select items...", label, className, triggerClassName, trigger, multiSelectLabel, disabled = false, maxDisplayCount = 3, resetButton = "bottom", resetLabel = "Reset", separateGroups = false, ...props }, ref) => {
@@ -1,8 +1,8 @@
1
1
  import { cn } from "../lib/utils.mjs";
2
2
  import { Button } from "./ui/button.mjs";
3
3
  import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "./ui/dropdown-menu.mjs";
4
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
5
  import * as React$1 from "react";
5
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { ChevronDown, RotateCcw } from "lucide-react";
7
7
  //#region src/components/MultiSelectDropdown.tsx
8
8
  const MultiSelectDropdown = React$1.forwardRef(({ options, selectedValues, onValueChange, placeholder = "Select items...", label, className, triggerClassName, trigger, multiSelectLabel, disabled = false, maxDisplayCount = 3, resetButton = "bottom", resetLabel = "Reset", separateGroups = false, ...props }, ref) => {
@@ -44,7 +44,7 @@ const MultiSelectDropdown = React$1.forwardRef(({ options, selectedValues, onVal
44
44
  className: cn("w-full justify-between text-left font-normal", selectedValues.length === 0 && "text-muted-foreground", triggerClassName),
45
45
  disabled,
46
46
  ...props,
47
- children: trigger || /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
47
+ children: trigger || /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
48
48
  className: "truncate",
49
49
  children: getDisplayText()
50
50
  }), /* @__PURE__ */ jsx(ChevronDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })] })
@@ -53,14 +53,14 @@ const MultiSelectDropdown = React$1.forwardRef(({ options, selectedValues, onVal
53
53
  className: "w-full min-w-[var(--radix-dropdown-menu-trigger-width)]",
54
54
  align: "start",
55
55
  children: [
56
- resetButton && resetButton === "top" && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(DropdownMenuItem, {
56
+ resetButton && resetButton === "top" && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(DropdownMenuItem, {
57
57
  onClick: handleReset,
58
58
  disabled: selectedValues.length === 0,
59
59
  onSelect: (event) => event.preventDefault(),
60
60
  className: "cursor-pointer text-muted-foreground hover:text-foreground",
61
- children: resetLabel || /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(RotateCcw, { className: "mr-2 h-4 w-4" }), "Reset"] })
61
+ children: resetLabel || /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(RotateCcw, { className: "mr-2 h-4 w-4" }), "Reset"] })
62
62
  }), /* @__PURE__ */ jsx(DropdownMenuSeparator, {})] }),
63
- label && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(DropdownMenuLabel, { children: label }), /* @__PURE__ */ jsx(DropdownMenuSeparator, {})] }),
63
+ label && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(DropdownMenuLabel, { children: label }), /* @__PURE__ */ jsx(DropdownMenuSeparator, {})] }),
64
64
  Object.entries(groupedOptions.groups).map(([groupName, groupOptions], groupIndex) => /* @__PURE__ */ jsxs(DropdownMenuGroup, { children: [
65
65
  groupIndex > 0 && separateGroups && /* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
66
66
  /* @__PURE__ */ jsx(DropdownMenuLabel, {
@@ -85,12 +85,12 @@ const MultiSelectDropdown = React$1.forwardRef(({ options, selectedValues, onVal
85
85
  className: "cursor-pointer",
86
86
  children: option.label
87
87
  }, option.value))] }),
88
- resetButton && resetButton === "bottom" && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(DropdownMenuSeparator, {}), /* @__PURE__ */ jsx(DropdownMenuItem, {
88
+ resetButton && resetButton === "bottom" && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(DropdownMenuSeparator, {}), /* @__PURE__ */ jsx(DropdownMenuItem, {
89
89
  onClick: handleReset,
90
90
  disabled: selectedValues.length === 0,
91
91
  onSelect: (event) => event.preventDefault(),
92
92
  className: "cursor-pointer text-muted-foreground hover:text-foreground",
93
- children: resetLabel || /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(RotateCcw, { className: "mr-2 h-4 w-4" }), "Reset"] })
93
+ children: resetLabel || /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(RotateCcw, { className: "mr-2 h-4 w-4" }), "Reset"] })
94
94
  })] })
95
95
  ]
96
96
  })] })
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelectDropdown.mjs","names":["React"],"sources":["../../../src/components/MultiSelectDropdown.tsx"],"sourcesContent":["import { ChevronDown, RotateCcw } from \"lucide-react\";\r\nimport * as React from \"react\";\r\n\r\nimport { Button } from \"./ui/button\";\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuContent,\r\n DropdownMenuGroup,\r\n DropdownMenuItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuTrigger,\r\n} from \"./ui/dropdown-menu\";\r\nimport { cn } from \"../lib/utils\";\r\n\r\ninterface MultiSelectOption {\r\n label: string;\r\n icon?: React.ReactNode;\r\n value: string;\r\n group?: string;\r\n}\r\n\r\ninterface MultiSelectDropdownProps {\r\n options: MultiSelectOption[];\r\n selectedValues: string[];\r\n onValueChange: (selectedValues: string[]) => void;\r\n placeholder?: React.ReactNode;\r\n label?: string;\r\n className?: string;\r\n triggerClassName?: string;\r\n disabled?: boolean;\r\n maxDisplayCount?: number;\r\n multiSelectLabel?: string;\r\n trigger?: React.ReactNode;\r\n resetButton?: \"bottom\" | \"top\";\r\n resetLabel?: React.ReactNode;\r\n separateGroups?: boolean;\r\n}\r\n\r\nconst MultiSelectDropdown = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuTrigger>,\r\n MultiSelectDropdownProps\r\n>(\r\n (\r\n {\r\n options,\r\n selectedValues,\r\n onValueChange,\r\n placeholder = \"Select items...\",\r\n label,\r\n className,\r\n triggerClassName,\r\n trigger,\r\n multiSelectLabel,\r\n disabled = false,\r\n maxDisplayCount = 3,\r\n resetButton = \"bottom\",\r\n resetLabel = \"Reset\",\r\n separateGroups = false,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const handleValueChange = (value: string, checked: boolean) => {\r\n if (checked) {\r\n onValueChange([...selectedValues, value]);\r\n } else {\r\n onValueChange(selectedValues.filter((v) => v !== value));\r\n }\r\n };\r\n\r\n const handleReset = () => {\r\n onValueChange([]);\r\n };\r\n\r\n const getDisplayText = () => {\r\n if (selectedValues.length === 0) {\r\n return placeholder;\r\n }\r\n\r\n const selectedLabels = options\r\n .filter((option) => selectedValues.includes(option.value))\r\n .map((option) => option.label);\r\n\r\n if (multiSelectLabel && selectedLabels.length > 1) {\r\n return multiSelectLabel;\r\n }\r\n\r\n if (selectedLabels.length <= maxDisplayCount) {\r\n return selectedLabels.join(\", \");\r\n }\r\n\r\n return `${selectedLabels.slice(0, maxDisplayCount).join(\", \")} (+${\r\n selectedLabels.length - maxDisplayCount\r\n } more)`;\r\n };\r\n\r\n const groupedOptions = React.useMemo(() => {\r\n const groups: Record<string, MultiSelectOption[]> = {};\r\n const ungrouped: MultiSelectOption[] = [];\r\n\r\n options.forEach((option) => {\r\n if (option.group) {\r\n if (!groups[option.group]) {\r\n groups[option.group] = [];\r\n }\r\n groups[option.group].push(option);\r\n } else {\r\n ungrouped.push(option);\r\n }\r\n });\r\n\r\n return { groups, ungrouped };\r\n }, [options]);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button\r\n ref={ref}\r\n variant=\"outline\"\r\n className={cn(\r\n \"w-full justify-between text-left font-normal\",\r\n selectedValues.length === 0 && \"text-muted-foreground\",\r\n triggerClassName\r\n )}\r\n disabled={disabled}\r\n {...props}\r\n >\r\n {trigger || (\r\n <>\r\n <span className=\"truncate\">{getDisplayText()}</span>\r\n <ChevronDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\r\n </>\r\n )}\r\n </Button>\r\n </DropdownMenuTrigger>\r\n\r\n <DropdownMenuContent\r\n className=\"w-full min-w-[var(--radix-dropdown-menu-trigger-width)]\"\r\n align=\"start\"\r\n >\r\n {resetButton && resetButton === \"top\" && (\r\n <>\r\n <DropdownMenuItem\r\n onClick={handleReset}\r\n disabled={selectedValues.length === 0}\r\n onSelect={(event) => event.preventDefault()}\r\n className=\"cursor-pointer text-muted-foreground hover:text-foreground\"\r\n >\r\n {resetLabel || (\r\n <>\r\n <RotateCcw className=\"mr-2 h-4 w-4\" />\r\n Reset\r\n </>\r\n )}\r\n </DropdownMenuItem>\r\n <DropdownMenuSeparator />\r\n </>\r\n )}\r\n {label && (\r\n <>\r\n <DropdownMenuLabel>{label}</DropdownMenuLabel>\r\n <DropdownMenuSeparator />\r\n </>\r\n )}\r\n {Object.entries(groupedOptions.groups).map(([groupName, groupOptions], groupIndex) => (\r\n <DropdownMenuGroup key={groupName}>\r\n {groupIndex > 0 && separateGroups && <DropdownMenuSeparator />}\r\n <DropdownMenuLabel className=\"text-xs font-semibold text-muted-foreground px-2 py-1.5\">\r\n {groupName}\r\n </DropdownMenuLabel>\r\n {groupOptions.map((option) => (\r\n <DropdownMenuCheckboxItem\r\n key={option.value}\r\n checked={selectedValues.includes(option.value)}\r\n onCheckedChange={(checked) => handleValueChange(option.value, checked)}\r\n onSelect={(event) => event.preventDefault()}\r\n className=\"cursor-pointer\"\r\n >\r\n {option.icon && <span className=\"mr-2\">{option.icon}</span>}\r\n {option.label}\r\n </DropdownMenuCheckboxItem>\r\n ))}\r\n </DropdownMenuGroup>\r\n ))}\r\n {groupedOptions.ungrouped.length > 0 && (\r\n <DropdownMenuGroup>\r\n {Object.keys(groupedOptions.groups).length > 0 && <DropdownMenuSeparator />}\r\n {groupedOptions.ungrouped.map((option) => (\r\n <DropdownMenuCheckboxItem\r\n key={option.value}\r\n checked={selectedValues.includes(option.value)}\r\n onCheckedChange={(checked) => handleValueChange(option.value, checked)}\r\n onSelect={(event) => event.preventDefault()}\r\n className=\"cursor-pointer\"\r\n >\r\n {option.label}\r\n </DropdownMenuCheckboxItem>\r\n ))}\r\n </DropdownMenuGroup>\r\n )}\r\n {resetButton && resetButton === \"bottom\" && (\r\n <>\r\n <DropdownMenuSeparator />\r\n <DropdownMenuItem\r\n onClick={handleReset}\r\n disabled={selectedValues.length === 0}\r\n onSelect={(event) => event.preventDefault()}\r\n className=\"cursor-pointer text-muted-foreground hover:text-foreground\"\r\n >\r\n {resetLabel || (\r\n <>\r\n <RotateCcw className=\"mr-2 h-4 w-4\" />\r\n Reset\r\n </>\r\n )}\r\n </DropdownMenuItem>\r\n </>\r\n )}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nMultiSelectDropdown.displayName = \"MultiSelectDropdown\";\r\n\r\nexport { MultiSelectDropdown };\r\nexport type { MultiSelectOption, MultiSelectDropdownProps };\r\n"],"mappings":"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"}
1
+ {"version":3,"file":"MultiSelectDropdown.mjs","names":["React"],"sources":["../../../src/components/MultiSelectDropdown.tsx"],"sourcesContent":["import { ChevronDown, RotateCcw } from \"lucide-react\";\r\nimport * as React from \"react\";\r\n\r\nimport { Button } from \"./ui/button\";\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuCheckboxItem,\r\n DropdownMenuContent,\r\n DropdownMenuGroup,\r\n DropdownMenuItem,\r\n DropdownMenuLabel,\r\n DropdownMenuSeparator,\r\n DropdownMenuTrigger,\r\n} from \"./ui/dropdown-menu\";\r\nimport { cn } from \"../lib/utils\";\r\n\r\ninterface MultiSelectOption {\r\n label: string;\r\n icon?: React.ReactNode;\r\n value: string;\r\n group?: string;\r\n}\r\n\r\ninterface MultiSelectDropdownProps {\r\n options: MultiSelectOption[];\r\n selectedValues: string[];\r\n onValueChange: (selectedValues: string[]) => void;\r\n placeholder?: React.ReactNode;\r\n label?: string;\r\n className?: string;\r\n triggerClassName?: string;\r\n disabled?: boolean;\r\n maxDisplayCount?: number;\r\n multiSelectLabel?: string;\r\n trigger?: React.ReactNode;\r\n resetButton?: \"bottom\" | \"top\";\r\n resetLabel?: React.ReactNode;\r\n separateGroups?: boolean;\r\n}\r\n\r\nconst MultiSelectDropdown = React.forwardRef<\r\n React.ElementRef<typeof DropdownMenuTrigger>,\r\n MultiSelectDropdownProps\r\n>(\r\n (\r\n {\r\n options,\r\n selectedValues,\r\n onValueChange,\r\n placeholder = \"Select items...\",\r\n label,\r\n className,\r\n triggerClassName,\r\n trigger,\r\n multiSelectLabel,\r\n disabled = false,\r\n maxDisplayCount = 3,\r\n resetButton = \"bottom\",\r\n resetLabel = \"Reset\",\r\n separateGroups = false,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const handleValueChange = (value: string, checked: boolean) => {\r\n if (checked) {\r\n onValueChange([...selectedValues, value]);\r\n } else {\r\n onValueChange(selectedValues.filter((v) => v !== value));\r\n }\r\n };\r\n\r\n const handleReset = () => {\r\n onValueChange([]);\r\n };\r\n\r\n const getDisplayText = () => {\r\n if (selectedValues.length === 0) {\r\n return placeholder;\r\n }\r\n\r\n const selectedLabels = options\r\n .filter((option) => selectedValues.includes(option.value))\r\n .map((option) => option.label);\r\n\r\n if (multiSelectLabel && selectedLabels.length > 1) {\r\n return multiSelectLabel;\r\n }\r\n\r\n if (selectedLabels.length <= maxDisplayCount) {\r\n return selectedLabels.join(\", \");\r\n }\r\n\r\n return `${selectedLabels.slice(0, maxDisplayCount).join(\", \")} (+${\r\n selectedLabels.length - maxDisplayCount\r\n } more)`;\r\n };\r\n\r\n const groupedOptions = React.useMemo(() => {\r\n const groups: Record<string, MultiSelectOption[]> = {};\r\n const ungrouped: MultiSelectOption[] = [];\r\n\r\n options.forEach((option) => {\r\n if (option.group) {\r\n if (!groups[option.group]) {\r\n groups[option.group] = [];\r\n }\r\n groups[option.group].push(option);\r\n } else {\r\n ungrouped.push(option);\r\n }\r\n });\r\n\r\n return { groups, ungrouped };\r\n }, [options]);\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n <DropdownMenu>\r\n <DropdownMenuTrigger asChild>\r\n <Button\r\n ref={ref}\r\n variant=\"outline\"\r\n className={cn(\r\n \"w-full justify-between text-left font-normal\",\r\n selectedValues.length === 0 && \"text-muted-foreground\",\r\n triggerClassName\r\n )}\r\n disabled={disabled}\r\n {...props}\r\n >\r\n {trigger || (\r\n <>\r\n <span className=\"truncate\">{getDisplayText()}</span>\r\n <ChevronDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\r\n </>\r\n )}\r\n </Button>\r\n </DropdownMenuTrigger>\r\n\r\n <DropdownMenuContent\r\n className=\"w-full min-w-[var(--radix-dropdown-menu-trigger-width)]\"\r\n align=\"start\"\r\n >\r\n {resetButton && resetButton === \"top\" && (\r\n <>\r\n <DropdownMenuItem\r\n onClick={handleReset}\r\n disabled={selectedValues.length === 0}\r\n onSelect={(event) => event.preventDefault()}\r\n className=\"cursor-pointer text-muted-foreground hover:text-foreground\"\r\n >\r\n {resetLabel || (\r\n <>\r\n <RotateCcw className=\"mr-2 h-4 w-4\" />\r\n Reset\r\n </>\r\n )}\r\n </DropdownMenuItem>\r\n <DropdownMenuSeparator />\r\n </>\r\n )}\r\n {label && (\r\n <>\r\n <DropdownMenuLabel>{label}</DropdownMenuLabel>\r\n <DropdownMenuSeparator />\r\n </>\r\n )}\r\n {Object.entries(groupedOptions.groups).map(([groupName, groupOptions], groupIndex) => (\r\n <DropdownMenuGroup key={groupName}>\r\n {groupIndex > 0 && separateGroups && <DropdownMenuSeparator />}\r\n <DropdownMenuLabel className=\"text-xs font-semibold text-muted-foreground px-2 py-1.5\">\r\n {groupName}\r\n </DropdownMenuLabel>\r\n {groupOptions.map((option) => (\r\n <DropdownMenuCheckboxItem\r\n key={option.value}\r\n checked={selectedValues.includes(option.value)}\r\n onCheckedChange={(checked) => handleValueChange(option.value, checked)}\r\n onSelect={(event) => event.preventDefault()}\r\n className=\"cursor-pointer\"\r\n >\r\n {option.icon && <span className=\"mr-2\">{option.icon}</span>}\r\n {option.label}\r\n </DropdownMenuCheckboxItem>\r\n ))}\r\n </DropdownMenuGroup>\r\n ))}\r\n {groupedOptions.ungrouped.length > 0 && (\r\n <DropdownMenuGroup>\r\n {Object.keys(groupedOptions.groups).length > 0 && <DropdownMenuSeparator />}\r\n {groupedOptions.ungrouped.map((option) => (\r\n <DropdownMenuCheckboxItem\r\n key={option.value}\r\n checked={selectedValues.includes(option.value)}\r\n onCheckedChange={(checked) => handleValueChange(option.value, checked)}\r\n onSelect={(event) => event.preventDefault()}\r\n className=\"cursor-pointer\"\r\n >\r\n {option.label}\r\n </DropdownMenuCheckboxItem>\r\n ))}\r\n </DropdownMenuGroup>\r\n )}\r\n {resetButton && resetButton === \"bottom\" && (\r\n <>\r\n <DropdownMenuSeparator />\r\n <DropdownMenuItem\r\n onClick={handleReset}\r\n disabled={selectedValues.length === 0}\r\n onSelect={(event) => event.preventDefault()}\r\n className=\"cursor-pointer text-muted-foreground hover:text-foreground\"\r\n >\r\n {resetLabel || (\r\n <>\r\n <RotateCcw className=\"mr-2 h-4 w-4\" />\r\n Reset\r\n </>\r\n )}\r\n </DropdownMenuItem>\r\n </>\r\n )}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nMultiSelectDropdown.displayName = \"MultiSelectDropdown\";\r\n\r\nexport { MultiSelectDropdown };\r\nexport type { MultiSelectOption, MultiSelectDropdownProps };\r\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  require("../../_virtual/_rolldown/runtime.js");
2
- let react = require("react");
3
2
  let react_jsx_runtime = require("react/jsx-runtime");
3
+ let react = require("react");
4
4
  let ogl = require("ogl");
5
5
  //#region src/components/Orb.tsx
6
6
  function Orb({ hue = 0, hoverIntensity = .2, rotateOnHover = true, forceHoverState = false }) {
@@ -1,5 +1,5 @@
1
- import { useEffect, useRef } from "react";
2
1
  import { jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from "react";
3
3
  import { Mesh, Program, Renderer, Triangle, Vec3 } from "ogl";
4
4
  //#region src/components/Orb.tsx
5
5
  function Orb({ hue = 0, hoverIntensity = .2, rotateOnHover = true, forceHoverState = false }) {
@@ -4,7 +4,7 @@ import * as _$class_variance_authority_types0 from "class-variance-authority/typ
4
4
 
5
5
  //#region src/components/PageAlert.d.ts
6
6
  declare const pageAlertVariants: (props?: ({
7
- variant?: "default" | "info" | "success" | "warning" | "destructive" | null | undefined;
7
+ variant?: "default" | "destructive" | "info" | "success" | "warning" | null | undefined;
8
8
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
9
9
  interface PageAlertProps extends React$1.ComponentProps<"div">, VariantProps<typeof pageAlertVariants> {
10
10
  title?: string;
@@ -4,7 +4,7 @@ import * as React$1 from "react";
4
4
 
5
5
  //#region src/components/PageAlert.d.ts
6
6
  declare const pageAlertVariants: (props?: ({
7
- variant?: "default" | "info" | "success" | "warning" | "destructive" | null | undefined;
7
+ variant?: "default" | "destructive" | "info" | "success" | "warning" | null | undefined;
8
8
  } & _$class_variance_authority_types0.ClassProp) | undefined) => string;
9
9
  interface PageAlertProps extends React$1.ComponentProps<"div">, VariantProps<typeof pageAlertVariants> {
10
10
  title?: string;
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_runtime = require("../../_virtual/_rolldown/runtime.js");
3
3
  const require_src_lib_utils = require("../lib/utils.js");
4
+ let react_jsx_runtime = require("react/jsx-runtime");
4
5
  let react = require("react");
5
6
  react = require_runtime.__toESM(react);
6
- let react_jsx_runtime = require("react/jsx-runtime");
7
7
  let lucide_react = require("lucide-react");
8
8
  let react_i18next = require("react-i18next");
9
9
  //#region src/components/PageAlert.tsx
@@ -1,6 +1,6 @@
1
1
  import { cn } from "../lib/utils.mjs";
2
- import * as React$1 from "react";
3
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import * as React$1 from "react";
4
4
  import { AlertCircle, AlertTriangle, CheckCircle, Info, X } from "lucide-react";
5
5
  import { useTranslation } from "react-i18next";
6
6
  import { cva } from "class-variance-authority";
@@ -1,5 +1,5 @@
1
- import { ButtonProps } from "@heroui/react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ButtonProps } from "@heroui/react";
3
3
 
4
4
  //#region src/components/SelectChips.d.ts
5
5
  declare function SelectChips({
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../_virtual/_rolldown/runtime.js");
3
- let _heroui_react = require("@heroui/react");
4
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
+ let _heroui_react = require("@heroui/react");
5
5
  //#region src/components/SelectChips.tsx
6
6
  function SelectChips({ items, selectedItems, onSelectionChange, buttonProps }) {
7
7
  return items.map((item) => {
@@ -1,5 +1,5 @@
1
- import { Button, Checkbox } from "@heroui/react";
2
1
  import { jsx } from "react/jsx-runtime";
2
+ import { Button, Checkbox } from "@heroui/react";
3
3
  //#region src/components/SelectChips.tsx
4
4
  function SelectChips({ items, selectedItems, onSelectionChange, buttonProps }) {
5
5
  return items.map((item) => {
@@ -1,5 +1,5 @@
1
- import { ReactNode } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ReactNode } from "react";
3
3
 
4
4
  //#region src/components/SidebarItem.d.ts
5
5
  declare function SidebarItem({
@@ -1,5 +1,5 @@
1
- import { SelectProps } from "@heroui/react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { SelectProps } from "@heroui/react";
3
3
 
4
4
  //#region src/components/TablerIconPicker.d.ts
5
5
  declare function TablerIconPicker({
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../_virtual/_rolldown/runtime.js");
3
- let _heroui_react = require("@heroui/react");
4
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
+ let _heroui_react = require("@heroui/react");
5
5
  //#region src/components/TablerIconPicker.tsx
6
6
  function TablerIconPicker({ value, onSelectionChange, isVirtualized = true, ...props }) {
7
7
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_heroui_react.Select, {
@@ -1,5 +1,5 @@
1
- import { Select, SelectItem } from "@heroui/react";
2
1
  import { jsx } from "react/jsx-runtime";
2
+ import { Select, SelectItem } from "@heroui/react";
3
3
  //#region src/components/TablerIconPicker.tsx
4
4
  function TablerIconPicker({ value, onSelectionChange, isVirtualized = true, ...props }) {
5
5
  return /* @__PURE__ */ jsx(Select, {
@@ -3,8 +3,8 @@ require("../../_virtual/_rolldown/runtime.js");
3
3
  const require_src_components_ui_separator = require("./ui/separator.js");
4
4
  const require_src_components_ui_sidebar = require("./ui/sidebar.js");
5
5
  const require_src_components_ui_breadcrumb = require("./ui/breadcrumb.js");
6
- let react = require("react");
7
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
+ let react = require("react");
8
8
  //#region src/components/app-header.tsx
9
9
  function AppHeader({ breadcrumbs }) {
10
10
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("header", {
@@ -1,8 +1,8 @@
1
1
  import { Separator } from "./ui/separator.mjs";
2
2
  import { SidebarTrigger } from "./ui/sidebar.mjs";
3
3
  import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "./ui/breadcrumb.mjs";
4
- import { Fragment } from "react";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Fragment as Fragment$1 } from "react";
6
6
  //#region src/components/app-header.tsx
7
7
  function AppHeader({ breadcrumbs }) {
8
8
  return /* @__PURE__ */ jsx("header", {
@@ -15,7 +15,7 @@ function AppHeader({ breadcrumbs }) {
15
15
  orientation: "vertical",
16
16
  className: "mr-2 h-4"
17
17
  }),
18
- /* @__PURE__ */ jsx(Breadcrumb, { children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumbs.map(({ href, label }, index) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(BreadcrumbItem, { children: href ? /* @__PURE__ */ jsx(BreadcrumbLink, {
18
+ /* @__PURE__ */ jsx(Breadcrumb, { children: /* @__PURE__ */ jsx(BreadcrumbList, { children: breadcrumbs.map(({ href, label }, index) => /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(BreadcrumbItem, { children: href ? /* @__PURE__ */ jsx(BreadcrumbLink, {
19
19
  href,
20
20
  children: label
21
21
  }) : /* @__PURE__ */ jsx(BreadcrumbPage, { children: label }) }), index < breadcrumbs.length - 1 && /* @__PURE__ */ jsx(BreadcrumbSeparator, { className: "hidden md:block" })] }, `${label}-${index}`)) }) })
@@ -1 +1 @@
1
- {"version":3,"file":"app-header.mjs","names":[],"sources":["../../../src/components/app-header.tsx"],"sourcesContent":["import { Fragment } from \"react\";\r\nimport {\r\n Breadcrumb,\r\n BreadcrumbItem,\r\n BreadcrumbLink,\r\n BreadcrumbList,\r\n BreadcrumbPage,\r\n BreadcrumbSeparator,\r\n} from \"./ui/breadcrumb\";\r\nimport { Separator } from \"./ui/separator\";\r\nimport { SidebarTrigger } from \"./ui/sidebar\";\r\n\r\nexport function AppHeader({ breadcrumbs }: { breadcrumbs: { label: string; href?: string }[] }) {\r\n return (\r\n <header className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\">\r\n <div className=\"flex items-center gap-2 px-4\">\r\n <SidebarTrigger className=\"-ml-1\" />\r\n <Separator orientation=\"vertical\" className=\"mr-2 h-4\" />\r\n <Breadcrumb>\r\n <BreadcrumbList>\r\n {breadcrumbs.map(({ href, label }, index) => (\r\n <Fragment key={`${label}-${index}`}>\r\n <BreadcrumbItem>\r\n {href ? (\r\n <BreadcrumbLink href={href}>{label}</BreadcrumbLink>\r\n ) : (\r\n <BreadcrumbPage>{label}</BreadcrumbPage>\r\n )}\r\n </BreadcrumbItem>\r\n {index < breadcrumbs.length - 1 && (\r\n <BreadcrumbSeparator className=\"hidden md:block\" />\r\n )}\r\n </Fragment>\r\n ))}\r\n </BreadcrumbList>\r\n </Breadcrumb>\r\n </div>\r\n </header>\r\n );\r\n}\r\n"],"mappings":";;;;;;AAYA,SAAgB,UAAU,EAAE,eAAoE;AAC9F,QACE,oBAAC,UAAD;EAAQ,WAAU;YAChB,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,oBAAC,gBAAD,EAAgB,WAAU,SAAU,CAAA;IACpC,oBAAC,WAAD;KAAW,aAAY;KAAW,WAAU;KAAa,CAAA;IACzD,oBAAC,YAAD,EAAA,UACE,oBAAC,gBAAD,EAAA,UACG,YAAY,KAAK,EAAE,MAAM,SAAS,UACjC,qBAAC,UAAD,EAAA,UAAA,CACE,oBAAC,gBAAD,EAAA,UACG,OACC,oBAAC,gBAAD;KAAsB;eAAO;KAAuB,CAAA,GAEpD,oBAAC,gBAAD,EAAA,UAAiB,OAAuB,CAAA,EAE3B,CAAA,EAChB,QAAQ,YAAY,SAAS,KAC5B,oBAAC,qBAAD,EAAqB,WAAU,mBAAoB,CAAA,CAE5C,EAAA,EAXI,GAAG,MAAM,GAAG,QAWhB,CACX,EACa,CAAA,EACN,CAAA;IACT;;EACC,CAAA"}
1
+ {"version":3,"file":"app-header.mjs","names":["Fragment"],"sources":["../../../src/components/app-header.tsx"],"sourcesContent":["import { Fragment } from \"react\";\r\nimport {\r\n Breadcrumb,\r\n BreadcrumbItem,\r\n BreadcrumbLink,\r\n BreadcrumbList,\r\n BreadcrumbPage,\r\n BreadcrumbSeparator,\r\n} from \"./ui/breadcrumb\";\r\nimport { Separator } from \"./ui/separator\";\r\nimport { SidebarTrigger } from \"./ui/sidebar\";\r\n\r\nexport function AppHeader({ breadcrumbs }: { breadcrumbs: { label: string; href?: string }[] }) {\r\n return (\r\n <header className=\"flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-[[data-collapsible=icon]]/sidebar-wrapper:h-12\">\r\n <div className=\"flex items-center gap-2 px-4\">\r\n <SidebarTrigger className=\"-ml-1\" />\r\n <Separator orientation=\"vertical\" className=\"mr-2 h-4\" />\r\n <Breadcrumb>\r\n <BreadcrumbList>\r\n {breadcrumbs.map(({ href, label }, index) => (\r\n <Fragment key={`${label}-${index}`}>\r\n <BreadcrumbItem>\r\n {href ? (\r\n <BreadcrumbLink href={href}>{label}</BreadcrumbLink>\r\n ) : (\r\n <BreadcrumbPage>{label}</BreadcrumbPage>\r\n )}\r\n </BreadcrumbItem>\r\n {index < breadcrumbs.length - 1 && (\r\n <BreadcrumbSeparator className=\"hidden md:block\" />\r\n )}\r\n </Fragment>\r\n ))}\r\n </BreadcrumbList>\r\n </Breadcrumb>\r\n </div>\r\n </header>\r\n );\r\n}\r\n"],"mappings":";;;;;;AAYA,SAAgB,UAAU,EAAE,eAAoE;AAC9F,QACE,oBAAC,UAAD;EAAQ,WAAU;YAChB,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,oBAAC,gBAAD,EAAgB,WAAU,SAAU,CAAA;IACpC,oBAAC,WAAD;KAAW,aAAY;KAAW,WAAU;KAAa,CAAA;IACzD,oBAAC,YAAD,EAAA,UACE,oBAAC,gBAAD,EAAA,UACG,YAAY,KAAK,EAAE,MAAM,SAAS,UACjC,qBAACA,YAAD,EAAA,UAAA,CACE,oBAAC,gBAAD,EAAA,UACG,OACC,oBAAC,gBAAD;KAAsB;eAAO;KAAuB,CAAA,GAEpD,oBAAC,gBAAD,EAAA,UAAiB,OAAuB,CAAA,EAE3B,CAAA,EAChB,QAAQ,YAAY,SAAS,KAC5B,oBAAC,qBAAD,EAAqB,WAAU,mBAAoB,CAAA,CAE5C,EAAA,EAXI,GAAG,MAAM,GAAG,QAWhB,CACX,EACa,CAAA,EACN,CAAA;IACT;;EACC,CAAA"}
@@ -1,5 +1,5 @@
1
- import { ReactNode } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ReactNode } from "react";
3
3
 
4
4
  //#region src/components/blur-card.d.ts
5
5
  interface BlurCardProps {
@@ -2,8 +2,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../_virtual/_rolldown/runtime.js");
3
3
  const require_src_lib_utils = require("../lib/utils.js");
4
4
  const require_src_components_ui_card = require("./ui/card.js");
5
- let react = require("react");
6
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
+ let react = require("react");
7
7
  let motion_react = require("motion/react");
8
8
  //#region src/components/blur-card.tsx
9
9
  function BlurCardHeader({ title, subtitle, type, date }) {
@@ -1,7 +1,7 @@
1
1
  import { cn } from "../lib/utils.mjs";
2
2
  import { Card } from "./ui/card.mjs";
3
- import { useState } from "react";
4
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { useState } from "react";
5
5
  import { motion } from "motion/react";
6
6
  //#region src/components/blur-card.tsx
7
7
  function BlurCardHeader({ title, subtitle, type, date }) {
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../_virtual/_rolldown/runtime.js");
6
- let react = require("react");
7
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
+ let react = require("react");
8
8
  //#region src/components/features-section-demo-1.tsx
9
9
  function FeaturesSectionDemo() {
10
10
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
@@ -1,5 +1,5 @@
1
- import { useId } from "react";
2
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useId } from "react";
3
3
  //#region src/components/features-section-demo-1.tsx
4
4
  function FeaturesSectionDemo() {
5
5
  return /* @__PURE__ */ jsx("div", {
@@ -4,8 +4,8 @@ Object.defineProperties(exports, {
4
4
  });
5
5
  const require_runtime = require("../../_virtual/_rolldown/runtime.js");
6
6
  const require_src_lib_utils = require("../lib/utils.js");
7
- let react = require("react");
8
7
  let react_jsx_runtime = require("react/jsx-runtime");
8
+ let react = require("react");
9
9
  let motion_react = require("motion/react");
10
10
  let _tabler_icons_react = require("@tabler/icons-react");
11
11
  let cobe = require("cobe");
@@ -1,6 +1,6 @@
1
1
  import { cn } from "../lib/utils.mjs";
2
- import { useEffect, useRef } from "react";
3
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useRef } from "react";
4
4
  import { motion } from "motion/react";
5
5
  import { IconBrandYoutubeFilled } from "@tabler/icons-react";
6
6
  import createGlobe from "cobe";
@@ -2,8 +2,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../../_virtual/_rolldown/runtime.js");
3
3
  const require_src_lib_utils = require("../../lib/utils.js");
4
4
  const require_src_components_ui_button = require("../ui/button.js");
5
- let react = require("react");
6
5
  let react_jsx_runtime = require("react/jsx-runtime");
6
+ let react = require("react");
7
7
  let lucide_react = require("lucide-react");
8
8
  let react_i18next = require("react-i18next");
9
9
  let sonner = require("sonner");
@@ -1,7 +1,7 @@
1
1
  import { cn } from "../../lib/utils.mjs";
2
2
  import { Button } from "../ui/button.mjs";
3
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
4
  import { useState } from "react";
4
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
5
5
  import { CheckCircle, Copy } from "lucide-react";
6
6
  import { useTranslation } from "react-i18next";
7
7
  import { toast } from "sonner";
@@ -26,7 +26,7 @@ function ButtonCopy({ text, notificationTimeout = 1e3, iconOnly = false, ...prop
26
26
  onClick: () => handleCopy(text),
27
27
  className: cn(isCopied ? "bg-green-200 hover:bg-green-300" : "", iconOnly ? "" : "gap-1"),
28
28
  ...props,
29
- children: isCopied ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(CheckCircle, { className: "h-4 w-4" }), !iconOnly && t("web-ui:common.copied")] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(Copy, { className: "h-4 w-4" }), !iconOnly && t("web-ui:common.copy")] })
29
+ children: isCopied ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(CheckCircle, { className: "h-4 w-4" }), !iconOnly && t("web-ui:common.copied")] }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Copy, { className: "h-4 w-4" }), !iconOnly && t("web-ui:common.copy")] })
30
30
  });
31
31
  }
32
32
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonCopy.mjs","names":[],"sources":["../../../../src/components/shared/ButtonCopy.tsx"],"sourcesContent":["import { CheckCircle, Copy } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { toast } from \"sonner\";\r\nimport { Button, type ButtonProps } from \"../ui/button\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport function ButtonCopy({\r\n text,\r\n notificationTimeout = 1000,\r\n iconOnly = false,\r\n ...props\r\n}: ButtonProps & { text: string; notificationTimeout?: number; iconOnly?: boolean }) {\r\n const { t } = useTranslation();\r\n const [isCopied, setIsCopied] = useState(false);\r\n\r\n const handleCopy = async (text: string) => {\r\n try {\r\n await window.navigator.clipboard.writeText(text);\r\n setIsCopied(true);\r\n toast.success(t(\"web-ui:common.copySuccess\"));\r\n setTimeout(() => setIsCopied(false), notificationTimeout);\r\n } catch (error) {\r\n toast.error(t(\"web-ui:common.copyError\"));\r\n console.error(error);\r\n }\r\n };\r\n\r\n return (\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => handleCopy(text)}\r\n className={cn(isCopied ? \"bg-green-200 hover:bg-green-300\" : \"\", iconOnly ? \"\" : \"gap-1\")}\r\n {...props}\r\n >\r\n {isCopied ? (\r\n <>\r\n <CheckCircle className=\"h-4 w-4\" />\r\n {!iconOnly && t(\"web-ui:common.copied\")}\r\n </>\r\n ) : (\r\n <>\r\n <Copy className=\"h-4 w-4\" />\r\n {!iconOnly && t(\"web-ui:common.copy\")}\r\n </>\r\n )}\r\n </Button>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;AAOA,SAAgB,WAAW,EACzB,MACA,sBAAsB,KACtB,WAAW,OACX,GAAG,SACgF;CACnF,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAE/C,MAAM,aAAa,OAAO,SAAiB;AACzC,MAAI;AACF,SAAM,OAAO,UAAU,UAAU,UAAU,KAAK;AAChD,eAAY,KAAK;AACjB,SAAM,QAAQ,EAAE,4BAA4B,CAAC;AAC7C,oBAAiB,YAAY,MAAM,EAAE,oBAAoB;WAClD,OAAO;AACd,SAAM,MAAM,EAAE,0BAA0B,CAAC;AACzC,WAAQ,MAAM,MAAM;;;AAIxB,QACE,oBAAC,QAAD;EACE,SAAQ;EACR,MAAK;EACL,eAAe,WAAW,KAAK;EAC/B,WAAW,GAAG,WAAW,oCAAoC,IAAI,WAAW,KAAK,QAAQ;EACzF,GAAI;YAEH,WACC,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,aAAD,EAAa,WAAU,WAAY,CAAA,EAClC,CAAC,YAAY,EAAE,uBAAuB,CACtC,EAAA,CAAA,GAEH,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,MAAD,EAAM,WAAU,WAAY,CAAA,EAC3B,CAAC,YAAY,EAAE,qBAAqB,CACpC,EAAA,CAAA;EAEE,CAAA"}
1
+ {"version":3,"file":"ButtonCopy.mjs","names":[],"sources":["../../../../src/components/shared/ButtonCopy.tsx"],"sourcesContent":["import { CheckCircle, Copy } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { toast } from \"sonner\";\r\nimport { Button, type ButtonProps } from \"../ui/button\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport function ButtonCopy({\r\n text,\r\n notificationTimeout = 1000,\r\n iconOnly = false,\r\n ...props\r\n}: ButtonProps & { text: string; notificationTimeout?: number; iconOnly?: boolean }) {\r\n const { t } = useTranslation();\r\n const [isCopied, setIsCopied] = useState(false);\r\n\r\n const handleCopy = async (text: string) => {\r\n try {\r\n await window.navigator.clipboard.writeText(text);\r\n setIsCopied(true);\r\n toast.success(t(\"web-ui:common.copySuccess\"));\r\n setTimeout(() => setIsCopied(false), notificationTimeout);\r\n } catch (error) {\r\n toast.error(t(\"web-ui:common.copyError\"));\r\n console.error(error);\r\n }\r\n };\r\n\r\n return (\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => handleCopy(text)}\r\n className={cn(isCopied ? \"bg-green-200 hover:bg-green-300\" : \"\", iconOnly ? \"\" : \"gap-1\")}\r\n {...props}\r\n >\r\n {isCopied ? (\r\n <>\r\n <CheckCircle className=\"h-4 w-4\" />\r\n {!iconOnly && t(\"web-ui:common.copied\")}\r\n </>\r\n ) : (\r\n <>\r\n <Copy className=\"h-4 w-4\" />\r\n {!iconOnly && t(\"web-ui:common.copy\")}\r\n </>\r\n )}\r\n </Button>\r\n );\r\n}\r\n"],"mappings":";;;;;;;;AAOA,SAAgB,WAAW,EACzB,MACA,sBAAsB,KACtB,WAAW,OACX,GAAG,SACgF;CACnF,MAAM,EAAE,MAAM,gBAAgB;CAC9B,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAE/C,MAAM,aAAa,OAAO,SAAiB;AACzC,MAAI;AACF,SAAM,OAAO,UAAU,UAAU,UAAU,KAAK;AAChD,eAAY,KAAK;AACjB,SAAM,QAAQ,EAAE,4BAA4B,CAAC;AAC7C,oBAAiB,YAAY,MAAM,EAAE,oBAAoB;WAClD,OAAO;AACd,SAAM,MAAM,EAAE,0BAA0B,CAAC;AACzC,WAAQ,MAAM,MAAM;;;AAIxB,QACE,oBAAC,QAAD;EACE,SAAQ;EACR,MAAK;EACL,eAAe,WAAW,KAAK;EAC/B,WAAW,GAAG,WAAW,oCAAoC,IAAI,WAAW,KAAK,QAAQ;EACzF,GAAI;YAEH,WACC,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,aAAD,EAAa,WAAU,WAAY,CAAA,EAClC,CAAC,YAAY,EAAE,uBAAuB,CACtC,EAAA,CAAA,GAEH,qBAAA,UAAA,EAAA,UAAA,CACE,oBAAC,MAAD,EAAM,WAAU,WAAY,CAAA,EAC3B,CAAC,YAAY,EAAE,qBAAqB,CACpC,EAAA,CAAA;EAEE,CAAA"}
@@ -1,5 +1,5 @@
1
- import * as React$1 from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import * as React$1 from "react";
3
3
 
4
4
  //#region src/components/team-switcher.d.ts
5
5
  declare function TeamSwitcher({
@@ -2,9 +2,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_runtime = require("../../_virtual/_rolldown/runtime.js");
3
3
  const require_src_components_ui_sidebar = require("./ui/sidebar.js");
4
4
  const require_src_components_ui_dropdown_menu = require("./ui/dropdown-menu.js");
5
+ let react_jsx_runtime = require("react/jsx-runtime");
5
6
  let react = require("react");
6
7
  react = require_runtime.__toESM(react);
7
- let react_jsx_runtime = require("react/jsx-runtime");
8
8
  let lucide_react = require("lucide-react");
9
9
  //#region src/components/team-switcher.tsx
10
10
  function TeamSwitcher({ teams }) {
@@ -1,7 +1,7 @@
1
1
  import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from "./ui/sidebar.mjs";
2
2
  import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuTrigger } from "./ui/dropdown-menu.mjs";
3
- import * as React$1 from "react";
4
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
+ import * as React$1 from "react";
5
5
  import { ChevronsUpDown, Plus } from "lucide-react";
6
6
  //#region src/components/team-switcher.tsx
7
7
  function TeamSwitcher({ teams }) {
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../_virtual/_rolldown/runtime.js");
3
- let react = require("react");
4
3
  let react_jsx_runtime = require("react/jsx-runtime");
4
+ let react = require("react");
5
5
  //#region src/components/theme-provider.tsx
6
6
  const ThemeProviderContext = (0, react.createContext)({
7
7
  theme: "dark",
@@ -1,5 +1,5 @@
1
- import { createContext, useContext, useEffect, useState } from "react";
2
1
  import { jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useEffect, useState } from "react";
3
3
  //#region src/components/theme-provider.tsx
4
4
  const ThemeProviderContext = createContext({
5
5
  theme: "dark",
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../_virtual/_rolldown/runtime.js");
3
3
  const require_src_components_ui_typewriter_effect = require("./ui/typewriter-effect.js");
4
- let react = require("react");
5
4
  let react_jsx_runtime = require("react/jsx-runtime");
5
+ let react = require("react");
6
6
  //#region src/components/typewriter.tsx
7
7
  function Typewriter({ words, wordClass = "dark:text-neutral-300", highlightClass = "text-green-500 dark:text-green-500", cursorClassName = "bg-green-500 dark:bg-green-500", highlightIndex, ...props }) {
8
8
  const position = highlightIndex ?? words.length - 1;
@@ -1,6 +1,6 @@
1
1
  import { TypewriterEffect } from "./ui/typewriter-effect.mjs";
2
- import { createElement, useEffect, useState } from "react";
3
2
  import { jsx } from "react/jsx-runtime";
3
+ import { createElement, useEffect, useState } from "react";
4
4
  //#region src/components/typewriter.tsx
5
5
  function Typewriter({ words, wordClass = "dark:text-neutral-300", highlightClass = "text-green-500 dark:text-green-500", cursorClassName = "bg-green-500 dark:bg-green-500", highlightIndex, ...props }) {
6
6
  const position = highlightIndex ?? words.length - 1;
@@ -1,5 +1,5 @@
1
- import * as React$1 from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import * as React$1 from "react";
3
3
  import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
4
4
 
5
5
  //#region src/components/ui/alert-dialog.d.ts
@@ -1,5 +1,5 @@
1
- import * as React$1 from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import * as React$1 from "react";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import * as _$class_variance_authority_types0 from "class-variance-authority/types";
5
5
 
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_runtime = require("../../../_virtual/_rolldown/runtime.js");
4
4
  const require_src_lib_utils = require("../../lib/utils.js");
5
+ let react_jsx_runtime = require("react/jsx-runtime");
5
6
  let react = require("react");
6
7
  react = require_runtime.__toESM(react);
7
- let react_jsx_runtime = require("react/jsx-runtime");
8
8
  let _radix_ui_react_avatar = require("@radix-ui/react-avatar");
9
9
  _radix_ui_react_avatar = require_runtime.__toESM(_radix_ui_react_avatar);
10
10
  //#region src/components/ui/avatar.tsx
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { cn } from "../../lib/utils.mjs";
3
- import * as React$1 from "react";
4
3
  import { jsx } from "react/jsx-runtime";
4
+ import * as React$1 from "react";
5
5
  import * as AvatarPrimitive from "@radix-ui/react-avatar";
6
6
  //#region src/components/ui/avatar.tsx
7
7
  const Avatar = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
@@ -1,5 +1,5 @@
1
- import * as React$1 from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import * as React$1 from "react";
3
3
  import { VariantProps } from "class-variance-authority";
4
4
  import * as _$class_variance_authority_types0 from "class-variance-authority/types";
5
5
 
@@ -1,5 +1,5 @@
1
- import { ReactNode } from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import { ReactNode } from "react";
3
3
 
4
4
  //#region src/components/ui/bento-grid2.d.ts
5
5
  declare const BentoGrid: ({
@@ -1,5 +1,5 @@
1
- import * as React$1 from "react";
2
1
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
2
+ import * as React$1 from "react";
3
3
 
4
4
  //#region src/components/ui/breadcrumb.d.ts
5
5
  declare const Breadcrumb: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & {