@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.
- package/dist/scripts/get-config.js +15 -0
- package/dist/scripts/plugin.js +188 -0
- package/dist/scripts/prepare-database.js +177 -0
- package/dist/scripts/prepare-plugins-files.js +134 -0
- package/dist/scripts/run-interactive-shell-command.js +21 -0
- package/dist/scripts/scripts.js +39 -13
- package/dist/scripts/shared/file-utils.js +203 -0
- package/dist/src/api/adapters/sso/discord.js +1 -77
- package/dist/src/api/adapters/sso/facebook.js +1 -76
- package/dist/src/api/adapters/sso/google.js +1 -87
- package/dist/src/api/config.js +1 -67
- package/dist/src/api/lib/check-plugin-id.js +1 -43
- package/dist/src/api/lib/cron.js +1 -22
- package/dist/src/api/lib/logger-middleware.js +1 -35
- package/dist/src/api/lib/module.js +1 -22
- package/dist/src/api/lib/plugin.js +1 -22
- package/dist/src/api/lib/route.js +1 -27
- package/dist/src/api/lib/with-pagination.js +1 -83
- package/dist/src/api/middlewares/captcha.middleware.js +1 -63
- package/dist/src/api/middlewares/cron-auth.middleware.js +1 -19
- package/dist/src/api/middlewares/global.middleware.d.ts.map +1 -1
- package/dist/src/api/middlewares/global.middleware.js +1 -104
- package/dist/src/api/middlewares/rate-limiter.middleware.js +1 -32
- package/dist/src/api/models/device.js +1 -61
- package/dist/src/api/models/email.d.ts.map +1 -1
- package/dist/src/api/models/email.js +1 -77
- package/dist/src/api/models/password.js +1 -36
- package/dist/src/api/models/session-admin.d.ts.map +1 -1
- package/dist/src/api/models/session-admin.js +1 -97
- package/dist/src/api/models/session.d.ts.map +1 -1
- package/dist/src/api/models/session.js +1 -76
- package/dist/src/api/models/sso.js +1 -120
- package/dist/src/api/models/user/get-user-by-id.js +1 -19
- package/dist/src/api/models/user/sign-in-with-passwords.js +1 -22
- package/dist/src/api/models/user/sign-up.js +1 -73
- package/dist/src/api/models/user.js +1 -8
- package/dist/src/api/modules/admin/admin.module.js +1 -19
- package/dist/src/api/modules/admin/advanced/advanced.admin.module.js +1 -11
- package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.js +1 -12
- package/dist/src/api/modules/admin/advanced/cron/routes/get.route.js +1 -66
- package/dist/src/api/modules/admin/advanced/cron/routes/run.route.js +1 -95
- package/dist/src/api/modules/admin/debug/debug.admin.module.js +1 -10
- package/dist/src/api/modules/admin/debug/routes/logs.route.js +1 -94
- package/dist/src/api/modules/admin/routes/session.route.js +1 -47
- package/dist/src/api/modules/admin/users/routes/list.route.js +1 -79
- package/dist/src/api/modules/admin/users/routes/users.route.js +1 -84
- package/dist/src/api/modules/admin/users/users.admin.module.js +1 -10
- package/dist/src/api/modules/cron/cron/clean.cron.js +1 -24
- package/dist/src/api/modules/cron/cron.module.js +1 -14
- package/dist/src/api/modules/cron/helpers/process-cron-jobs.d.ts.map +1 -1
- package/dist/src/api/modules/cron/helpers/process-cron-jobs.js +1 -72
- package/dist/src/api/modules/cron/routes/cron.route.d.ts.map +1 -1
- package/dist/src/api/modules/cron/routes/cron.route.js +1 -95
- package/dist/src/api/modules/middleware/middleware.module.js +1 -10
- package/dist/src/api/modules/middleware/route.js +1 -49
- package/dist/src/api/modules/users/avatar-color.js +1 -43
- package/dist/src/api/modules/users/routes/change-password.route.js +1 -58
- package/dist/src/api/modules/users/routes/reset-passowrd.route.js +1 -91
- package/dist/src/api/modules/users/routes/session.route.js +1 -46
- package/dist/src/api/modules/users/routes/sign-in.route.js +1 -71
- package/dist/src/api/modules/users/routes/sign-out.route.js +1 -43
- package/dist/src/api/modules/users/routes/sign-up.route.js +1 -77
- package/dist/src/api/modules/users/routes/test.route.js +1 -33
- package/dist/src/api/modules/users/sso/routes/callback.route.js +1 -52
- package/dist/src/api/modules/users/sso/routes/create-url.route.js +1 -36
- package/dist/src/api/modules/users/sso/sso.module.js +1 -12
- package/dist/src/api/modules/users/users.module.js +1 -26
- package/dist/src/api/plugin.js +1 -15
- package/dist/src/app/login/page.js +1 -16
- package/dist/src/app/login/reset-password/page.js +1 -18
- package/dist/src/app/login/sso/[providerId]/page.js +1 -10
- package/dist/src/app/register/page.js +1 -16
- package/dist/src/app_admin/core/advanced/cron/page.js +1 -42
- package/dist/src/app_admin/core/debug/page.js +1 -45
- package/dist/src/app_admin/core/page.js +1 -5
- package/dist/src/app_admin/core/test/page.js +1 -5
- package/dist/src/app_admin/core/users/page.js +1 -38
- package/dist/src/components/avatar.js +1 -14
- package/dist/src/components/confirm-action/confirm-action-alert-dialog.js +1 -42
- package/dist/src/components/confirm-action/content.js +1 -31
- package/dist/src/components/date-format.js +1 -41
- package/dist/src/components/form/auto-form.js +1 -103
- package/dist/src/components/form/common/desc.js +1 -9
- package/dist/src/components/form/common/label.js +1 -18
- package/dist/src/components/form/fields/checkbox.js +1 -37
- package/dist/src/components/form/fields/combobox-async.js +1 -123
- package/dist/src/components/form/fields/combobox.js +1 -87
- package/dist/src/components/form/fields/input.js +1 -39
- package/dist/src/components/form/fields/radio-group.js +1 -50
- package/dist/src/components/form/fields/select.js +1 -58
- package/dist/src/components/form/fields/switch.js +1 -36
- package/dist/src/components/form/fields/textarea.js +1 -36
- package/dist/src/components/i18n-provider.js +1 -43
- package/dist/src/components/logo-vitnode.js +1 -119
- package/dist/src/components/switchers/langs/language-switcher.js +1 -47
- package/dist/src/components/switchers/themes/theme-switcher.js +1 -28
- package/dist/src/components/table/content.js +1 -81
- package/dist/src/components/table/data-table.js +1 -68
- package/dist/src/components/table/order-table-head.js +1 -50
- package/dist/src/components/table/pagination.js +1 -122
- package/dist/src/components/tiptap/extension.js +1 -33
- package/dist/src/components/tiptap/toolbar/actions/alignment-action.js +1 -91
- package/dist/src/components/tiptap/toolbar/actions/bold-action.js +1 -39
- package/dist/src/components/tiptap/toolbar/actions/headings-action.js +1 -93
- package/dist/src/components/tiptap/toolbar/actions/italic-action.js +1 -38
- package/dist/src/components/tiptap/toolbar/actions/list-action.js +1 -61
- package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.js +1 -59
- package/dist/src/components/tiptap/toolbar/actions/underline-action.js +1 -38
- package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.js +1 -63
- package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.js +1 -11
- package/dist/src/components/tiptap/toolbar/tiptap-toolbar.js +1 -55
- package/dist/src/components/tiptap/toolbar/use-toolbar-editor.js +1 -5
- package/dist/src/components/ui/accordion.js +1 -46
- package/dist/src/components/ui/alert-dialog.js +1 -123
- package/dist/src/components/ui/alert.js +1 -39
- package/dist/src/components/ui/badge.js +1 -28
- package/dist/src/components/ui/button-client.js +1 -57
- package/dist/src/components/ui/button.js +1 -32
- package/dist/src/components/ui/card.js +1 -52
- package/dist/src/components/ui/checkbox.js +1 -20
- package/dist/src/components/ui/collapsible.js +1 -22
- package/dist/src/components/ui/command.js +1 -98
- package/dist/src/components/ui/context-menu.js +1 -140
- package/dist/src/components/ui/dialog.js +1 -189
- package/dist/src/components/ui/drawer.js +1 -83
- package/dist/src/components/ui/dropdown-menu.js +1 -141
- package/dist/src/components/ui/editor-content.js +1 -10
- package/dist/src/components/ui/editor.js +1 -35
- package/dist/src/components/ui/form.js +1 -148
- package/dist/src/components/ui/header-content.js +1 -30
- package/dist/src/components/ui/hover-card.js +1 -29
- package/dist/src/components/ui/input-otp.js +1 -48
- package/dist/src/components/ui/input.js +1 -11
- package/dist/src/components/ui/label.js +1 -12
- package/dist/src/components/ui/loader.js +1 -16
- package/dist/src/components/ui/menubar.js +1 -151
- package/dist/src/components/ui/navigation-menu.js +1 -82
- package/dist/src/components/ui/popover.js +1 -35
- package/dist/src/components/ui/progress.js +1 -19
- package/dist/src/components/ui/radio-group.js +1 -27
- package/dist/src/components/ui/scroll-area.js +1 -33
- package/dist/src/components/ui/select.js +1 -113
- package/dist/src/components/ui/separator.js +1 -14
- package/dist/src/components/ui/sheet.js +1 -92
- package/dist/src/components/ui/sidebar.js +1 -433
- package/dist/src/components/ui/skeleton.js +1 -10
- package/dist/src/components/ui/slider.js +1 -50
- package/dist/src/components/ui/sonner.js +1 -26
- package/dist/src/components/ui/switch.js +1 -16
- package/dist/src/components/ui/table.js +1 -63
- package/dist/src/components/ui/tabs.js +1 -33
- package/dist/src/components/ui/textarea.js +1 -10
- package/dist/src/components/ui/toggle-group.js +1 -45
- package/dist/src/components/ui/toggle.js +1 -34
- package/dist/src/components/ui/tooltip.js +1 -57
- package/dist/src/config.js +1 -4
- package/dist/src/database/admins.js +1 -74
- package/dist/src/database/cron.js +1 -22
- package/dist/src/database/languages.js +1 -52
- package/dist/src/database/logs.js +1 -34
- package/dist/src/database/moderators.js +1 -37
- package/dist/src/database/roles.js +1 -13
- package/dist/src/database/sessions.js +1 -60
- package/dist/src/database/users.js +1 -145
- package/dist/src/drizzle.config.js +1 -67
- package/dist/src/emails/default-template.js +1 -99
- package/dist/src/emails/reset-password.js +1 -132
- package/dist/src/emails/ui/button.js +1 -36
- package/dist/src/emails/ui/card.js +1 -39
- package/dist/src/hooks/use-before-unload.js +1 -30
- package/dist/src/hooks/use-captcha.js +1 -122
- package/dist/src/hooks/use-mobile.js +1 -16
- package/dist/src/lib/api/get-middleware-api.js +1 -13
- package/dist/src/lib/api/get-next-cron-run-date.js +1 -14
- package/dist/src/lib/api/get-next-cron-run-date.test.js +1 -55
- package/dist/src/lib/api/get-session-admin-api.js +1 -19
- package/dist/src/lib/api/get-session-api.js +1 -14
- package/dist/src/lib/api/should-cron-job-run.js +1 -16
- package/dist/src/lib/api/should-cron-job-run.test.js +1 -213
- package/dist/src/lib/api/validate-cron-schedule.d.ts +2 -0
- package/dist/src/lib/api/validate-cron-schedule.d.ts.map +1 -0
- package/dist/src/lib/api/validate-cron-schedule.js +1 -0
- package/dist/src/lib/api/validate-cron-schedule.test.d.ts +2 -0
- package/dist/src/lib/api/validate-cron-schedule.test.d.ts.map +1 -0
- package/dist/src/lib/api/validate-cron-schedule.test.js +1 -0
- package/dist/src/lib/colors.js +1 -140
- package/dist/src/lib/colors.test.js +1 -173
- package/dist/src/lib/config.js +1 -14
- package/dist/src/lib/ctrl-or-command-character.js +1 -5
- package/dist/src/lib/fetcher/cookie-from-string-to-object.js +1 -12
- package/dist/src/lib/fetcher/cookie-from-string-to-object.test.js +1 -78
- package/dist/src/lib/fetcher/core.js +3 -48
- package/dist/src/lib/fetcher/helpers-server.js +1 -18
- package/dist/src/lib/fetcher/helpers.js +1 -16
- package/dist/src/lib/fetcher/helpers.test.js +1 -37
- package/dist/src/lib/fetcher/types.js +1 -1
- package/dist/src/lib/fetcher-client.js +1 -17
- package/dist/src/lib/fetcher.js +1 -33
- package/dist/src/lib/helpers/auto-form.js +1 -98
- package/dist/src/lib/helpers/auto-form.test.js +1 -336
- package/dist/src/lib/navigation.d.ts +15 -13
- package/dist/src/lib/navigation.d.ts.map +1 -1
- package/dist/src/lib/navigation.js +1 -11
- package/dist/src/lib/plugin.js +1 -3
- package/dist/src/lib/special-characters.js +1 -4
- package/dist/src/lib/special-characters.test.js +1 -56
- package/dist/src/lib/utils.js +1 -5
- package/dist/src/locales/en.json +308 -0
- package/dist/src/tests/setup.js +1 -6
- package/dist/src/views/admin/layouts/admin-layout.js +1 -73
- package/dist/src/views/admin/layouts/sidebar/nav/item.js +1 -98
- package/dist/src/views/admin/layouts/sidebar/nav/nav.js +1 -60
- package/dist/src/views/admin/layouts/sidebar/sidebar.js +1 -28
- package/dist/src/views/admin/layouts/sidebar/sign-out.js +1 -14
- package/dist/src/views/admin/layouts/user-bar/client.js +1 -69
- package/dist/src/views/admin/layouts/user-bar/user-bar.js +1 -32
- package/dist/src/views/admin/sign-in/sign-in-admin-view.js +1 -27
- package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.js +1 -97
- package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.js +1 -23
- package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.js +1 -38
- package/dist/src/views/admin/views/core/dashboard/dashboard-admin-view.js +1 -44
- package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.js +1 -35
- package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.js +1 -5
- package/dist/src/views/admin/views/core/debug/system-logs/actions/more/content.js +1 -281
- package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.js +1 -67
- package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-status.js +1 -14
- package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-type-log.js +1 -30
- package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.js +1 -96
- package/dist/src/views/admin/views/core/test.js +1 -161
- package/dist/src/views/admin/views/core/users/users-admin-view.js +1 -89
- package/dist/src/views/auth/password-reset/change-password-form/form.js +1 -48
- package/dist/src/views/auth/password-reset/change-password-form/mutation-api.js +1 -22
- package/dist/src/views/auth/password-reset/change-password-form/use-form.js +1 -36
- package/dist/src/views/auth/password-reset/form/form.js +1 -104
- package/dist/src/views/auth/password-reset/form/mutation-api.js +1 -21
- package/dist/src/views/auth/password-reset/form/use-form.js +1 -33
- package/dist/src/views/auth/password-reset/password-reset-view.js +1 -37
- package/dist/src/views/auth/sign-in/form/form.js +1 -64
- package/dist/src/views/auth/sign-in/form/mutation-api.js +1 -33
- package/dist/src/views/auth/sign-in/form/use-form.d.ts.map +1 -1
- package/dist/src/views/auth/sign-in/form/use-form.js +1 -38
- package/dist/src/views/auth/sign-in/sign-in-view.js +1 -61
- package/dist/src/views/auth/sign-up/components/password-input.js +1 -96
- package/dist/src/views/auth/sign-up/email-confirmation-view.js +1 -55
- package/dist/src/views/auth/sign-up/form/form.js +1 -89
- package/dist/src/views/auth/sign-up/form/mutation-api.js +1 -30
- package/dist/src/views/auth/sign-up/form/use-form.js +1 -70
- package/dist/src/views/auth/sign-up/sign-up-view.js +1 -65
- package/dist/src/views/auth/sign-up/wrapper.js +1 -22
- package/dist/src/views/auth/sso/buttons/client.js +1 -22
- package/dist/src/views/auth/sso/buttons/mutation-api.js +1 -24
- package/dist/src/views/auth/sso/buttons/sso-buttons.js +1 -56
- package/dist/src/views/auth/sso/callback/callback-sso-view.js +1 -32
- package/dist/src/views/auth/sso/callback/client/client.js +1 -68
- package/dist/src/views/auth/sso/callback/client/mutation-api.js +1 -32
- package/dist/src/views/error/back-button.js +1 -14
- package/dist/src/views/error/error-view.js +1 -58
- package/dist/src/views/error/global-error-view.js +1 -50
- package/dist/src/views/layouts/provider.js +1 -44
- package/dist/src/views/layouts/root-layout.js +1 -25
- package/dist/src/views/layouts/theme/header/header.js +1 -38
- package/dist/src/views/layouts/theme/header/user/auth/auth.js +1 -33
- package/dist/src/views/layouts/theme/header/user/auth/client.js +1 -47
- package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.js +1 -27
- package/dist/src/views/layouts/theme/header/user/user.js +1 -32
- package/dist/src/views/layouts/theme/layout.js +1 -16
- package/dist/src/vitnode.config.d.ts.map +1 -1
- package/dist/src/vitnode.config.js +1 -42
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsup.config.js +18 -0
- package/dist/vitest.config.d.ts.map +1 -1
- package/dist/vitest.config.js +49 -0
- package/eslint.config.mjs +2 -0
- package/package.json +40 -44
- package/dist/src/api/adapters/cron/node-cron.adapter.d.ts +0 -3
- package/dist/src/api/adapters/cron/node-cron.adapter.d.ts.map +0 -1
- package/dist/src/api/adapters/cron/node-cron.adapter.js +0 -11
- package/dist/src/api/adapters/email/nodemailer.d.ts +0 -10
- package/dist/src/api/adapters/email/nodemailer.d.ts.map +0 -1
- package/dist/src/api/adapters/email/nodemailer.js +0 -30
- package/dist/src/api/adapters/email/resend.d.ts +0 -6
- package/dist/src/api/adapters/email/resend.d.ts.map +0 -1
- 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
|
|
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})]})};
|