@vitnode/core 1.2.0-canary.59 → 1.2.0-canary.61

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 (283) hide show
  1. package/dist/scripts/get-config.js +15 -0
  2. package/dist/scripts/plugin.js +188 -0
  3. package/dist/scripts/prepare-database.js +177 -0
  4. package/dist/scripts/prepare-plugins-files.js +134 -0
  5. package/dist/scripts/run-interactive-shell-command.js +21 -0
  6. package/dist/scripts/scripts.js +39 -13
  7. package/dist/scripts/shared/file-utils.js +203 -0
  8. package/dist/src/api/adapters/sso/discord.js +1 -77
  9. package/dist/src/api/adapters/sso/facebook.js +1 -76
  10. package/dist/src/api/adapters/sso/google.js +1 -87
  11. package/dist/src/api/config.js +1 -67
  12. package/dist/src/api/lib/check-plugin-id.js +1 -43
  13. package/dist/src/api/lib/cron.js +1 -22
  14. package/dist/src/api/lib/logger-middleware.js +1 -35
  15. package/dist/src/api/lib/module.js +1 -22
  16. package/dist/src/api/lib/plugin.js +1 -22
  17. package/dist/src/api/lib/route.js +1 -27
  18. package/dist/src/api/lib/with-pagination.js +1 -83
  19. package/dist/src/api/middlewares/captcha.middleware.js +1 -63
  20. package/dist/src/api/middlewares/cron-auth.middleware.js +1 -19
  21. package/dist/src/api/middlewares/global.middleware.d.ts.map +1 -1
  22. package/dist/src/api/middlewares/global.middleware.js +1 -104
  23. package/dist/src/api/middlewares/rate-limiter.middleware.js +1 -32
  24. package/dist/src/api/models/device.js +1 -61
  25. package/dist/src/api/models/email.d.ts.map +1 -1
  26. package/dist/src/api/models/email.js +1 -77
  27. package/dist/src/api/models/password.js +1 -36
  28. package/dist/src/api/models/session-admin.d.ts.map +1 -1
  29. package/dist/src/api/models/session-admin.js +1 -97
  30. package/dist/src/api/models/session.d.ts.map +1 -1
  31. package/dist/src/api/models/session.js +1 -76
  32. package/dist/src/api/models/sso.js +1 -120
  33. package/dist/src/api/models/user/get-user-by-id.js +1 -19
  34. package/dist/src/api/models/user/sign-in-with-passwords.js +1 -22
  35. package/dist/src/api/models/user/sign-up.js +1 -73
  36. package/dist/src/api/models/user.js +1 -8
  37. package/dist/src/api/modules/admin/admin.module.js +1 -19
  38. package/dist/src/api/modules/admin/advanced/advanced.admin.module.js +1 -11
  39. package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.js +1 -12
  40. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.js +1 -66
  41. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.js +1 -95
  42. package/dist/src/api/modules/admin/debug/debug.admin.module.js +1 -10
  43. package/dist/src/api/modules/admin/debug/routes/logs.route.js +1 -94
  44. package/dist/src/api/modules/admin/routes/session.route.js +1 -47
  45. package/dist/src/api/modules/admin/users/routes/list.route.js +1 -79
  46. package/dist/src/api/modules/admin/users/routes/users.route.js +1 -84
  47. package/dist/src/api/modules/admin/users/users.admin.module.js +1 -10
  48. package/dist/src/api/modules/cron/cron/clean.cron.js +1 -24
  49. package/dist/src/api/modules/cron/cron.module.js +1 -14
  50. package/dist/src/api/modules/cron/helpers/process-cron-jobs.d.ts.map +1 -1
  51. package/dist/src/api/modules/cron/helpers/process-cron-jobs.js +1 -72
  52. package/dist/src/api/modules/cron/routes/cron.route.d.ts.map +1 -1
  53. package/dist/src/api/modules/cron/routes/cron.route.js +1 -95
  54. package/dist/src/api/modules/middleware/middleware.module.js +1 -10
  55. package/dist/src/api/modules/middleware/route.js +1 -49
  56. package/dist/src/api/modules/users/avatar-color.js +1 -43
  57. package/dist/src/api/modules/users/routes/change-password.route.js +1 -58
  58. package/dist/src/api/modules/users/routes/reset-passowrd.route.js +1 -91
  59. package/dist/src/api/modules/users/routes/session.route.js +1 -46
  60. package/dist/src/api/modules/users/routes/sign-in.route.js +1 -71
  61. package/dist/src/api/modules/users/routes/sign-out.route.js +1 -43
  62. package/dist/src/api/modules/users/routes/sign-up.route.js +1 -77
  63. package/dist/src/api/modules/users/routes/test.route.js +1 -33
  64. package/dist/src/api/modules/users/sso/routes/callback.route.js +1 -52
  65. package/dist/src/api/modules/users/sso/routes/create-url.route.js +1 -36
  66. package/dist/src/api/modules/users/sso/sso.module.js +1 -12
  67. package/dist/src/api/modules/users/users.module.js +1 -26
  68. package/dist/src/api/plugin.js +1 -15
  69. package/dist/src/app/login/page.js +1 -16
  70. package/dist/src/app/login/reset-password/page.js +1 -18
  71. package/dist/src/app/login/sso/[providerId]/page.js +1 -10
  72. package/dist/src/app/register/page.js +1 -16
  73. package/dist/src/app_admin/core/advanced/cron/page.js +1 -42
  74. package/dist/src/app_admin/core/debug/page.js +1 -45
  75. package/dist/src/app_admin/core/page.js +1 -5
  76. package/dist/src/app_admin/core/test/page.js +1 -5
  77. package/dist/src/app_admin/core/users/page.js +1 -38
  78. package/dist/src/components/avatar.js +1 -14
  79. package/dist/src/components/confirm-action/confirm-action-alert-dialog.js +1 -42
  80. package/dist/src/components/confirm-action/content.js +1 -31
  81. package/dist/src/components/date-format.js +1 -41
  82. package/dist/src/components/form/auto-form.js +1 -103
  83. package/dist/src/components/form/common/desc.js +1 -9
  84. package/dist/src/components/form/common/label.js +1 -18
  85. package/dist/src/components/form/fields/checkbox.js +1 -37
  86. package/dist/src/components/form/fields/combobox-async.js +1 -123
  87. package/dist/src/components/form/fields/combobox.js +1 -87
  88. package/dist/src/components/form/fields/input.js +1 -39
  89. package/dist/src/components/form/fields/radio-group.js +1 -50
  90. package/dist/src/components/form/fields/select.js +1 -58
  91. package/dist/src/components/form/fields/switch.js +1 -36
  92. package/dist/src/components/form/fields/textarea.js +1 -36
  93. package/dist/src/components/i18n-provider.js +1 -43
  94. package/dist/src/components/logo-vitnode.js +1 -119
  95. package/dist/src/components/switchers/langs/language-switcher.js +1 -47
  96. package/dist/src/components/switchers/themes/theme-switcher.js +1 -28
  97. package/dist/src/components/table/content.js +1 -81
  98. package/dist/src/components/table/data-table.js +1 -68
  99. package/dist/src/components/table/order-table-head.js +1 -50
  100. package/dist/src/components/table/pagination.js +1 -122
  101. package/dist/src/components/tiptap/extension.js +1 -33
  102. package/dist/src/components/tiptap/toolbar/actions/alignment-action.js +1 -91
  103. package/dist/src/components/tiptap/toolbar/actions/bold-action.js +1 -39
  104. package/dist/src/components/tiptap/toolbar/actions/headings-action.js +1 -93
  105. package/dist/src/components/tiptap/toolbar/actions/italic-action.js +1 -38
  106. package/dist/src/components/tiptap/toolbar/actions/list-action.js +1 -61
  107. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.js +1 -59
  108. package/dist/src/components/tiptap/toolbar/actions/underline-action.js +1 -38
  109. package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.js +1 -63
  110. package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.js +1 -11
  111. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.js +1 -55
  112. package/dist/src/components/tiptap/toolbar/use-toolbar-editor.js +1 -5
  113. package/dist/src/components/ui/accordion.js +1 -46
  114. package/dist/src/components/ui/alert-dialog.js +1 -123
  115. package/dist/src/components/ui/alert.js +1 -39
  116. package/dist/src/components/ui/badge.js +1 -28
  117. package/dist/src/components/ui/button-client.js +1 -57
  118. package/dist/src/components/ui/button.js +1 -32
  119. package/dist/src/components/ui/card.js +1 -52
  120. package/dist/src/components/ui/checkbox.js +1 -20
  121. package/dist/src/components/ui/collapsible.js +1 -22
  122. package/dist/src/components/ui/command.js +1 -98
  123. package/dist/src/components/ui/context-menu.js +1 -140
  124. package/dist/src/components/ui/dialog.js +1 -189
  125. package/dist/src/components/ui/drawer.js +1 -83
  126. package/dist/src/components/ui/dropdown-menu.js +1 -141
  127. package/dist/src/components/ui/editor-content.js +1 -10
  128. package/dist/src/components/ui/editor.js +1 -35
  129. package/dist/src/components/ui/form.js +1 -148
  130. package/dist/src/components/ui/header-content.js +1 -30
  131. package/dist/src/components/ui/hover-card.js +1 -29
  132. package/dist/src/components/ui/input-otp.js +1 -48
  133. package/dist/src/components/ui/input.js +1 -11
  134. package/dist/src/components/ui/label.js +1 -12
  135. package/dist/src/components/ui/loader.js +1 -16
  136. package/dist/src/components/ui/menubar.js +1 -151
  137. package/dist/src/components/ui/navigation-menu.js +1 -82
  138. package/dist/src/components/ui/popover.js +1 -35
  139. package/dist/src/components/ui/progress.js +1 -19
  140. package/dist/src/components/ui/radio-group.js +1 -27
  141. package/dist/src/components/ui/scroll-area.js +1 -33
  142. package/dist/src/components/ui/select.js +1 -113
  143. package/dist/src/components/ui/separator.js +1 -14
  144. package/dist/src/components/ui/sheet.js +1 -92
  145. package/dist/src/components/ui/sidebar.js +1 -433
  146. package/dist/src/components/ui/skeleton.js +1 -10
  147. package/dist/src/components/ui/slider.js +1 -50
  148. package/dist/src/components/ui/sonner.js +1 -26
  149. package/dist/src/components/ui/switch.js +1 -16
  150. package/dist/src/components/ui/table.js +1 -63
  151. package/dist/src/components/ui/tabs.js +1 -33
  152. package/dist/src/components/ui/textarea.js +1 -10
  153. package/dist/src/components/ui/toggle-group.js +1 -45
  154. package/dist/src/components/ui/toggle.js +1 -34
  155. package/dist/src/components/ui/tooltip.js +1 -57
  156. package/dist/src/config.js +1 -4
  157. package/dist/src/database/admins.js +1 -74
  158. package/dist/src/database/cron.js +1 -22
  159. package/dist/src/database/languages.js +1 -52
  160. package/dist/src/database/logs.js +1 -34
  161. package/dist/src/database/moderators.js +1 -37
  162. package/dist/src/database/roles.js +1 -13
  163. package/dist/src/database/sessions.js +1 -60
  164. package/dist/src/database/users.js +1 -145
  165. package/dist/src/drizzle.config.js +1 -67
  166. package/dist/src/emails/default-template.js +1 -99
  167. package/dist/src/emails/reset-password.js +1 -132
  168. package/dist/src/emails/ui/button.js +1 -36
  169. package/dist/src/emails/ui/card.js +1 -39
  170. package/dist/src/hooks/use-before-unload.js +1 -30
  171. package/dist/src/hooks/use-captcha.js +1 -122
  172. package/dist/src/hooks/use-mobile.js +1 -16
  173. package/dist/src/lib/api/get-middleware-api.js +1 -13
  174. package/dist/src/lib/api/get-next-cron-run-date.js +1 -14
  175. package/dist/src/lib/api/get-next-cron-run-date.test.js +1 -55
  176. package/dist/src/lib/api/get-session-admin-api.js +1 -19
  177. package/dist/src/lib/api/get-session-api.js +1 -14
  178. package/dist/src/lib/api/should-cron-job-run.js +1 -16
  179. package/dist/src/lib/api/should-cron-job-run.test.js +1 -213
  180. package/dist/src/lib/api/validate-cron-schedule.d.ts +2 -0
  181. package/dist/src/lib/api/validate-cron-schedule.d.ts.map +1 -0
  182. package/dist/src/lib/api/validate-cron-schedule.js +1 -0
  183. package/dist/src/lib/api/validate-cron-schedule.test.d.ts +2 -0
  184. package/dist/src/lib/api/validate-cron-schedule.test.d.ts.map +1 -0
  185. package/dist/src/lib/api/validate-cron-schedule.test.js +1 -0
  186. package/dist/src/lib/colors.js +1 -140
  187. package/dist/src/lib/colors.test.js +1 -173
  188. package/dist/src/lib/config.js +1 -14
  189. package/dist/src/lib/ctrl-or-command-character.js +1 -5
  190. package/dist/src/lib/fetcher/cookie-from-string-to-object.js +1 -12
  191. package/dist/src/lib/fetcher/cookie-from-string-to-object.test.js +1 -78
  192. package/dist/src/lib/fetcher/core.js +3 -48
  193. package/dist/src/lib/fetcher/helpers-server.js +1 -18
  194. package/dist/src/lib/fetcher/helpers.js +1 -16
  195. package/dist/src/lib/fetcher/helpers.test.js +1 -37
  196. package/dist/src/lib/fetcher/types.js +1 -1
  197. package/dist/src/lib/fetcher-client.js +1 -17
  198. package/dist/src/lib/fetcher.js +1 -33
  199. package/dist/src/lib/helpers/auto-form.js +1 -98
  200. package/dist/src/lib/helpers/auto-form.test.js +1 -336
  201. package/dist/src/lib/navigation.d.ts +15 -13
  202. package/dist/src/lib/navigation.d.ts.map +1 -1
  203. package/dist/src/lib/navigation.js +1 -11
  204. package/dist/src/lib/plugin.js +1 -3
  205. package/dist/src/lib/special-characters.js +1 -4
  206. package/dist/src/lib/special-characters.test.js +1 -56
  207. package/dist/src/lib/utils.js +1 -5
  208. package/dist/src/locales/en.json +308 -0
  209. package/dist/src/tests/setup.js +1 -6
  210. package/dist/src/views/admin/layouts/admin-layout.js +1 -73
  211. package/dist/src/views/admin/layouts/sidebar/nav/item.js +1 -98
  212. package/dist/src/views/admin/layouts/sidebar/nav/nav.js +1 -60
  213. package/dist/src/views/admin/layouts/sidebar/sidebar.js +1 -28
  214. package/dist/src/views/admin/layouts/sidebar/sign-out.js +1 -14
  215. package/dist/src/views/admin/layouts/user-bar/client.js +1 -69
  216. package/dist/src/views/admin/layouts/user-bar/user-bar.js +1 -32
  217. package/dist/src/views/admin/sign-in/sign-in-admin-view.js +1 -27
  218. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.js +1 -97
  219. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.js +1 -23
  220. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.js +1 -38
  221. package/dist/src/views/admin/views/core/dashboard/dashboard-admin-view.js +1 -44
  222. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.js +1 -35
  223. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.js +1 -5
  224. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/content.js +1 -281
  225. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.js +1 -67
  226. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-status.js +1 -14
  227. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-type-log.js +1 -30
  228. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.js +1 -96
  229. package/dist/src/views/admin/views/core/test.js +1 -161
  230. package/dist/src/views/admin/views/core/users/users-admin-view.js +1 -89
  231. package/dist/src/views/auth/password-reset/change-password-form/form.js +1 -48
  232. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.js +1 -22
  233. package/dist/src/views/auth/password-reset/change-password-form/use-form.js +1 -36
  234. package/dist/src/views/auth/password-reset/form/form.js +1 -104
  235. package/dist/src/views/auth/password-reset/form/mutation-api.js +1 -21
  236. package/dist/src/views/auth/password-reset/form/use-form.js +1 -33
  237. package/dist/src/views/auth/password-reset/password-reset-view.js +1 -37
  238. package/dist/src/views/auth/sign-in/form/form.js +1 -64
  239. package/dist/src/views/auth/sign-in/form/mutation-api.js +1 -33
  240. package/dist/src/views/auth/sign-in/form/use-form.d.ts.map +1 -1
  241. package/dist/src/views/auth/sign-in/form/use-form.js +1 -38
  242. package/dist/src/views/auth/sign-in/sign-in-view.js +1 -61
  243. package/dist/src/views/auth/sign-up/components/password-input.js +1 -96
  244. package/dist/src/views/auth/sign-up/email-confirmation-view.js +1 -55
  245. package/dist/src/views/auth/sign-up/form/form.js +1 -89
  246. package/dist/src/views/auth/sign-up/form/mutation-api.js +1 -30
  247. package/dist/src/views/auth/sign-up/form/use-form.js +1 -70
  248. package/dist/src/views/auth/sign-up/sign-up-view.js +1 -65
  249. package/dist/src/views/auth/sign-up/wrapper.js +1 -22
  250. package/dist/src/views/auth/sso/buttons/client.js +1 -22
  251. package/dist/src/views/auth/sso/buttons/mutation-api.js +1 -24
  252. package/dist/src/views/auth/sso/buttons/sso-buttons.js +1 -56
  253. package/dist/src/views/auth/sso/callback/callback-sso-view.js +1 -32
  254. package/dist/src/views/auth/sso/callback/client/client.js +1 -68
  255. package/dist/src/views/auth/sso/callback/client/mutation-api.js +1 -32
  256. package/dist/src/views/error/back-button.js +1 -14
  257. package/dist/src/views/error/error-view.js +1 -58
  258. package/dist/src/views/error/global-error-view.js +1 -50
  259. package/dist/src/views/layouts/provider.js +1 -44
  260. package/dist/src/views/layouts/root-layout.js +1 -25
  261. package/dist/src/views/layouts/theme/header/header.js +1 -38
  262. package/dist/src/views/layouts/theme/header/user/auth/auth.js +1 -33
  263. package/dist/src/views/layouts/theme/header/user/auth/client.js +1 -47
  264. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.js +1 -27
  265. package/dist/src/views/layouts/theme/header/user/user.js +1 -32
  266. package/dist/src/views/layouts/theme/layout.js +1 -16
  267. package/dist/src/vitnode.config.d.ts.map +1 -1
  268. package/dist/src/vitnode.config.js +1 -42
  269. package/dist/tsconfig.tsbuildinfo +1 -1
  270. package/dist/tsup.config.js +18 -0
  271. package/dist/vitest.config.d.ts.map +1 -1
  272. package/dist/vitest.config.js +49 -0
  273. package/eslint.config.mjs +2 -0
  274. package/package.json +40 -44
  275. package/dist/src/api/adapters/cron/node-cron.adapter.d.ts +0 -3
  276. package/dist/src/api/adapters/cron/node-cron.adapter.d.ts.map +0 -1
  277. package/dist/src/api/adapters/cron/node-cron.adapter.js +0 -11
  278. package/dist/src/api/adapters/email/nodemailer.d.ts +0 -10
  279. package/dist/src/api/adapters/email/nodemailer.d.ts.map +0 -1
  280. package/dist/src/api/adapters/email/nodemailer.js +0 -30
  281. package/dist/src/api/adapters/email/resend.d.ts +0 -6
  282. package/dist/src/api/adapters/email/resend.d.ts.map +0 -1
  283. package/dist/src/api/adapters/email/resend.js +0 -21
