From a06de94c8f24ecd0327a6d85103ee507452ebe88 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?cls=5F=E5=AE=81=E6=B3=A2=E6=9C=AC=E6=9C=BA?=
<908705107@qq.com>
Date: Fri, 12 Jun 2026 17:01:05 +0800
Subject: [PATCH] chore: trim button radix dependency
---
.../shadcn-ui/src/components/button/button.ts | 9 +++++----
.../shadcn-ui/src/components/button/button.vue | 17 +++++++++--------
.../src/components/button/icon-button.vue | 5 +++--
3 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/web/packages/@core/ui-kit/shadcn-ui/src/components/button/button.ts b/web/packages/@core/ui-kit/shadcn-ui/src/components/button/button.ts
index 9da307c..c4c7da4 100644
--- a/web/packages/@core/ui-kit/shadcn-ui/src/components/button/button.ts
+++ b/web/packages/@core/ui-kit/shadcn-ui/src/components/button/button.ts
@@ -1,15 +1,16 @@
-import type { AsTag } from 'radix-vue';
-
import type { Component } from 'vue';
-import type { ButtonVariants, ButtonVariantSize } from '../../ui';
+import type {
+ ButtonVariants,
+ ButtonVariantSize,
+} from '../../ui/button/types';
export interface VbenButtonProps {
/**
* The element or component this component should render as. Can be overwrite by `asChild`
* @defaultValue "div"
*/
- as?: AsTag | Component;
+ as?: Component | string;
/**
* Change the default rendered element for the one passed as a child, merging their props and behavior.
*
diff --git a/web/packages/@core/ui-kit/shadcn-ui/src/components/button/button.vue b/web/packages/@core/ui-kit/shadcn-ui/src/components/button/button.vue
index cb9b3e5..adb0d46 100644
--- a/web/packages/@core/ui-kit/shadcn-ui/src/components/button/button.vue
+++ b/web/packages/@core/ui-kit/shadcn-ui/src/components/button/button.vue
@@ -1,14 +1,12 @@
-
-
+
diff --git a/web/packages/@core/ui-kit/shadcn-ui/src/components/button/icon-button.vue b/web/packages/@core/ui-kit/shadcn-ui/src/components/button/icon-button.vue
index ac626c1..cf2efdb 100644
--- a/web/packages/@core/ui-kit/shadcn-ui/src/components/button/icon-button.vue
+++ b/web/packages/@core/ui-kit/shadcn-ui/src/components/button/icon-button.vue
@@ -2,13 +2,14 @@
import type { ButtonVariants } from '../../ui';
import type { VbenButtonProps } from './button';
-import { computed, useSlots } from 'vue';
+import { computed, defineAsyncComponent, useSlots } from 'vue';
import { cn } from '@vben-core/shared/utils';
-import { VbenTooltip } from '../tooltip';
import VbenButton from './button.vue';
+const VbenTooltip = defineAsyncComponent(() => import('../tooltip/tooltip.vue'));
+
interface Props extends VbenButtonProps {
class?: any;
disabled?: boolean;