diff --git a/packages/@core/locales/src/langs/en-US.json b/packages/@core/locales/src/langs/en-US.json index 3368b0d80..43861ae06 100644 --- a/packages/@core/locales/src/langs/en-US.json +++ b/packages/@core/locales/src/langs/en-US.json @@ -113,6 +113,8 @@ "title": "Preferences", "subtitle": "Customize Preferences & Preview in Real Time", "reset-tip": "The data has changed, click to reset", + "reset-title": "Preferences reset", + "reset-success": "Preferences reset successfully", "appearance": "Appearance", "layout": "Layout", "content": "Content", @@ -140,7 +142,6 @@ "copy": "Copy Preferences", "copy-success": "Copy successful. Please replace in `src/preferences.ts` of the app", "clear-and-logout": "Clear Cache & Logout", - "reset-success": "Preferences reset successfully", "mode": "Mode", "logo-visible": "Display Logo", "general": "General", diff --git a/packages/@core/locales/src/langs/zh-CN.json b/packages/@core/locales/src/langs/zh-CN.json index 5add2961c..b4a8bac26 100644 --- a/packages/@core/locales/src/langs/zh-CN.json +++ b/packages/@core/locales/src/langs/zh-CN.json @@ -113,7 +113,9 @@ "preferences": { "title": "偏好设置", "subtitle": "自定义偏好设置 & 实时预览", + "reset-title": "重置偏好设置", "reset-tip": "数据有变化,点击可进行重置", + "reset-success": "重置偏好设置成功", "appearance": "外观", "layout": "布局", "content": "内容", @@ -137,9 +139,8 @@ "plain": "朴素", "rounded": "圆润", "copy": "复制偏好设置", - "copy-success": "拷贝成功,请在 app 下的 `src/preferences.ts`内进行覆盖", + "copy-success": "复制成功,请在 app 下的 `src/preferences.ts`内进行覆盖", "clear-and-logout": "清空缓存 & 退出登录", - "reset-success": "重置偏好设置成功", "mode": "模式", "logo-visible": "显示 Logo", "general": "通用", diff --git a/packages/@core/shared/iconify/src/create-icon.ts b/packages/@core/shared/iconify/src/create-icon.ts index 05d4c986c..49a7c805e 100644 --- a/packages/@core/shared/iconify/src/create-icon.ts +++ b/packages/@core/shared/iconify/src/create-icon.ts @@ -2,8 +2,8 @@ import { h } from 'vue'; import { Icon } from '@iconify/vue'; -function createIcon(icon: string) { +function createIconifyIcon(icon: string) { return h(Icon, { icon }); } -export { createIcon }; +export { createIconifyIcon }; diff --git a/packages/@core/shared/iconify/src/material.ts b/packages/@core/shared/iconify/src/material.ts index db5a0e0eb..d85ea7c49 100644 --- a/packages/@core/shared/iconify/src/material.ts +++ b/packages/@core/shared/iconify/src/material.ts @@ -1,77 +1,84 @@ -import { createIcon } from './create-icon'; +import { createIconifyIcon } from './create-icon'; -export const IconDefault = createIcon('ic:round-auto-awesome'); +export const IconDefault = createIconifyIcon('ic:round-auto-awesome'); -export const IcRoundKeyboardArrowDown = createIcon( +export const IcRoundKeyboardArrowDown = createIconifyIcon( 'ic:round-keyboard-arrow-down', ); -export const IcRoundChevronRight = createIcon('ic:round-chevron-right'); +export const IcRoundChevronRight = createIconifyIcon('ic:round-chevron-right'); -export const IcRoundKeyboard = createIcon('ic:round-keyboard'); -// export const IcRoundMenuOpen = createIcon('ic:round-menu-open'); +export const IcRoundMenu = createIconifyIcon('ic:round-menu'); -export const IcRoundMenu = createIcon('ic:round-menu'); +export const IcRoundMoreHoriz = createIconifyIcon('ic:round-more-horiz'); -export const IcRoundMoreHoriz = createIcon('ic:round-more-horiz'); +export const IcRoundFitScreen = createIconifyIcon('ic:round-fit-screen'); -export const IcRoundFitScreen = createIcon('ic:round-fit-screen'); +export const IcTwotoneFitScreen = createIconifyIcon('ic:twotone-fit-screen'); -export const IcTwotoneFitScreen = createIcon('ic:twotone-fit-screen'); +export const IcRoundColorLens = createIconifyIcon('ic:round-color-lens'); -export const IcRoundColorLens = createIcon('ic:round-color-lens'); +export const IcRoundMoreVert = createIconifyIcon('ic:round-more-vert'); -export const IcRoundMoreVert = createIcon('ic:round-more-vert'); +export const IcRoundFullscreen = createIconifyIcon('ic:round-fullscreen'); -export const IcRoundFullscreen = createIcon('ic:round-fullscreen'); +export const IcRoundFullscreenExit = createIconifyIcon( + 'ic:round-fullscreen-exit', +); -export const IcRoundFullscreenExit = createIcon('ic:round-fullscreen-exit'); +export const IcRoundClose = createIconifyIcon('ic:round-close'); -export const IcRoundAutoAwesome = createIcon('ic:round-auto-awesome'); +export const IcRoundRestartAlt = createIconifyIcon('ic:round-restart-alt'); -export const IcRoundClose = createIcon('ic:round-close'); +export const IcRoundLogout = createIconifyIcon('ic:round-logout'); -export const IcRoundRestartAlt = createIcon('ic:round-restart-alt'); +export const IcOutlineVisibility = createIconifyIcon('ic:outline-visibility'); -export const IcRoundLogout = createIcon('ic:round-logout'); +export const IcOutlineVisibilityOff = createIconifyIcon( + 'ic:outline-visibility-off', +); -export const IcOutlineVisibility = createIcon('ic:outline-visibility'); +export const IcRoundSearch = createIconifyIcon('ic:round-search'); -export const IcOutlineVisibilityOff = createIcon('ic:outline-visibility-off'); +export const IcRoundFolderCopy = createIconifyIcon('ic:round-folder-copy'); -export const IcRoundSearch = createIcon('ic:round-search'); - -export const IcRoundFolderCopy = createIcon('ic:round-folder-copy'); - -export const IcRoundSubdirectoryArrowLeft = createIcon( +export const IcRoundSubdirectoryArrowLeft = createIconifyIcon( 'ic:round-subdirectory-arrow-left', ); -export const IcRoundArrowUpward = createIcon('ic:round-arrow-upward'); +export const IcRoundArrowUpward = createIconifyIcon('ic:round-arrow-upward'); -export const IcRoundArrowDownward = createIcon('ic:round-arrow-downward'); +export const IcRoundArrowDownward = createIconifyIcon( + 'ic:round-arrow-downward', +); -export const IcBaselineLanguage = createIcon('ic:baseline-language'); +export const IcBaselineLanguage = createIconifyIcon('ic:baseline-language'); -export const IcRoundSearchOff = createIcon('ic:round-search-off'); +export const IcRoundSearchOff = createIconifyIcon('ic:round-search-off'); -export const IcRoundNotificationsNone = createIcon( +export const IcRoundNotificationsNone = createIconifyIcon( 'ic:round-notifications-none', ); -export const IcRoundMarkEmailRead = createIcon('ic:round-mark-email-read'); +export const IcRoundMarkEmailRead = createIconifyIcon( + 'ic:round-mark-email-read', +); -export const IcRoundWbSunny = createIcon('ic:round-wb-sunny'); +export const IcRoundWbSunny = createIconifyIcon('ic:round-wb-sunny'); -export const IcRoundMotionPhotosAuto = createIcon( +export const IcRoundMotionPhotosAuto = createIconifyIcon( 'ic:round-motion-photos-auto', ); -export const IcRoundSettingsSuggest = createIcon('ic:round-settings-suggest'); +export const IcRoundSettingsSuggest = createIconifyIcon( + 'ic:round-settings-suggest', +); -export const IcRoundArrowBackIosNew = createIcon('ic:round-arrow-back-ios-new'); +export const IcRoundArrowBackIosNew = createIconifyIcon( + 'ic:round-arrow-back-ios-new', +); -export const IcRoundMultipleStop = createIcon('ic:round-multiple-stop'); +export const IcRoundMultipleStop = createIconifyIcon('ic:round-multiple-stop'); -export const IcRoundRefresh = createIcon('ic:round-refresh'); +export const IcRoundRefresh = createIconifyIcon('ic:round-refresh'); -export const IcRoundCreditScore = createIcon('ic:round-credit-score'); +export const IcRoundCreditScore = createIconifyIcon('ic:round-credit-score'); diff --git a/packages/@core/shared/iconify/src/mdi.ts b/packages/@core/shared/iconify/src/mdi.ts index 1bcda36d4..1d3e2928c 100644 --- a/packages/@core/shared/iconify/src/mdi.ts +++ b/packages/@core/shared/iconify/src/mdi.ts @@ -1,49 +1,49 @@ -import { createIcon } from './create-icon'; +import { createIconifyIcon } from './create-icon'; -export const MdiKeyboardEsc = createIcon('mdi:keyboard-esc'); +export const MdiKeyboardEsc = createIconifyIcon('mdi:keyboard-esc'); -export const MdiLoading = createIcon('mdi:loading'); +export const MdiLoading = createIconifyIcon('mdi:loading'); -export const MdiWechat = createIcon('mdi:wechat'); +export const MdiWechat = createIconifyIcon('mdi:wechat'); -export const MdiGithub = createIcon('mdi:github'); +export const MdiGithub = createIconifyIcon('mdi:github'); -export const MdiGoogle = createIcon('mdi:google'); +export const MdiGoogle = createIconifyIcon('mdi:google'); -export const MdiQqchat = createIcon('mdi:qqchat'); +export const MdiQqchat = createIconifyIcon('mdi:qqchat'); -export const MdiPin = createIcon('mdi:pin'); +export const MdiPin = createIconifyIcon('mdi:pin'); -export const MdiPinOff = createIcon('mdi:pin-off'); +export const MdiPinOff = createIconifyIcon('mdi:pin-off'); -export const MdiFormatHorizontalAlignLeft = createIcon( +export const MdiFormatHorizontalAlignLeft = createIconifyIcon( 'mdi:format-horizontal-align-left', ); -export const MdiFormatHorizontalAlignRight = createIcon( +export const MdiFormatHorizontalAlignRight = createIconifyIcon( 'mdi:format-horizontal-align-right', ); -export const MdiArrowExpandHorizontal = createIcon( +export const MdiArrowExpandHorizontal = createIconifyIcon( 'mdi:arrow-expand-horizontal', ); -export const MdiMenuClose = createIcon('mdi:menu-close'); +export const MdiMenuClose = createIconifyIcon('mdi:menu-close'); -export const MdiMenuOpen = createIcon('mdi:menu-open'); +export const MdiMenuOpen = createIconifyIcon('mdi:menu-open'); -export const MdiDockLeft = createIcon('mdi:dock-left'); +export const MdiDockLeft = createIconifyIcon('mdi:dock-left'); -export const MdiDockRight = createIcon('mdi:dock-right'); +export const MdiDockRight = createIconifyIcon('mdi:dock-right'); -export const MdiDockBottom = createIcon('mdi:dock-bottom'); +export const MdiDockBottom = createIconifyIcon('mdi:dock-bottom'); -export const MdiDriveDocument = createIcon('mdi:drive-document'); +export const MdiDriveDocument = createIconifyIcon('mdi:drive-document'); -export const MdiMoonAndStars = createIcon('mdi:moon-and-stars'); +export const MdiMoonAndStars = createIconifyIcon('mdi:moon-and-stars'); -export const MdiEditBoxOutline = createIcon('mdi:edit-box-outline'); +export const MdiEditBoxOutline = createIconifyIcon('mdi:edit-box-outline'); -export const MdiQuestionMarkCircleOutline = createIcon( +export const MdiQuestionMarkCircleOutline = createIconifyIcon( 'mdi:question-mark-circle-outline', ); diff --git a/packages/@core/ui-kit/shadcn-ui/package.json b/packages/@core/ui-kit/shadcn-ui/package.json index 1fa1d80fc..10728fd3b 100644 --- a/packages/@core/ui-kit/shadcn-ui/package.json +++ b/packages/@core/ui-kit/shadcn-ui/package.json @@ -51,7 +51,6 @@ "class-variance-authority": "^0.7.0", "lucide-vue-next": "^0.400.0", "radix-vue": "^1.9.0", - "vue": "^3.4.31", - "vue-sonner": "^1.1.3" + "vue": "^3.4.31" } } diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/index.ts b/packages/@core/ui-kit/shadcn-ui/src/components/index.ts index 5734d2458..020efc986 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/components/index.ts +++ b/packages/@core/ui-kit/shadcn-ui/src/components/index.ts @@ -41,9 +41,9 @@ export * from './ui/popover'; export * from './ui/scroll-area'; export * from './ui/select'; export * from './ui/sheet'; -export * from './ui/sonner'; export * from './ui/switch'; export * from './ui/tabs'; +export * from './ui/toast'; export * from './ui/toggle'; export * from './ui/toggle-group'; export * from './ui/tooltip'; diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/sonner/Sonner.vue b/packages/@core/ui-kit/shadcn-ui/src/components/ui/sonner/Sonner.vue deleted file mode 100644 index 7029fab9f..000000000 --- a/packages/@core/ui-kit/shadcn-ui/src/components/ui/sonner/Sonner.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - - - diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/sonner/index.ts b/packages/@core/ui-kit/shadcn-ui/src/components/ui/sonner/index.ts deleted file mode 100644 index 12db9f27e..000000000 --- a/packages/@core/ui-kit/shadcn-ui/src/components/ui/sonner/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as Toaster } from './Sonner.vue'; -export { toast } from 'vue-sonner'; diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/Toast.vue b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/Toast.vue new file mode 100644 index 000000000..9990f44f0 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/Toast.vue @@ -0,0 +1,35 @@ + + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastAction.vue b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastAction.vue new file mode 100644 index 000000000..6950a3d00 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastAction.vue @@ -0,0 +1,31 @@ + + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastClose.vue b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastClose.vue new file mode 100644 index 000000000..4058fdf65 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastClose.vue @@ -0,0 +1,34 @@ + + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastDescription.vue b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastDescription.vue new file mode 100644 index 000000000..1eedfe5dd --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastDescription.vue @@ -0,0 +1,26 @@ + + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastProvider.vue b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastProvider.vue new file mode 100644 index 000000000..9e2194fc9 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastProvider.vue @@ -0,0 +1,11 @@ + + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastTitle.vue b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastTitle.vue new file mode 100644 index 000000000..0deb80e4a --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastTitle.vue @@ -0,0 +1,26 @@ + + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastViewport.vue b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastViewport.vue new file mode 100644 index 000000000..269410ea7 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/ToastViewport.vue @@ -0,0 +1,29 @@ + + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/Toaster.vue b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/Toaster.vue new file mode 100644 index 000000000..bd8b647f7 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/Toaster.vue @@ -0,0 +1,38 @@ + + + diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/index.ts b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/index.ts new file mode 100644 index 000000000..3d660980e --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/index.ts @@ -0,0 +1,39 @@ +import type { ToastRootProps } from 'radix-vue'; + +import type { HTMLAttributes } from 'vue'; + +import { type VariantProps, cva } from 'class-variance-authority'; + +export { default as Toast } from './Toast.vue'; +export { default as ToastAction } from './ToastAction.vue'; +export { default as ToastClose } from './ToastClose.vue'; +export { default as ToastDescription } from './ToastDescription.vue'; +export { default as ToastProvider } from './ToastProvider.vue'; +export { default as ToastTitle } from './ToastTitle.vue'; +export { default as ToastViewport } from './ToastViewport.vue'; +export { default as Toaster } from './Toaster.vue'; +export { toast, useToast } from './use-toast'; + +export const toastVariants = cva( + 'group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full', + { + defaultVariants: { + variant: 'default', + }, + variants: { + variant: { + default: 'border bg-background border-border text-foreground', + destructive: + 'destructive group border-destructive bg-destructive text-destructive-foreground', + }, + }, + }, +); + +type ToastVariants = VariantProps; + +export interface ToastProps extends ToastRootProps { + class?: HTMLAttributes['class']; + onOpenChange?: ((value: boolean) => void) | undefined; + variant?: ToastVariants['variant']; +} diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/use-toast.ts b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/use-toast.ts new file mode 100644 index 000000000..d4c24c835 --- /dev/null +++ b/packages/@core/ui-kit/shadcn-ui/src/components/ui/toast/use-toast.ts @@ -0,0 +1,168 @@ +import type { ToastProps } from '.'; + +import { computed, ref } from 'vue'; +import type { Component, VNode } from 'vue'; + +const TOAST_LIMIT = 1; +const TOAST_REMOVE_DELAY = 1_000_000; + +export type StringOrVNode = (() => VNode) | VNode | string; + +type ToasterToast = { + action?: Component; + description?: StringOrVNode; + id: string; + title?: string; +} & ToastProps; + +const actionTypes = { + ADD_TOAST: 'ADD_TOAST', + DISMISS_TOAST: 'DISMISS_TOAST', + REMOVE_TOAST: 'REMOVE_TOAST', + UPDATE_TOAST: 'UPDATE_TOAST', +} as const; + +let count = 0; + +function genId() { + count = (count + 1) % Number.MAX_VALUE; + return count.toString(); +} + +type ActionType = typeof actionTypes; + +type Action = + | { + toast: Partial; + type: ActionType['UPDATE_TOAST']; + } + | { + toast: ToasterToast; + type: ActionType['ADD_TOAST']; + } + | { + toastId?: ToasterToast['id']; + type: ActionType['DISMISS_TOAST']; + } + | { + toastId?: ToasterToast['id']; + type: ActionType['REMOVE_TOAST']; + }; + +interface State { + toasts: ToasterToast[]; +} + +const toastTimeouts = new Map>(); + +function addToRemoveQueue(toastId: string) { + if (toastTimeouts.has(toastId)) return; + + const timeout = setTimeout(() => { + toastTimeouts.delete(toastId); + dispatch({ + toastId, + type: actionTypes.REMOVE_TOAST, + }); + }, TOAST_REMOVE_DELAY); + + toastTimeouts.set(toastId, timeout); +} + +const state = ref({ + toasts: [], +}); + +function dispatch(action: Action) { + switch (action.type) { + case actionTypes.ADD_TOAST: { + state.value.toasts = [action.toast, ...state.value.toasts].slice( + 0, + TOAST_LIMIT, + ); + break; + } + + case actionTypes.UPDATE_TOAST: { + state.value.toasts = state.value.toasts.map((t) => + t.id === action.toast.id ? { ...t, ...action.toast } : t, + ); + break; + } + + case actionTypes.DISMISS_TOAST: { + const { toastId } = action; + + if (toastId) { + addToRemoveQueue(toastId); + } else { + state.value.toasts.forEach((toast) => { + addToRemoveQueue(toast.id); + }); + } + + state.value.toasts = state.value.toasts.map((t) => + t.id === toastId || toastId === undefined + ? { + ...t, + open: false, + } + : t, + ); + break; + } + + case actionTypes.REMOVE_TOAST: { + state.value.toasts = + action.toastId === undefined + ? [] + : state.value.toasts.filter((t) => t.id !== action.toastId); + + break; + } + } +} + +function useToast() { + return { + dismiss: (toastId?: string) => + dispatch({ toastId, type: actionTypes.DISMISS_TOAST }), + toast, + toasts: computed(() => state.value.toasts), + }; +} + +type Toast = Omit; + +function toast(props: Toast) { + const id = genId(); + + const update = (props: ToasterToast) => + dispatch({ + toast: { ...props, id }, + type: actionTypes.UPDATE_TOAST, + }); + + const dismiss = () => + dispatch({ toastId: id, type: actionTypes.DISMISS_TOAST }); + + dispatch({ + toast: { + ...props, + id, + onOpenChange: (open: boolean) => { + if (!open) dismiss(); + }, + open: true, + }, + type: actionTypes.ADD_TOAST, + }); + + return { + dismiss, + id, + update, + }; +} + +export { toast, useToast }; diff --git a/packages/business/universal-ui/src/index.ts b/packages/business/universal-ui/src/index.ts index fb99fdec1..753baaa66 100644 --- a/packages/business/universal-ui/src/index.ts +++ b/packages/business/universal-ui/src/index.ts @@ -2,3 +2,4 @@ export * from './about'; export * from './authentication'; export * from './dashboard'; export * from './fallback'; +export { useToast } from '@vben-core/shadcn-ui'; diff --git a/packages/business/widgets/src/preferences/preferences.vue b/packages/business/widgets/src/preferences/preferences.vue index a523019fa..4958f4443 100644 --- a/packages/business/widgets/src/preferences/preferences.vue +++ b/packages/business/widgets/src/preferences/preferences.vue @@ -28,7 +28,7 @@ import { VbenIconButton, VbenSegmented, VbenSheet, - toast, + useToast, } from '@vben-core/shadcn-ui'; import { useClipboard } from '@vueuse/core'; @@ -56,7 +56,7 @@ import Trigger from './trigger.vue'; import { useOpenPreferences } from './use-open-preferences'; const emit = defineEmits<{ clearPreferencesAndLogout: [] }>(); - +const { toast } = useToast(); const appLocale = defineModel('appLocale'); const appDynamicTitle = defineModel('appDynamicTitle'); const appAiAssistant = defineModel('appAiAssistant'); @@ -177,7 +177,10 @@ const { openPreferences } = useOpenPreferences(); async function handleCopy() { await copy(JSON.stringify(diffPreference.value, null, 2)); - toast($t('preferences.copy-success')); + toast({ + description: $t('preferences.copy'), + title: $t('preferences.copy-success'), + }); } async function handleClearCache() { @@ -192,7 +195,14 @@ async function handleReset() { } resetPreferences(); await loadLocaleMessages(preferences.app.locale); - toast($t('preferences.reset-success')); + toast({ + description: $t('preferences.reset-title'), + title: $t('preferences.reset-success'), + }); + toast({ + description: $t('preferences.reset-title'), + title: $t('preferences.reset-success'), + }); } diff --git a/packages/icons/src/svg/index.ts b/packages/icons/src/svg/index.ts index d04557170..7f80ea230 100644 --- a/packages/icons/src/svg/index.ts +++ b/packages/icons/src/svg/index.ts @@ -1,4 +1,4 @@ -import { createIcon } from '@vben-core/iconify'; +import { createIconifyIcon } from '@vben-core/iconify'; import { loadSvgIcons } from './load'; @@ -8,14 +8,14 @@ if (!loaded) { loaded = true; } -const SvgAvatar1Icon = createIcon('svg:avatar-1'); -const SvgAvatar2Icon = createIcon('svg:avatar-2'); -const SvgAvatar3Icon = createIcon('svg:avatar-3'); -const SvgAvatar4Icon = createIcon('svg:avatar-4'); -const SvgDownloadIcon = createIcon('svg:download'); -const SvgCardIcon = createIcon('svg:card'); -const SvgBellIcon = createIcon('svg:bell'); -const SvgCakeIcon = createIcon('svg:cake'); +const SvgAvatar1Icon = createIconifyIcon('svg:avatar-1'); +const SvgAvatar2Icon = createIconifyIcon('svg:avatar-2'); +const SvgAvatar3Icon = createIconifyIcon('svg:avatar-3'); +const SvgAvatar4Icon = createIconifyIcon('svg:avatar-4'); +const SvgDownloadIcon = createIconifyIcon('svg:download'); +const SvgCardIcon = createIconifyIcon('svg:card'); +const SvgBellIcon = createIconifyIcon('svg:bell'); +const SvgCakeIcon = createIconifyIcon('svg:cake'); export { SvgAvatar1Icon, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e3d94ac7d..943007bbc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -784,9 +784,6 @@ importers: vue: specifier: ^3.4.31 version: 3.4.31(typescript@5.5.3) - vue-sonner: - specifier: ^1.1.3 - version: 1.1.3 packages/@core/ui-kit/tabs-ui: dependencies: @@ -9183,9 +9180,6 @@ packages: peerDependencies: vue: ^3.4.31 - vue-sonner@1.1.3: - resolution: {integrity: sha512-6I+5GNobKvE2nR5MPhO+T59d4j2LXRQoc/ZCmGtCoBWKDQr5nzSqjFaOOdPysHFI2p42wNLhQMafd0N540UW9Q==} - vue-template-compiler@2.7.16: resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} @@ -18548,8 +18542,6 @@ snapshots: '@vue/devtools-api': 6.6.3 vue: 3.4.31(typescript@5.5.3) - vue-sonner@1.1.3: {} - vue-template-compiler@2.7.16: dependencies: de-indent: 1.0.2