@@ -1,140 +1 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
4
- import { ContextMenu as ContextMenuPrimitive } from "radix-ui";
5
- import { cn } from "../../lib/utils.js";
6
- function ContextMenu({ ...props }) {
7
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.Root, {
8
- "data-slot": "context-menu",
9
- ...props
10
- });
11
- }
12
- function ContextMenuTrigger({ ...props }) {
13
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.Trigger, {
14
- "data-slot": "context-menu-trigger",
15
- ...props
16
- });
17
- }
18
- function ContextMenuGroup({ ...props }) {
19
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.Group, {
20
- "data-slot": "context-menu-group",
21
- ...props
22
- });
23
- }
24
- function ContextMenuPortal({ ...props }) {
25
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.Portal, {
26
- "data-slot": "context-menu-portal",
27
- ...props
28
- });
29
- }
30
- function ContextMenuSub({ ...props }) {
31
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.Sub, {
32
- "data-slot": "context-menu-sub",
33
- ...props
34
- });
35
- }
36
- function ContextMenuRadioGroup({ ...props }) {
37
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.RadioGroup, {
38
- "data-slot": "context-menu-radio-group",
39
- ...props
40
- });
41
- }
42
- function ContextMenuSubTrigger({ className, inset, children, ...props }) {
43
- return /*#__PURE__*/ _jsxs(ContextMenuPrimitive.SubTrigger, {
44
- className: cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground outline-hidden flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
45
- "data-inset": inset,
46
- "data-slot": "context-menu-sub-trigger",
47
- ...props,
48
- children: [
49
- children,
50
- /*#__PURE__*/ _jsx(ChevronRightIcon, {
51
- className: "ml-auto"
52
- })
53
- ]
54
- });
55
- }
56
- function ContextMenuSubContent({ className, ...props }) {
57
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.SubContent, {
58
- className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-context-menu-content-transform-origin) z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg", className),
59
- "data-slot": "context-menu-sub-content",
60
- ...props
61
- });
62
- }
63
- function ContextMenuContent({ className, ...props }) {
64
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.Portal, {
65
- children: /*#__PURE__*/ _jsx(ContextMenuPrimitive.Content, {
66
- className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 max-h-(--radix-context-menu-content-available-height) origin-(--radix-context-menu-content-transform-origin) z-50 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border p-1 shadow-md", className),
67
- "data-slot": "context-menu-content",
68
- ...props
69
- })
70
- });
71
- }
72
- function ContextMenuItem({ className, inset, variant = "default", ...props }) {
73
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.Item, {
74
- className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled]:pointer-events-none data-[inset]:pl-8 data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
75
- "data-inset": inset,
76
- "data-slot": "context-menu-item",
77
- "data-variant": variant,
78
- ...props
79
- });
80
- }
81
- function ContextMenuCheckboxItem({ className, children, checked, ...props }) {
82
- return /*#__PURE__*/ _jsxs(ContextMenuPrimitive.CheckboxItem, {
83
- checked: checked,
84
- className: cn("focus:bg-accent focus:text-accent-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pl-8 pr-2 text-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
85
- "data-slot": "context-menu-checkbox-item",
86
- ...props,
87
- children: [
88
- /*#__PURE__*/ _jsx("span", {
89
- className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
90
- children: /*#__PURE__*/ _jsx(ContextMenuPrimitive.ItemIndicator, {
91
- children: /*#__PURE__*/ _jsx(CheckIcon, {
92
- className: "size-4"
93
- })
94
- })
95
- }),
96
- children
97
- ]
98
- });
99
- }
100
- function ContextMenuRadioItem({ className, children, ...props }) {
101
- return /*#__PURE__*/ _jsxs(ContextMenuPrimitive.RadioItem, {
102
- className: cn("focus:bg-accent focus:text-accent-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pl-8 pr-2 text-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
103
- "data-slot": "context-menu-radio-item",
104
- ...props,
105
- children: [
106
- /*#__PURE__*/ _jsx("span", {
107
- className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
108
- children: /*#__PURE__*/ _jsx(ContextMenuPrimitive.ItemIndicator, {
109
- children: /*#__PURE__*/ _jsx(CircleIcon, {
110
- className: "size-2 fill-current"
111
- })
112
- })
113
- }),
114
- children
115
- ]
116
- });
117
- }
118
- function ContextMenuLabel({ className, inset, ...props }) {
119
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.Label, {
120
- className: cn("text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className),
121
- "data-inset": inset,
122
- "data-slot": "context-menu-label",
123
- ...props
124
- });
125
- }
126
- function ContextMenuSeparator({ className, ...props }) {
127
- return /*#__PURE__*/ _jsx(ContextMenuPrimitive.Separator, {
128
- className: cn("bg-border -mx-1 my-1 h-px", className),
129
- "data-slot": "context-menu-separator",
130
- ...props
131
- });
132
- }
133
- function ContextMenuShortcut({ className, ...props }) {
134
- return /*#__PURE__*/ _jsx("span", {
135
- className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
136
- "data-slot": "context-menu-shortcut",
137
- ...props
138
- });
139
- }
140
- export { ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger };
1
+ "use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{CheckIcon,ChevronRightIcon,CircleIcon}from"lucide-react";import{ContextMenu as ContextMenuPrimitive}from"radix-ui";import{cn}from"../../lib/utils.js";function ContextMenu({...props}){return _jsx(ContextMenuPrimitive.Root,{"data-slot":"context-menu",...props})}function ContextMenuTrigger({...props}){return _jsx(ContextMenuPrimitive.Trigger,{"data-slot":"context-menu-trigger",...props})}function ContextMenuGroup({...props}){return _jsx(ContextMenuPrimitive.Group,{"data-slot":"context-menu-group",...props})}function ContextMenuPortal({...props}){return _jsx(ContextMenuPrimitive.Portal,{"data-slot":"context-menu-portal",...props})}function ContextMenuSub({...props}){return _jsx(ContextMenuPrimitive.Sub,{"data-slot":"context-menu-sub",...props})}function ContextMenuRadioGroup({...props}){return _jsx(ContextMenuPrimitive.RadioGroup,{"data-slot":"context-menu-radio-group",...props})}function ContextMenuSubTrigger({className,inset,children,...props}){return _jsxs(ContextMenuPrimitive.SubTrigger,{className:cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",className),"data-inset":inset,"data-slot":"context-menu-sub-trigger",...props,children:[children,_jsx(ChevronRightIcon,{className:"ml-auto"})]})}function ContextMenuSubContent({className,...props}){return _jsx(ContextMenuPrimitive.SubContent,{className:cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",className),"data-slot":"context-menu-sub-content",...props})}function ContextMenuContent({className,...props}){return _jsx(ContextMenuPrimitive.Portal,{children:_jsx(ContextMenuPrimitive.Content,{className:cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",className),"data-slot":"context-menu-content",...props})})}function ContextMenuItem({className,inset,variant="default",...props}){return _jsx(ContextMenuPrimitive.Item,{className:cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",className),"data-inset":inset,"data-slot":"context-menu-item","data-variant":variant,...props})}function ContextMenuCheckboxItem({className,children,checked,...props}){return _jsxs(ContextMenuPrimitive.CheckboxItem,{checked:checked,className:cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",className),"data-slot":"context-menu-checkbox-item",...props,children:[_jsx("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:_jsx(ContextMenuPrimitive.ItemIndicator,{children:_jsx(CheckIcon,{className:"size-4"})})}),children]})}function ContextMenuRadioItem({className,children,...props}){return _jsxs(ContextMenuPrimitive.RadioItem,{className:cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",className),"data-slot":"context-menu-radio-item",...props,children:[_jsx("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:_jsx(ContextMenuPrimitive.ItemIndicator,{children:_jsx(CircleIcon,{className:"size-2 fill-current"})})}),children]})}function ContextMenuLabel({className,inset,...props}){return _jsx(ContextMenuPrimitive.Label,{className:cn("text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",className),"data-inset":inset,"data-slot":"context-menu-label",...props})}function ContextMenuSeparator({className,...props}){return _jsx(ContextMenuPrimitive.Separator,{className:cn("bg-border -mx-1 my-1 h-px",className),"data-slot":"context-menu-separator",...props})}function ContextMenuShortcut({className,...props}){return _jsx("span",{className:cn("text-muted-foreground ml-auto text-xs tracking-widest",className),"data-slot":"context-menu-shortcut",...props})}export{ContextMenu,ContextMenuCheckboxItem,ContextMenuContent,ContextMenuGroup,ContextMenuItem,ContextMenuLabel,ContextMenuPortal,ContextMenuRadioGroup,ContextMenuRadioItem,ContextMenuSeparator,ContextMenuShortcut,ContextMenuSub,ContextMenuSubContent,ContextMenuSubTrigger,ContextMenuTrigger};
@@ -1,189 +1 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { XIcon } from "lucide-react";
4
- import { useTranslations } from "next-intl";
5
- import { Dialog as DialogPrimitive } from "radix-ui";
6
- import React from "react";
7
- import { cn } from "../../lib/utils.js";
8
- import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "./alert-dialog.js";
9
- const DialogContext = /*#__PURE__*/ React.createContext({
10
- open: false,
11
- setOpen: ()=>{},
12
- isDirty: false,
13
- setOpenAlertDialogBeforeClose: ()=>{}
14
- });
15
- const useDialog = ()=>React.use(DialogContext);
16
- function Dialog({ onOpenChange, open: openProp, ...props }) {
17
- const t = useTranslations("core.global");
18
- const [open, setOpen] = React.useState(false);
19
- const [isDirty, setIsDirty] = React.useState(false);
20
- const [openAlertDialogBeforeClose, setOpenAlertDialogBeforeClose] = React.useState(false);
21
- const handleOpenChange = React.useCallback((newOpen)=>{
22
- onOpenChange?.(newOpen);
23
- setOpen(newOpen);
24
- }, [
25
- onOpenChange
26
- ]);
27
- const contextValue = React.useMemo(()=>({
28
- open: openProp ?? open,
29
- setOpen: handleOpenChange,
30
- isDirty,
31
- setIsDirty,
32
- setOpenAlertDialogBeforeClose
33
- }), [
34
- openProp,
35
- open,
36
- handleOpenChange,
37
- isDirty
38
- ]);
39
- return /*#__PURE__*/ _jsxs(DialogContext, {
40
- value: contextValue,
41
- children: [
42
- /*#__PURE__*/ _jsx(DialogPrimitive.Root, {
43
- "data-slot": "dialog",
44
- onOpenChange: handleOpenChange,
45
- open: openProp ?? open,
46
- ...props
47
- }),
48
- /*#__PURE__*/ _jsx(AlertDialog, {
49
- onOpenChange: setOpenAlertDialogBeforeClose,
50
- open: openAlertDialogBeforeClose,
51
- children: /*#__PURE__*/ _jsxs(AlertDialogContent, {
52
- children: [
53
- /*#__PURE__*/ _jsxs(AlertDialogHeader, {
54
- children: [
55
- /*#__PURE__*/ _jsx(AlertDialogTitle, {
56
- children: t("are_you_sure_want_to_leave_form.title")
57
- }),
58
- /*#__PURE__*/ _jsx(AlertDialogDescription, {
59
- children: t("are_you_sure_want_to_leave_form.desc")
60
- })
61
- ]
62
- }),
63
- /*#__PURE__*/ _jsxs(AlertDialogFooter, {
64
- children: [
65
- /*#__PURE__*/ _jsx(AlertDialogCancel, {
66
- children: t("are_you_sure_want_to_leave_form.cancel")
67
- }),
68
- /*#__PURE__*/ _jsx(AlertDialogAction, {
69
- onClick: ()=>{
70
- setIsDirty(false);
71
- setTimeout(()=>setOpen(false), 100);
72
- },
73
- children: t("are_you_sure_want_to_leave_form.confirm")
74
- })
75
- ]
76
- })
77
- ]
78
- })
79
- })
80
- ]
81
- });
82
- }
83
- function DialogTrigger({ ...props }) {
84
- return /*#__PURE__*/ _jsx(DialogPrimitive.Trigger, {
85
- "data-slot": "dialog-trigger",
86
- ...props
87
- });
88
- }
89
- function DialogPortal({ ...props }) {
90
- return /*#__PURE__*/ _jsx(DialogPrimitive.Portal, {
91
- "data-slot": "dialog-portal",
92
- ...props
93
- });
94
- }
95
- function DialogClose({ ...props }) {
96
- const { setOpenAlertDialogBeforeClose, isDirty } = useDialog();
97
- return /*#__PURE__*/ _jsx(DialogPrimitive.Close, {
98
- "data-slot": "dialog-close",
99
- onClick: (e)=>{
100
- props?.onClick?.(e);
101
- // Prevent closing the dialog if there are unsaved changes
102
- if (isDirty) {
103
- e.preventDefault();
104
- setOpenAlertDialogBeforeClose?.(true);
105
- return;
106
- }
107
- },
108
- ...props
109
- });
110
- }
111
- function DialogOverlay({ className, ...props }) {
112
- return /*#__PURE__*/ _jsx(DialogPrimitive.Overlay, {
113
- className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className),
114
- "data-slot": "dialog-overlay",
115
- ...props
116
- });
117
- }
118
- function DialogContent({ className, children, showCloseButton = true, ...props }) {
119
- const { isDirty, setOpenAlertDialogBeforeClose } = useDialog();
120
- return /*#__PURE__*/ _jsxs(DialogPortal, {
121
- "data-slot": "dialog-portal",
122
- children: [
123
- /*#__PURE__*/ _jsx(DialogOverlay, {}),
124
- /*#__PURE__*/ _jsxs(DialogPrimitive.Content, {
125
- className: cn("dark:bg-background bg-card data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed left-[50%] top-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", "max-h-[calc(100vh_-_2rem)] overflow-y-scroll sm:max-h-[calc(100vh_-_5rem)]", className),
126
- "data-slot": "dialog-content",
127
- onInteractOutside: (e)=>{
128
- // Prevent dismissing the dialog when clicking on a toast
129
- const isToastItem = e.target?.closest("[data-sonner-toaster]");
130
- if (isToastItem || isDirty) e.preventDefault();
131
- if (props?.onInteractOutside) {
132
- props.onInteractOutside(e);
133
- }
134
- },
135
- ...props,
136
- children: [
137
- children,
138
- showCloseButton && /*#__PURE__*/ _jsxs(DialogPrimitive.Close, {
139
- className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground rounded-xs focus:outline-hidden absolute right-4 top-4 opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
140
- "data-slot": "dialog-close",
141
- onClick: (e)=>{
142
- if (isDirty) {
143
- e.preventDefault();
144
- setOpenAlertDialogBeforeClose?.(true);
145
- return;
146
- }
147
- },
148
- children: [
149
- /*#__PURE__*/ _jsx(XIcon, {}),
150
- /*#__PURE__*/ _jsx("span", {
151
- className: "sr-only",
152
- children: "Close"
153
- })
154
- ]
155
- })
156
- ]
157
- })
158
- ]
159
- });
160
- }
161
- function DialogHeader({ className, ...props }) {
162
- return /*#__PURE__*/ _jsx("div", {
163
- className: cn("flex flex-col gap-2 text-center sm:text-left", className),
164
- "data-slot": "dialog-header",
165
- ...props
166
- });
167
- }
168
- function DialogFooter({ className, ...props }) {
169
- return /*#__PURE__*/ _jsx("div", {
170
- className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
171
- "data-slot": "dialog-footer",
172
- ...props
173
- });
174
- }
175
- function DialogTitle({ className, ...props }) {
176
- return /*#__PURE__*/ _jsx(DialogPrimitive.Title, {
177
- className: cn("text-lg font-semibold leading-none", className),
178
- "data-slot": "dialog-title",
179
- ...props
180
- });
181
- }
182
- function DialogDescription({ className, ...props }) {
183
- return /*#__PURE__*/ _jsx(DialogPrimitive.Description, {
184
- className: cn("text-muted-foreground text-sm", className),
185
- "data-slot": "dialog-description",
186
- ...props
187
- });
188
- }
189
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, useDialog };
1
+ "use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{XIcon}from"lucide-react";import{useTranslations}from"next-intl";import{Dialog as DialogPrimitive}from"radix-ui";import React from"react";import{cn}from"../../lib/utils.js";import{AlertDialog,AlertDialogAction,AlertDialogCancel,AlertDialogContent,AlertDialogDescription,AlertDialogFooter,AlertDialogHeader,AlertDialogTitle}from"./alert-dialog.js";const DialogContext=React.createContext({open:false,setOpen:()=>{},isDirty:false,setOpenAlertDialogBeforeClose:()=>{}});const useDialog=()=>React.use(DialogContext);function Dialog({onOpenChange,open:openProp,...props}){const t=useTranslations("core.global");const[open,setOpen]=React.useState(false);const[isDirty,setIsDirty]=React.useState(false);const[openAlertDialogBeforeClose,setOpenAlertDialogBeforeClose]=React.useState(false);const handleOpenChange=React.useCallback(newOpen=>{onOpenChange?.(newOpen);setOpen(newOpen)},[onOpenChange]);const contextValue=React.useMemo(()=>({open:openProp??open,setOpen:handleOpenChange,isDirty,setIsDirty,setOpenAlertDialogBeforeClose}),[openProp,open,handleOpenChange,isDirty]);return _jsxs(DialogContext,{value:contextValue,children:[_jsx(DialogPrimitive.Root,{"data-slot":"dialog",onOpenChange:handleOpenChange,open:openProp??open,...props}),_jsx(AlertDialog,{onOpenChange:setOpenAlertDialogBeforeClose,open:openAlertDialogBeforeClose,children:_jsxs(AlertDialogContent,{children:[_jsxs(AlertDialogHeader,{children:[_jsx(AlertDialogTitle,{children:t("are_you_sure_want_to_leave_form.title")}),_jsx(AlertDialogDescription,{children:t("are_you_sure_want_to_leave_form.desc")})]}),_jsxs(AlertDialogFooter,{children:[_jsx(AlertDialogCancel,{children:t("are_you_sure_want_to_leave_form.cancel")}),_jsx(AlertDialogAction,{onClick:()=>{setIsDirty(false);setTimeout(()=>setOpen(false),100)},children:t("are_you_sure_want_to_leave_form.confirm")})]})]})})]})}function DialogTrigger({...props}){return _jsx(DialogPrimitive.Trigger,{"data-slot":"dialog-trigger",...props})}function DialogPortal({...props}){return _jsx(DialogPrimitive.Portal,{"data-slot":"dialog-portal",...props})}function DialogClose({...props}){const{setOpenAlertDialogBeforeClose,isDirty}=useDialog();return _jsx(DialogPrimitive.Close,{"data-slot":"dialog-close",onClick:e=>{props?.onClick?.(e);if(isDirty){e.preventDefault();setOpenAlertDialogBeforeClose?.(true);return}},...props})}function DialogOverlay({className,...props}){return _jsx(DialogPrimitive.Overlay,{className:cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",className),"data-slot":"dialog-overlay",...props})}function DialogContent({className,children,showCloseButton=true,...props}){const{isDirty,setOpenAlertDialogBeforeClose}=useDialog();return _jsxs(DialogPortal,{"data-slot":"dialog-portal",children:[_jsx(DialogOverlay,{}),_jsxs(DialogPrimitive.Content,{className:cn("dark:bg-background bg-card data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg","max-h-[calc(100vh_-_2rem)] overflow-y-scroll sm:max-h-[calc(100vh_-_5rem)]",className),"data-slot":"dialog-content",onInteractOutside:e=>{const isToastItem=e.target?.closest("[data-sonner-toaster]");if(isToastItem||isDirty)e.preventDefault();if(props?.onInteractOutside){props.onInteractOutside(e)}},...props,children:[children,showCloseButton&&_jsxs(DialogPrimitive.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0","data-slot":"dialog-close",onClick:e=>{if(isDirty){e.preventDefault();setOpenAlertDialogBeforeClose?.(true);return}},children:[_jsx(XIcon,{}),_jsx("span",{className:"sr-only",children:"Close"})]})]})]})}function DialogHeader({className,...props}){return _jsx("div",{className:cn("flex flex-col gap-2 text-center sm:text-left",className),"data-slot":"dialog-header",...props})}function DialogFooter({className,...props}){return _jsx("div",{className:cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",className),"data-slot":"dialog-footer",...props})}function DialogTitle({className,...props}){return _jsx(DialogPrimitive.Title,{className:cn("text-lg leading-none font-semibold",className),"data-slot":"dialog-title",...props})}function DialogDescription({className,...props}){return _jsx(DialogPrimitive.Description,{className:cn("text-muted-foreground text-sm",className),"data-slot":"dialog-description",...props})}export{Dialog,DialogClose,DialogContent,DialogDescription,DialogFooter,DialogHeader,DialogOverlay,DialogPortal,DialogTitle,DialogTrigger,useDialog};
@@ -1,83 +1 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Drawer as DrawerPrimitive } from "vaul";
4
- import { cn } from "../../lib/utils.js";
5
- function Drawer({ ...props }) {
6
- return /*#__PURE__*/ _jsx(DrawerPrimitive.Root, {
7
- "data-slot": "drawer",
8
- ...props
9
- });
10
- }
11
- function DrawerTrigger({ ...props }) {
12
- return /*#__PURE__*/ _jsx(DrawerPrimitive.Trigger, {
13
- "data-slot": "drawer-trigger",
14
- ...props
15
- });
16
- }
17
- function DrawerPortal({ ...props }) {
18
- return /*#__PURE__*/ _jsx(DrawerPrimitive.Portal, {
19
- "data-slot": "drawer-portal",
20
- ...props
21
- });
22
- }
23
- function DrawerClose({ ...props }) {
24
- return /*#__PURE__*/ _jsx(DrawerPrimitive.Close, {
25
- "data-slot": "drawer-close",
26
- ...props
27
- });
28
- }
29
- function DrawerOverlay({ className, ...props }) {
30
- return /*#__PURE__*/ _jsx(DrawerPrimitive.Overlay, {
31
- className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className),
32
- "data-slot": "drawer-overlay",
33
- ...props
34
- });
35
- }
36
- function DrawerContent({ className, children, ...props }) {
37
- return /*#__PURE__*/ _jsxs(DrawerPortal, {
38
- "data-slot": "drawer-portal",
39
- children: [
40
- /*#__PURE__*/ _jsx(DrawerOverlay, {}),
41
- /*#__PURE__*/ _jsxs(DrawerPrimitive.Content, {
42
- className: cn("group/drawer-content bg-background fixed z-50 flex h-auto flex-col", "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b", "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t", "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm", "data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm", className),
43
- "data-slot": "drawer-content",
44
- ...props,
45
- children: [
46
- /*#__PURE__*/ _jsx("div", {
47
- className: "bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"
48
- }),
49
- children
50
- ]
51
- })
52
- ]
53
- });
54
- }
55
- function DrawerHeader({ className, ...props }) {
56
- return /*#__PURE__*/ _jsx("div", {
57
- className: cn("flex flex-col gap-1.5 p-4", className),
58
- "data-slot": "drawer-header",
59
- ...props
60
- });
61
- }
62
- function DrawerFooter({ className, ...props }) {
63
- return /*#__PURE__*/ _jsx("div", {
64
- className: cn("mt-auto flex flex-col gap-2 p-4", className),
65
- "data-slot": "drawer-footer",
66
- ...props
67
- });
68
- }
69
- function DrawerTitle({ className, ...props }) {
70
- return /*#__PURE__*/ _jsx(DrawerPrimitive.Title, {
71
- className: cn("text-foreground font-semibold", className),
72
- "data-slot": "drawer-title",
73
- ...props
74
- });
75
- }
76
- function DrawerDescription({ className, ...props }) {
77
- return /*#__PURE__*/ _jsx(DrawerPrimitive.Description, {
78
- className: cn("text-muted-foreground text-sm", className),
79
- "data-slot": "drawer-description",
80
- ...props
81
- });
82
- }
83
- export { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger };
1
+ "use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Drawer as DrawerPrimitive}from"vaul";import{cn}from"../../lib/utils.js";function Drawer({...props}){return _jsx(DrawerPrimitive.Root,{"data-slot":"drawer",...props})}function DrawerTrigger({...props}){return _jsx(DrawerPrimitive.Trigger,{"data-slot":"drawer-trigger",...props})}function DrawerPortal({...props}){return _jsx(DrawerPrimitive.Portal,{"data-slot":"drawer-portal",...props})}function DrawerClose({...props}){return _jsx(DrawerPrimitive.Close,{"data-slot":"drawer-close",...props})}function DrawerOverlay({className,...props}){return _jsx(DrawerPrimitive.Overlay,{className:cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",className),"data-slot":"drawer-overlay",...props})}function DrawerContent({className,children,...props}){return _jsxs(DrawerPortal,{"data-slot":"drawer-portal",children:[_jsx(DrawerOverlay,{}),_jsxs(DrawerPrimitive.Content,{className:cn("group/drawer-content bg-background fixed z-50 flex h-auto flex-col","data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b","data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t","data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm","data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm",className),"data-slot":"drawer-content",...props,children:[_jsx("div",{className:"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block"}),children]})]})}function DrawerHeader({className,...props}){return _jsx("div",{className:cn("flex flex-col gap-1.5 p-4",className),"data-slot":"drawer-header",...props})}function DrawerFooter({className,...props}){return _jsx("div",{className:cn("mt-auto flex flex-col gap-2 p-4",className),"data-slot":"drawer-footer",...props})}function DrawerTitle({className,...props}){return _jsx(DrawerPrimitive.Title,{className:cn("text-foreground font-semibold",className),"data-slot":"drawer-title",...props})}function DrawerDescription({className,...props}){return _jsx(DrawerPrimitive.Description,{className:cn("text-muted-foreground text-sm",className),"data-slot":"drawer-description",...props})}export{Drawer,DrawerClose,DrawerContent,DrawerDescription,DrawerFooter,DrawerHeader,DrawerOverlay,DrawerPortal,DrawerTitle,DrawerTrigger};
@@ -1,141 +1 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
4
- import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
5
- import { cn } from "../../lib/utils.js";
6
- function DropdownMenu({ ...props }) {
7
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Root, {
8
- "data-slot": "dropdown-menu",
9
- ...props
10
- });
11
- }
12
- function DropdownMenuPortal({ ...props }) {
13
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Portal, {
14
- "data-slot": "dropdown-menu-portal",
15
- ...props
16
- });
17
- }
18
- function DropdownMenuTrigger({ ...props }) {
19
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Trigger, {
20
- "data-slot": "dropdown-menu-trigger",
21
- ...props
22
- });
23
- }
24
- function DropdownMenuContent({ className, sideOffset = 4, ...props }) {
25
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Portal, {
26
- children: /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Content, {
27
- className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 max-h-(--radix-dropdown-menu-content-available-height) origin-(--radix-dropdown-menu-content-transform-origin) z-50 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border p-1 shadow-md", className),
28
- "data-slot": "dropdown-menu-content",
29
- sideOffset: sideOffset,
30
- ...props
31
- })
32
- });
33
- }
34
- function DropdownMenuGroup({ ...props }) {
35
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Group, {
36
- "data-slot": "dropdown-menu-group",
37
- ...props
38
- });
39
- }
40
- function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
41
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Item, {
42
- className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm data-[disabled]:pointer-events-none data-[inset]:pl-8 data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
43
- "data-inset": inset,
44
- "data-slot": "dropdown-menu-item",
45
- "data-variant": variant,
46
- ...props
47
- });
48
- }
49
- function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
50
- return /*#__PURE__*/ _jsxs(DropdownMenuPrimitive.CheckboxItem, {
51
- checked: checked,
52
- className: cn("focus:bg-accent focus:text-accent-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pl-8 pr-2 text-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
53
- "data-slot": "dropdown-menu-checkbox-item",
54
- ...props,
55
- children: [
56
- /*#__PURE__*/ _jsx("span", {
57
- className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
58
- children: /*#__PURE__*/ _jsx(DropdownMenuPrimitive.ItemIndicator, {
59
- children: /*#__PURE__*/ _jsx(CheckIcon, {
60
- className: "size-4"
61
- })
62
- })
63
- }),
64
- children
65
- ]
66
- });
67
- }
68
- function DropdownMenuRadioGroup({ ...props }) {
69
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.RadioGroup, {
70
- "data-slot": "dropdown-menu-radio-group",
71
- ...props
72
- });
73
- }
74
- function DropdownMenuRadioItem({ className, children, ...props }) {
75
- return /*#__PURE__*/ _jsxs(DropdownMenuPrimitive.RadioItem, {
76
- className: cn("focus:bg-accent focus:text-accent-foreground outline-hidden relative flex cursor-default select-none items-center gap-2 rounded-sm py-1.5 pl-8 pr-2 text-sm data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className),
77
- "data-slot": "dropdown-menu-radio-item",
78
- ...props,
79
- children: [
80
- /*#__PURE__*/ _jsx("span", {
81
- className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
82
- children: /*#__PURE__*/ _jsx(DropdownMenuPrimitive.ItemIndicator, {
83
- children: /*#__PURE__*/ _jsx(CircleIcon, {
84
- className: "size-2 fill-current"
85
- })
86
- })
87
- }),
88
- children
89
- ]
90
- });
91
- }
92
- function DropdownMenuLabel({ className, inset, ...props }) {
93
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Label, {
94
- className: cn("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className),
95
- "data-inset": inset,
96
- "data-slot": "dropdown-menu-label",
97
- ...props
98
- });
99
- }
100
- function DropdownMenuSeparator({ className, ...props }) {
101
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Separator, {
102
- className: cn("bg-border -mx-1 my-1 h-px", className),
103
- "data-slot": "dropdown-menu-separator",
104
- ...props
105
- });
106
- }
107
- function DropdownMenuShortcut({ className, ...props }) {
108
- return /*#__PURE__*/ _jsx("span", {
109
- className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
110
- "data-slot": "dropdown-menu-shortcut",
111
- ...props
112
- });
113
- }
114
- function DropdownMenuSub({ ...props }) {
115
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.Sub, {
116
- "data-slot": "dropdown-menu-sub",
117
- ...props
118
- });
119
- }
120
- function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
121
- return /*#__PURE__*/ _jsxs(DropdownMenuPrimitive.SubTrigger, {
122
- className: cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground outline-hidden flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm data-[inset]:pl-8", className),
123
- "data-inset": inset,
124
- "data-slot": "dropdown-menu-sub-trigger",
125
- ...props,
126
- children: [
127
- children,
128
- /*#__PURE__*/ _jsx(ChevronRightIcon, {
129
- className: "ml-auto size-4"
130
- })
131
- ]
132
- });
133
- }
134
- function DropdownMenuSubContent({ className, ...props }) {
135
- return /*#__PURE__*/ _jsx(DropdownMenuPrimitive.SubContent, {
136
- className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-(--radix-dropdown-menu-content-transform-origin) z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg", className),
137
- "data-slot": "dropdown-menu-sub-content",
138
- ...props
139
- });
140
- }
141
- export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger };
1
+ "use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{CheckIcon,ChevronRightIcon,CircleIcon}from"lucide-react";import{DropdownMenu as DropdownMenuPrimitive}from"radix-ui";import{cn}from"../../lib/utils.js";function DropdownMenu({...props}){return _jsx(DropdownMenuPrimitive.Root,{"data-slot":"dropdown-menu",...props})}function DropdownMenuPortal({...props}){return _jsx(DropdownMenuPrimitive.Portal,{"data-slot":"dropdown-menu-portal",...props})}function DropdownMenuTrigger({...props}){return _jsx(DropdownMenuPrimitive.Trigger,{"data-slot":"dropdown-menu-trigger",...props})}function DropdownMenuContent({className,sideOffset=4,...props}){return _jsx(DropdownMenuPrimitive.Portal,{children:_jsx(DropdownMenuPrimitive.Content,{className:cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",className),"data-slot":"dropdown-menu-content",sideOffset:sideOffset,...props})})}function DropdownMenuGroup({...props}){return _jsx(DropdownMenuPrimitive.Group,{"data-slot":"dropdown-menu-group",...props})}function DropdownMenuItem({className,inset,variant="default",...props}){return _jsx(DropdownMenuPrimitive.Item,{className:cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",className),"data-inset":inset,"data-slot":"dropdown-menu-item","data-variant":variant,...props})}function DropdownMenuCheckboxItem({className,children,checked,...props}){return _jsxs(DropdownMenuPrimitive.CheckboxItem,{checked:checked,className:cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",className),"data-slot":"dropdown-menu-checkbox-item",...props,children:[_jsx("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:_jsx(DropdownMenuPrimitive.ItemIndicator,{children:_jsx(CheckIcon,{className:"size-4"})})}),children]})}function DropdownMenuRadioGroup({...props}){return _jsx(DropdownMenuPrimitive.RadioGroup,{"data-slot":"dropdown-menu-radio-group",...props})}function DropdownMenuRadioItem({className,children,...props}){return _jsxs(DropdownMenuPrimitive.RadioItem,{className:cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",className),"data-slot":"dropdown-menu-radio-item",...props,children:[_jsx("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:_jsx(DropdownMenuPrimitive.ItemIndicator,{children:_jsx(CircleIcon,{className:"size-2 fill-current"})})}),children]})}function DropdownMenuLabel({className,inset,...props}){return _jsx(DropdownMenuPrimitive.Label,{className:cn("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",className),"data-inset":inset,"data-slot":"dropdown-menu-label",...props})}function DropdownMenuSeparator({className,...props}){return _jsx(DropdownMenuPrimitive.Separator,{className:cn("bg-border -mx-1 my-1 h-px",className),"data-slot":"dropdown-menu-separator",...props})}function DropdownMenuShortcut({className,...props}){return _jsx("span",{className:cn("text-muted-foreground ml-auto text-xs tracking-widest",className),"data-slot":"dropdown-menu-shortcut",...props})}function DropdownMenuSub({...props}){return _jsx(DropdownMenuPrimitive.Sub,{"data-slot":"dropdown-menu-sub",...props})}function DropdownMenuSubTrigger({className,inset,children,...props}){return _jsxs(DropdownMenuPrimitive.SubTrigger,{className:cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8",className),"data-inset":inset,"data-slot":"dropdown-menu-sub-trigger",...props,children:[children,_jsx(ChevronRightIcon,{className:"ml-auto size-4"})]})}function DropdownMenuSubContent({className,...props}){return _jsx(DropdownMenuPrimitive.SubContent,{className:cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",className),"data-slot":"dropdown-menu-sub-content",...props})}export{DropdownMenu,DropdownMenuCheckboxItem,DropdownMenuContent,DropdownMenuGroup,DropdownMenuItem,DropdownMenuLabel,DropdownMenuPortal,DropdownMenuRadioGroup,DropdownMenuRadioItem,DropdownMenuSeparator,DropdownMenuShortcut,DropdownMenuSub,DropdownMenuSubContent,DropdownMenuSubTrigger,DropdownMenuTrigger};
@@ -1,10 +1 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- export const EditorContent = ({ content })=>{
3
- return(// eslint-disable-next-line @eslint-react/dom/no-dangerously-set-innerhtml
4
- /*#__PURE__*/ _jsx("div", {
5
- className: "tiptap",
6
- dangerouslySetInnerHTML: {
7
- __html: content
8
- }
9
- }));
10
- };
1
+ import{jsx as _jsx}from"react/jsx-runtime";export const EditorContent=({content})=>{return _jsx("div",{className:"tiptap",dangerouslySetInnerHTML:{__html:content}})};
@@ -1,35 +1 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { EditorContent, useEditor } from "@tiptap/react";
4
- import { tiptapExtensions } from "../tiptap/extension.js";
5
- import { TipTapToolbar } from "../tiptap/toolbar/tiptap-toolbar.js";
6
- import { cn } from "../../lib/utils.js";
7
- import { Loader } from "./loader.js";
8
- export const Editor = ({ className, disableScroll, value = "" })=>{
9
- const editor = useEditor({
10
- extensions: tiptapExtensions,
11
- editorProps: {
12
- attributes: {
13
- class: "max-w-full focus:outline-none p-6"
14
- }
15
- },
16
- content: value,
17
- immediatelyRender: false
18
- });
19
- if (!editor) return /*#__PURE__*/ _jsx(Loader, {});
20
- return /*#__PURE__*/ _jsxs("div", {
21
- className: cn("bg-card shadow-xs relative w-full rounded-md border", {
22
- "max-h-[20rem] overflow-hidden overflow-y-scroll": !disableScroll,
23
- className
24
- }),
25
- children: [
26
- /*#__PURE__*/ _jsx(TipTapToolbar, {
27
- editor: editor
28
- }),
29
- /*#__PURE__*/ _jsx(EditorContent, {
30
- className: "w-full min-w-full cursor-text",
31
- editor: editor
32
- })
33
- ]
34
- });
35
- };
1
+ "use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{EditorContent,useEditor}from"@tiptap/react";import{tiptapExtensions}from"../tiptap/extension.js";import{TipTapToolbar}from"../tiptap/toolbar/tiptap-toolbar.js";import{cn}from"../../lib/utils.js";import{Loader}from"./loader.js";export const Editor=({className,disableScroll,value=""})=>{const editor=useEditor({extensions:tiptapExtensions,editorProps:{attributes:{class:"max-w-full focus:outline-none p-6"}},content:value,immediatelyRender:false});if(!editor)return _jsx(Loader,{});return _jsxs("div",{className:cn("bg-card relative w-full rounded-md border shadow-xs",{"max-h-[20rem] overflow-hidden overflow-y-scroll":!disableScroll,className}),children:[_jsx(TipTapToolbar,{editor:editor}),_jsx(EditorContent,{className:"w-full min-w-full cursor-text",editor:editor})]})};