@vitnode/core 1.2.0-canary.60 → 1.2.0-canary.62

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 (274) 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.js +1 -93
  22. package/dist/src/api/middlewares/rate-limiter.middleware.js +1 -32
  23. package/dist/src/api/models/device.js +1 -61
  24. package/dist/src/api/models/email.js +1 -76
  25. package/dist/src/api/models/password.js +1 -36
  26. package/dist/src/api/models/session-admin.js +1 -106
  27. package/dist/src/api/models/session.js +1 -85
  28. package/dist/src/api/models/sso.js +1 -120
  29. package/dist/src/api/models/user/get-user-by-id.js +1 -19
  30. package/dist/src/api/models/user/sign-in-with-passwords.js +1 -22
  31. package/dist/src/api/models/user/sign-up.js +1 -73
  32. package/dist/src/api/models/user.js +1 -8
  33. package/dist/src/api/modules/admin/admin.module.js +1 -19
  34. package/dist/src/api/modules/admin/advanced/advanced.admin.module.js +1 -11
  35. package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.js +1 -12
  36. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.js +1 -66
  37. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.js +1 -95
  38. package/dist/src/api/modules/admin/debug/debug.admin.module.js +1 -10
  39. package/dist/src/api/modules/admin/debug/routes/logs.route.js +1 -94
  40. package/dist/src/api/modules/admin/routes/session.route.js +1 -47
  41. package/dist/src/api/modules/admin/users/routes/list.route.js +1 -79
  42. package/dist/src/api/modules/admin/users/routes/users.route.js +1 -84
  43. package/dist/src/api/modules/admin/users/users.admin.module.js +1 -10
  44. package/dist/src/api/modules/cron/cron/clean.cron.js +1 -24
  45. package/dist/src/api/modules/cron/cron.module.js +1 -14
  46. package/dist/src/api/modules/cron/helpers/process-cron-jobs.d.ts.map +1 -1
  47. package/dist/src/api/modules/cron/helpers/process-cron-jobs.js +1 -76
  48. package/dist/src/api/modules/cron/routes/cron.route.js +1 -101
  49. package/dist/src/api/modules/middleware/middleware.module.js +1 -10
  50. package/dist/src/api/modules/middleware/route.js +1 -49
  51. package/dist/src/api/modules/users/avatar-color.js +1 -43
  52. package/dist/src/api/modules/users/routes/change-password.route.js +1 -58
  53. package/dist/src/api/modules/users/routes/reset-passowrd.route.js +1 -91
  54. package/dist/src/api/modules/users/routes/session.route.js +1 -46
  55. package/dist/src/api/modules/users/routes/sign-in.route.js +1 -71
  56. package/dist/src/api/modules/users/routes/sign-out.route.js +1 -43
  57. package/dist/src/api/modules/users/routes/sign-up.route.js +1 -77
  58. package/dist/src/api/modules/users/routes/test.route.js +1 -33
  59. package/dist/src/api/modules/users/sso/routes/callback.route.js +1 -52
  60. package/dist/src/api/modules/users/sso/routes/create-url.route.js +1 -36
  61. package/dist/src/api/modules/users/sso/sso.module.js +1 -12
  62. package/dist/src/api/modules/users/users.module.js +1 -26
  63. package/dist/src/api/plugin.js +1 -15
  64. package/dist/src/app/login/page.js +1 -16
  65. package/dist/src/app/login/reset-password/page.js +1 -18
  66. package/dist/src/app/login/sso/[providerId]/page.js +1 -10
  67. package/dist/src/app/register/page.js +1 -16
  68. package/dist/src/app_admin/core/advanced/cron/page.js +1 -42
  69. package/dist/src/app_admin/core/debug/page.js +1 -45
  70. package/dist/src/app_admin/core/page.js +1 -5
  71. package/dist/src/app_admin/core/test/page.js +1 -5
  72. package/dist/src/app_admin/core/users/page.js +1 -38
  73. package/dist/src/components/avatar.js +1 -14
  74. package/dist/src/components/confirm-action/confirm-action-alert-dialog.js +1 -42
  75. package/dist/src/components/confirm-action/content.js +1 -31
  76. package/dist/src/components/date-format.js +1 -41
  77. package/dist/src/components/form/auto-form.js +1 -103
  78. package/dist/src/components/form/common/desc.js +1 -9
  79. package/dist/src/components/form/common/label.js +1 -18
  80. package/dist/src/components/form/fields/checkbox.js +1 -37
  81. package/dist/src/components/form/fields/combobox-async.js +1 -123
  82. package/dist/src/components/form/fields/combobox.js +1 -87
  83. package/dist/src/components/form/fields/input.js +1 -39
  84. package/dist/src/components/form/fields/radio-group.js +1 -50
  85. package/dist/src/components/form/fields/select.js +1 -58
  86. package/dist/src/components/form/fields/switch.js +1 -36
  87. package/dist/src/components/form/fields/textarea.js +1 -36
  88. package/dist/src/components/i18n-provider.js +1 -43
  89. package/dist/src/components/logo-vitnode.js +1 -119
  90. package/dist/src/components/switchers/langs/language-switcher.js +1 -47
  91. package/dist/src/components/switchers/themes/theme-switcher.js +1 -28
  92. package/dist/src/components/table/content.js +1 -81
  93. package/dist/src/components/table/data-table.js +1 -68
  94. package/dist/src/components/table/order-table-head.js +1 -50
  95. package/dist/src/components/table/pagination.js +1 -122
  96. package/dist/src/components/tiptap/extension.js +1 -33
  97. package/dist/src/components/tiptap/toolbar/actions/alignment-action.js +1 -91
  98. package/dist/src/components/tiptap/toolbar/actions/bold-action.js +1 -39
  99. package/dist/src/components/tiptap/toolbar/actions/headings-action.js +1 -93
  100. package/dist/src/components/tiptap/toolbar/actions/italic-action.js +1 -38
  101. package/dist/src/components/tiptap/toolbar/actions/list-action.js +1 -61
  102. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.js +1 -59
  103. package/dist/src/components/tiptap/toolbar/actions/underline-action.js +1 -38
  104. package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.js +1 -63
  105. package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.js +1 -11
  106. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.js +1 -55
  107. package/dist/src/components/tiptap/toolbar/use-toolbar-editor.js +1 -5
  108. package/dist/src/components/ui/accordion.js +1 -46
  109. package/dist/src/components/ui/alert-dialog.js +1 -123
  110. package/dist/src/components/ui/alert.js +1 -39
  111. package/dist/src/components/ui/badge.js +1 -28
  112. package/dist/src/components/ui/button-client.js +1 -57
  113. package/dist/src/components/ui/button.js +1 -32
  114. package/dist/src/components/ui/card.js +1 -52
  115. package/dist/src/components/ui/checkbox.js +1 -20
  116. package/dist/src/components/ui/collapsible.js +1 -22
  117. package/dist/src/components/ui/command.js +1 -98
  118. package/dist/src/components/ui/context-menu.js +1 -140
  119. package/dist/src/components/ui/dialog.js +1 -189
  120. package/dist/src/components/ui/drawer.js +1 -83
  121. package/dist/src/components/ui/dropdown-menu.js +1 -141
  122. package/dist/src/components/ui/editor-content.js +1 -10
  123. package/dist/src/components/ui/editor.js +1 -35
  124. package/dist/src/components/ui/form.js +1 -148
  125. package/dist/src/components/ui/header-content.js +1 -30
  126. package/dist/src/components/ui/hover-card.js +1 -29
  127. package/dist/src/components/ui/input-otp.js +1 -48
  128. package/dist/src/components/ui/input.js +1 -11
  129. package/dist/src/components/ui/label.js +1 -12
  130. package/dist/src/components/ui/loader.js +1 -16
  131. package/dist/src/components/ui/menubar.js +1 -151
  132. package/dist/src/components/ui/navigation-menu.js +1 -82
  133. package/dist/src/components/ui/popover.js +1 -35
  134. package/dist/src/components/ui/progress.js +1 -19
  135. package/dist/src/components/ui/radio-group.js +1 -27
  136. package/dist/src/components/ui/scroll-area.js +1 -33
  137. package/dist/src/components/ui/select.js +1 -113
  138. package/dist/src/components/ui/separator.js +1 -14
  139. package/dist/src/components/ui/sheet.js +1 -92
  140. package/dist/src/components/ui/sidebar.js +1 -433
  141. package/dist/src/components/ui/skeleton.js +1 -10
  142. package/dist/src/components/ui/slider.js +1 -50
  143. package/dist/src/components/ui/sonner.js +1 -26
  144. package/dist/src/components/ui/switch.js +1 -16
  145. package/dist/src/components/ui/table.js +1 -63
  146. package/dist/src/components/ui/tabs.js +1 -33
  147. package/dist/src/components/ui/textarea.js +1 -10
  148. package/dist/src/components/ui/toggle-group.js +1 -45
  149. package/dist/src/components/ui/toggle.js +1 -34
  150. package/dist/src/components/ui/tooltip.js +1 -57
  151. package/dist/src/config.js +1 -4
  152. package/dist/src/database/admins.js +1 -74
  153. package/dist/src/database/cron.js +1 -22
  154. package/dist/src/database/languages.js +1 -52
  155. package/dist/src/database/logs.js +1 -34
  156. package/dist/src/database/moderators.js +1 -37
  157. package/dist/src/database/roles.js +1 -13
  158. package/dist/src/database/sessions.js +1 -60
  159. package/dist/src/database/users.js +1 -145
  160. package/dist/src/drizzle.config.js +1 -67
  161. package/dist/src/emails/default-template.js +1 -99
  162. package/dist/src/emails/reset-password.js +1 -132
  163. package/dist/src/emails/ui/button.js +1 -36
  164. package/dist/src/emails/ui/card.js +1 -39
  165. package/dist/src/hooks/use-before-unload.js +1 -30
  166. package/dist/src/hooks/use-captcha.js +1 -122
  167. package/dist/src/hooks/use-mobile.js +1 -16
  168. package/dist/src/lib/api/get-middleware-api.js +1 -13
  169. package/dist/src/lib/api/get-next-cron-run-date.js +1 -14
  170. package/dist/src/lib/api/get-next-cron-run-date.test.js +1 -55
  171. package/dist/src/lib/api/get-session-admin-api.js +1 -19
  172. package/dist/src/lib/api/get-session-api.js +1 -14
  173. package/dist/src/lib/api/should-cron-job-run.js +1 -16
  174. package/dist/src/lib/api/should-cron-job-run.test.js +1 -213
  175. package/dist/src/lib/api/validate-cron-schedule.d.ts +2 -0
  176. package/dist/src/lib/api/validate-cron-schedule.d.ts.map +1 -0
  177. package/dist/src/lib/api/validate-cron-schedule.js +1 -0
  178. package/dist/src/lib/api/validate-cron-schedule.test.d.ts +2 -0
  179. package/dist/src/lib/api/validate-cron-schedule.test.d.ts.map +1 -0
  180. package/dist/src/lib/api/validate-cron-schedule.test.js +1 -0
  181. package/dist/src/lib/colors.js +1 -140
  182. package/dist/src/lib/colors.test.js +1 -173
  183. package/dist/src/lib/config.js +1 -14
  184. package/dist/src/lib/ctrl-or-command-character.js +1 -5
  185. package/dist/src/lib/fetcher/cookie-from-string-to-object.js +1 -12
  186. package/dist/src/lib/fetcher/cookie-from-string-to-object.test.js +1 -78
  187. package/dist/src/lib/fetcher/core.js +3 -48
  188. package/dist/src/lib/fetcher/helpers-server.js +1 -18
  189. package/dist/src/lib/fetcher/helpers.js +1 -16
  190. package/dist/src/lib/fetcher/helpers.test.js +1 -37
  191. package/dist/src/lib/fetcher/types.js +1 -1
  192. package/dist/src/lib/fetcher-client.js +1 -17
  193. package/dist/src/lib/fetcher.js +1 -33
  194. package/dist/src/lib/helpers/auto-form.js +1 -98
  195. package/dist/src/lib/helpers/auto-form.test.js +1 -336
  196. package/dist/src/lib/navigation.js +1 -11
  197. package/dist/src/lib/plugin.js +1 -3
  198. package/dist/src/lib/special-characters.js +1 -4
  199. package/dist/src/lib/special-characters.test.js +1 -56
  200. package/dist/src/lib/utils.js +1 -5
  201. package/dist/src/locales/en.json +308 -0
  202. package/dist/src/tests/setup.js +1 -6
  203. package/dist/src/views/admin/layouts/admin-layout.js +1 -73
  204. package/dist/src/views/admin/layouts/sidebar/nav/item.js +1 -98
  205. package/dist/src/views/admin/layouts/sidebar/nav/nav.js +1 -60
  206. package/dist/src/views/admin/layouts/sidebar/sidebar.js +1 -28
  207. package/dist/src/views/admin/layouts/sidebar/sign-out.js +1 -14
  208. package/dist/src/views/admin/layouts/user-bar/client.js +1 -69
  209. package/dist/src/views/admin/layouts/user-bar/user-bar.js +1 -32
  210. package/dist/src/views/admin/sign-in/sign-in-admin-view.js +1 -27
  211. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.js +1 -97
  212. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.js +1 -23
  213. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.js +1 -38
  214. package/dist/src/views/admin/views/core/dashboard/dashboard-admin-view.js +1 -44
  215. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.js +1 -35
  216. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.js +1 -5
  217. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/content.js +1 -281
  218. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.js +1 -67
  219. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-status.js +1 -14
  220. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-type-log.js +1 -30
  221. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.js +1 -96
  222. package/dist/src/views/admin/views/core/test.js +1 -161
  223. package/dist/src/views/admin/views/core/users/users-admin-view.js +1 -89
  224. package/dist/src/views/auth/password-reset/change-password-form/form.js +1 -48
  225. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.js +1 -22
  226. package/dist/src/views/auth/password-reset/change-password-form/use-form.js +1 -36
  227. package/dist/src/views/auth/password-reset/form/form.js +1 -104
  228. package/dist/src/views/auth/password-reset/form/mutation-api.js +1 -21
  229. package/dist/src/views/auth/password-reset/form/use-form.js +1 -33
  230. package/dist/src/views/auth/password-reset/password-reset-view.js +1 -37
  231. package/dist/src/views/auth/sign-in/form/form.js +1 -64
  232. package/dist/src/views/auth/sign-in/form/mutation-api.js +1 -33
  233. package/dist/src/views/auth/sign-in/form/use-form.js +1 -38
  234. package/dist/src/views/auth/sign-in/sign-in-view.js +1 -61
  235. package/dist/src/views/auth/sign-up/components/password-input.js +1 -96
  236. package/dist/src/views/auth/sign-up/email-confirmation-view.js +1 -55
  237. package/dist/src/views/auth/sign-up/form/form.js +1 -89
  238. package/dist/src/views/auth/sign-up/form/mutation-api.js +1 -30
  239. package/dist/src/views/auth/sign-up/form/use-form.js +1 -70
  240. package/dist/src/views/auth/sign-up/sign-up-view.js +1 -65
  241. package/dist/src/views/auth/sign-up/wrapper.js +1 -22
  242. package/dist/src/views/auth/sso/buttons/client.js +1 -22
  243. package/dist/src/views/auth/sso/buttons/mutation-api.js +1 -24
  244. package/dist/src/views/auth/sso/buttons/sso-buttons.js +1 -56
  245. package/dist/src/views/auth/sso/callback/callback-sso-view.js +1 -32
  246. package/dist/src/views/auth/sso/callback/client/client.js +1 -68
  247. package/dist/src/views/auth/sso/callback/client/mutation-api.js +1 -32
  248. package/dist/src/views/error/back-button.js +1 -14
  249. package/dist/src/views/error/error-view.js +1 -58
  250. package/dist/src/views/error/global-error-view.js +1 -50
  251. package/dist/src/views/layouts/provider.js +1 -44
  252. package/dist/src/views/layouts/root-layout.js +1 -25
  253. package/dist/src/views/layouts/theme/header/header.js +1 -38
  254. package/dist/src/views/layouts/theme/header/user/auth/auth.js +1 -33
  255. package/dist/src/views/layouts/theme/header/user/auth/client.js +1 -47
  256. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.js +1 -27
  257. package/dist/src/views/layouts/theme/header/user/user.js +1 -32
  258. package/dist/src/views/layouts/theme/layout.js +1 -16
  259. package/dist/src/vitnode.config.js +1 -42
  260. package/dist/tsconfig.tsbuildinfo +1 -1
  261. package/dist/tsup.config.js +18 -0
  262. package/dist/vitest.config.d.ts.map +1 -1
  263. package/dist/vitest.config.js +49 -0
  264. package/eslint.config.mjs +2 -0
  265. package/package.json +6 -10
  266. package/dist/src/api/adapters/cron/node-cron.adapter.d.ts +0 -3
  267. package/dist/src/api/adapters/cron/node-cron.adapter.d.ts.map +0 -1
  268. package/dist/src/api/adapters/cron/node-cron.adapter.js +0 -11
  269. package/dist/src/api/adapters/email/nodemailer.d.ts +0 -10
  270. package/dist/src/api/adapters/email/nodemailer.d.ts.map +0 -1
  271. package/dist/src/api/adapters/email/nodemailer.js +0 -30
  272. package/dist/src/api/adapters/email/resend.d.ts +0 -6
  273. package/dist/src/api/adapters/email/resend.d.ts.map +0 -1
  274. 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 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),
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 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) 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 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),
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 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),
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 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),
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 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),
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 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),
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 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",
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 leading-none font-semibold", 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 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),
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 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),
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 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),
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 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),
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 flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none 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 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) 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 relative w-full rounded-md border shadow-xs", {
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})]})};