diff --git a/components.json b/components.json
index 37204273..73fcc132 100644
--- a/components.json
+++ b/components.json
@@ -8,9 +8,9 @@
"baseColor": "neutral",
"cssVariables": true
},
- "framework": "vite",
"aliases": {
"components": "@/ui/shadcn",
- "utils": "@/utils"
+ "utils": "@/utils",
+ "lib": "@/utils"
}
}
diff --git a/package.json b/package.json
index 69bcf57e..ad0aa609 100755
--- a/package.json
+++ b/package.json
@@ -1,5 +1,6 @@
{
"type": "module",
+ "packageManager": "pnpm@9.10.0",
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
@@ -54,7 +55,7 @@
"print-js": "^1.6.0",
"qrcode": "^1.5.4",
"qs": "^6.14.0",
- "radix-vue": "^1.9.17",
+ "reka-ui": "^2.0.2",
"scule": "^1.3.0",
"splitpanes": "^3.1.8",
"swiper": "^11.2.4",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 54fd89a1..29210ad6 100755
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -113,9 +113,9 @@ importers:
qs:
specifier: ^6.14.0
version: 6.14.0
- radix-vue:
- specifier: ^1.9.17
- version: 1.9.17(vue@3.5.13(typescript@5.8.2))
+ reka-ui:
+ specifier: ^2.0.2
+ version: 2.0.2(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))
scule:
specifier: ^1.3.0
version: 1.3.0
@@ -2731,9 +2731,6 @@ packages:
'@vueuse/components@12.7.0':
resolution: {integrity: sha512-LbaKPOx9sTPRxI8ymJt3VCm2CifmC432yaXxCGbjkuKIh2jyNlXvE7sGrLm7kbC7WkBJnUXzm3K/cI1pIE8ueQ==}
- '@vueuse/core@10.11.1':
- resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==}
-
'@vueuse/core@12.7.0':
resolution: {integrity: sha512-jtK5B7YjZXmkGNHjviyGO4s3ZtEhbzSgrbX+s5o+Lr8i2nYqNyHuPVOeTdM1/hZ5Tkxg/KktAuAVDDiHMraMVA==}
@@ -2781,18 +2778,12 @@ packages:
universal-cookie:
optional: true
- '@vueuse/metadata@10.11.1':
- resolution: {integrity: sha512-IGa5FXd003Ug1qAZmyE8wF3sJ81xGLSqTqtQ6jaVfkeZ4i5kS2mwQF61yhVqojRnenVew5PldLyRgvdl4YYuSw==}
-
'@vueuse/metadata@12.7.0':
resolution: {integrity: sha512-4VvTH9mrjXqFN5LYa5YfqHVRI6j7R00Vy4995Rw7PQxyCL3z0Lli86iN4UemWqixxEvYfRjG+hF9wL8oLOn+3g==}
'@vueuse/metadata@9.13.0':
resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
- '@vueuse/shared@10.11.1':
- resolution: {integrity: sha512-LHpC8711VFZlDaYUXEBbFBCQ7GS3dVU9mjOhhMhXP6txTV4EhYQg/KGnQuvt/sPAtoUKq7VVUnL6mVtFoL42sA==}
-
'@vueuse/shared@12.7.0':
resolution: {integrity: sha512-coLlUw2HHKsm7rPN6WqHJQr18WymN4wkA/3ThFaJ4v4gWGWAQQGK+MJxLuJTBs4mojQiazlVWAKNJNpUWGRkNw==}
@@ -5666,11 +5657,6 @@ packages:
engines: {node: ^18 || >=20}
hasBin: true
- nanoid@5.1.2:
- resolution: {integrity: sha512-b+CiXQCNMUGe0Ri64S9SXFcP9hogjAJ2Rd6GdVxhPLRm7mhGaM7VgOvCAJ1ZshfHbqVDI3uqTI5C8/GaKuLI7g==}
- engines: {node: ^18 || >=20}
- hasBin: true
-
nanomatch@1.2.13:
resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
engines: {node: '>=0.10.0'}
@@ -6204,11 +6190,6 @@ packages:
queue-tick@1.0.1:
resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==}
- radix-vue@1.9.17:
- resolution: {integrity: sha512-mVCu7I2vXt1L2IUYHTt0sZMz7s1K2ZtqKeTIxG3yC5mMFfLBG4FtE1FDeRMpDd+Hhg/ybi9+iXmAP1ISREndoQ==}
- peerDependencies:
- vue: '>= 3.2.0'
-
radix3@1.1.2:
resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==}
@@ -6309,6 +6290,11 @@ packages:
rehype-stringify@9.0.4:
resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==}
+ reka-ui@2.0.2:
+ resolution: {integrity: sha512-pC2UF6Z+kJF96aJvIErhkSO4DJYIeq9pgvh3pntNqcZb3zFGMzw8h2uny+GnLX2CKiQV54kZNYXxecYIiPMGyg==}
+ peerDependencies:
+ vue: '>= 3.2.0'
+
remark-gfm@3.0.1:
resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==}
@@ -10616,16 +10602,6 @@ snapshots:
transitivePeerDependencies:
- typescript
- '@vueuse/core@10.11.1(vue@3.5.13(typescript@5.8.2))':
- dependencies:
- '@types/web-bluetooth': 0.0.20
- '@vueuse/metadata': 10.11.1
- '@vueuse/shared': 10.11.1(vue@3.5.13(typescript@5.8.2))
- vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2))
- transitivePeerDependencies:
- - '@vue/composition-api'
- - vue
-
'@vueuse/core@12.7.0(typescript@5.8.2)':
dependencies:
'@types/web-bluetooth': 0.0.20
@@ -10658,19 +10634,10 @@ snapshots:
transitivePeerDependencies:
- typescript
- '@vueuse/metadata@10.11.1': {}
-
'@vueuse/metadata@12.7.0': {}
'@vueuse/metadata@9.13.0': {}
- '@vueuse/shared@10.11.1(vue@3.5.13(typescript@5.8.2))':
- dependencies:
- vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2))
- transitivePeerDependencies:
- - '@vue/composition-api'
- - vue
-
'@vueuse/shared@12.7.0(typescript@5.8.2)':
dependencies:
vue: 3.5.13(typescript@5.8.2)
@@ -14179,8 +14146,6 @@ snapshots:
nanoid@5.1.0: {}
- nanoid@5.1.2: {}
-
nanomatch@1.2.13:
dependencies:
arr-diff: 4.0.0
@@ -14743,23 +14708,6 @@ snapshots:
queue-tick@1.0.1: {}
- radix-vue@1.9.17(vue@3.5.13(typescript@5.8.2)):
- dependencies:
- '@floating-ui/dom': 1.6.13
- '@floating-ui/vue': 1.1.6(vue@3.5.13(typescript@5.8.2))
- '@internationalized/date': 3.7.0
- '@internationalized/number': 3.6.0
- '@tanstack/vue-virtual': 3.13.2(vue@3.5.13(typescript@5.8.2))
- '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.8.2))
- '@vueuse/shared': 10.11.1(vue@3.5.13(typescript@5.8.2))
- aria-hidden: 1.2.4
- defu: 6.1.4
- fast-deep-equal: 3.1.3
- nanoid: 5.1.2
- vue: 3.5.13(typescript@5.8.2)
- transitivePeerDependencies:
- - '@vue/composition-api'
-
radix3@1.1.2: {}
read-package-json-fast@4.0.0:
@@ -14896,6 +14844,23 @@ snapshots:
hast-util-to-html: 8.0.4
unified: 10.1.2
+ reka-ui@2.0.2(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2)):
+ dependencies:
+ '@floating-ui/dom': 1.6.13
+ '@floating-ui/vue': 1.1.6(vue@3.5.13(typescript@5.8.2))
+ '@internationalized/date': 3.7.0
+ '@internationalized/number': 3.6.0
+ '@tanstack/vue-virtual': 3.13.2(vue@3.5.13(typescript@5.8.2))
+ '@vueuse/core': 12.7.0(typescript@5.8.2)
+ '@vueuse/shared': 12.7.0(typescript@5.8.2)
+ aria-hidden: 1.2.4
+ defu: 6.1.4
+ ohash: 1.1.4
+ vue: 3.5.13(typescript@5.8.2)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - typescript
+
remark-gfm@3.0.1:
dependencies:
'@types/mdast': 3.0.15
diff --git a/src/layouts/components/Topbar/Toolbar/ColorScheme/index.vue b/src/layouts/components/Topbar/Toolbar/ColorScheme/index.vue
index 6e82da94..938e5a23 100644
--- a/src/layouts/components/Topbar/Toolbar/ColorScheme/index.vue
+++ b/src/layouts/components/Topbar/Toolbar/ColorScheme/index.vue
@@ -37,7 +37,7 @@ function toggleColorScheme(event: MouseEvent) {
-
+
+
diff --git a/src/layouts/components/Topbar/Toolbar/NavSearch/index.vue b/src/layouts/components/Topbar/Toolbar/NavSearch/index.vue
index 069a7984..01fe0aa9 100644
--- a/src/layouts/components/Topbar/Toolbar/NavSearch/index.vue
+++ b/src/layouts/components/Topbar/Toolbar/NavSearch/index.vue
@@ -12,7 +12,7 @@ const isShow = ref(false)
-
+
搜索
diff --git a/src/layouts/components/Topbar/Toolbar/PageReload/index.vue b/src/layouts/components/Topbar/Toolbar/PageReload/index.vue
index 274608a6..bb60ec24 100644
--- a/src/layouts/components/Topbar/Toolbar/PageReload/index.vue
+++ b/src/layouts/components/Topbar/Toolbar/PageReload/index.vue
@@ -41,7 +41,7 @@ function handleCtrlClick() {
可切换为浏览器原生刷新
-
+
diff --git a/src/ui/components/FaAvatar/avatar/Avatar.vue b/src/ui/components/FaAvatar/avatar/Avatar.vue
index 7ac4ab43..94986359 100644
--- a/src/ui/components/FaAvatar/avatar/Avatar.vue
+++ b/src/ui/components/FaAvatar/avatar/Avatar.vue
@@ -2,7 +2,7 @@
import type { HTMLAttributes } from 'vue'
import type { AvatarVariants } from '.'
import { cn } from '@/utils'
-import { AvatarRoot } from 'radix-vue'
+import { AvatarRoot } from 'reka-ui'
import { avatarVariant } from '.'
const props = withDefaults(defineProps<{
diff --git a/src/ui/components/FaAvatar/avatar/AvatarFallback.vue b/src/ui/components/FaAvatar/avatar/AvatarFallback.vue
index 1ac23e62..ad284388 100644
--- a/src/ui/components/FaAvatar/avatar/AvatarFallback.vue
+++ b/src/ui/components/FaAvatar/avatar/AvatarFallback.vue
@@ -1,6 +1,6 @@
diff --git a/src/ui/components/FaAvatar/avatar/AvatarImage.vue b/src/ui/components/FaAvatar/avatar/AvatarImage.vue
index 6ef58f74..8efeecb0 100644
--- a/src/ui/components/FaAvatar/avatar/AvatarImage.vue
+++ b/src/ui/components/FaAvatar/avatar/AvatarImage.vue
@@ -1,10 +1,12 @@
-
+
+
+
diff --git a/src/ui/components/FaButton/button/Button.vue b/src/ui/components/FaButton/button/Button.vue
index 3f686fd1..8f61e57e 100644
--- a/src/ui/components/FaButton/button/Button.vue
+++ b/src/ui/components/FaButton/button/Button.vue
@@ -1,9 +1,9 @@
diff --git a/src/ui/components/FaContextMenu/context-menu/ContextMenuItem.vue b/src/ui/components/FaContextMenu/context-menu/ContextMenuItem.vue
index 0658c59a..da2a747d 100644
--- a/src/ui/components/FaContextMenu/context-menu/ContextMenuItem.vue
+++ b/src/ui/components/FaContextMenu/context-menu/ContextMenuItem.vue
@@ -1,12 +1,11 @@
diff --git a/src/ui/components/FaContextMenu/context-menu/ContextMenuRadioGroup.vue b/src/ui/components/FaContextMenu/context-menu/ContextMenuRadioGroup.vue
index a40feffb..50a9142b 100644
--- a/src/ui/components/FaContextMenu/context-menu/ContextMenuRadioGroup.vue
+++ b/src/ui/components/FaContextMenu/context-menu/ContextMenuRadioGroup.vue
@@ -1,10 +1,9 @@
diff --git a/src/ui/components/FaDrawer/sheet/SheetContent.vue b/src/ui/components/FaDrawer/sheet/SheetContent.vue
index 1c81e4d0..32c3f4a9 100644
--- a/src/ui/components/FaDrawer/sheet/SheetContent.vue
+++ b/src/ui/components/FaDrawer/sheet/SheetContent.vue
@@ -1,5 +1,5 @@
+
+
+
+
+
+
diff --git a/src/ui/components/FaDrawer/sheet/index.ts b/src/ui/components/FaDrawer/sheet/index.ts
index f53771ec..71e66d0e 100644
--- a/src/ui/components/FaDrawer/sheet/index.ts
+++ b/src/ui/components/FaDrawer/sheet/index.ts
@@ -8,6 +8,7 @@ export { default as SheetDescription } from './SheetDescription.vue'
export { default as SheetFooter } from './SheetFooter.vue'
export { default as SheetHeader } from './SheetHeader.vue'
export { default as SheetTitle } from './SheetTitle.vue'
+export { default as SheetTrigger } from './SheetTrigger.vue'
export const sheetVariants = cva(
'fixed z-2000 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:animate-duration-300 data-[state=open]:animate-duration-500',
@@ -17,9 +18,9 @@ export const sheetVariants = cva(
top: 'inset-x-0 top-0 shadow-[0_1px_0_0_hsl(var(--border))] data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',
bottom:
'inset-x-0 bottom-0 shadow-[0_-1px_0_0_hsl(var(--border))] data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',
- left: 'inset-y-0 left-0 h-full w-3/4 shadow-[1px_0_0_0_hsl(var(--border))] data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-md',
+ left: 'inset-y-0 left-0 h-full w-3/4 shadow-[1px_0_0_0_hsl(var(--border))] data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',
right:
- 'inset-y-0 right-0 h-full w-3/4 shadow-[-1px_0_0_0_hsl(var(--border))] data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-md',
+ 'inset-y-0 right-0 h-full w-3/4 shadow-[-1px_0_0_0_hsl(var(--border))] data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',
},
},
defaultVariants: {
diff --git a/src/ui/components/FaDropdown/dropdown-menu/DropdownMenu.vue b/src/ui/components/FaDropdown/dropdown-menu/DropdownMenu.vue
index c9e77fe7..190c1894 100644
--- a/src/ui/components/FaDropdown/dropdown-menu/DropdownMenu.vue
+++ b/src/ui/components/FaDropdown/dropdown-menu/DropdownMenu.vue
@@ -1,6 +1,6 @@
diff --git a/src/ui/components/FaDropdown/dropdown-menu/DropdownMenuItem.vue b/src/ui/components/FaDropdown/dropdown-menu/DropdownMenuItem.vue
index 5ab98d74..db9d2513 100644
--- a/src/ui/components/FaDropdown/dropdown-menu/DropdownMenuItem.vue
+++ b/src/ui/components/FaDropdown/dropdown-menu/DropdownMenuItem.vue
@@ -1,8 +1,8 @@
diff --git a/src/ui/components/FaModal/dialog/DialogContent.vue b/src/ui/components/FaModal/dialog/DialogContent.vue
index 4f520857..1c8774d5 100644
--- a/src/ui/components/FaModal/dialog/DialogContent.vue
+++ b/src/ui/components/FaModal/dialog/DialogContent.vue
@@ -1,5 +1,5 @@
+
+
+
+
+ {
+ const originalEvent = event.detail.originalEvent;
+ const target = originalEvent.target as HTMLElement;
+ if (originalEvent.offsetX > target.clientWidth || originalEvent.offsetY > target.clientHeight) {
+ event.preventDefault();
+ }
+ }"
+ >
+
+
+
+
+ Close
+
+
+
+
+
diff --git a/src/ui/components/FaModal/dialog/DialogTitle.vue b/src/ui/components/FaModal/dialog/DialogTitle.vue
index ceeaf6fe..ab30cff9 100644
--- a/src/ui/components/FaModal/dialog/DialogTitle.vue
+++ b/src/ui/components/FaModal/dialog/DialogTitle.vue
@@ -1,8 +1,8 @@
+
+
+
+
+
+
diff --git a/src/ui/components/FaModal/dialog/index.ts b/src/ui/components/FaModal/dialog/index.ts
index f4d24439..ca8cfeae 100644
--- a/src/ui/components/FaModal/dialog/index.ts
+++ b/src/ui/components/FaModal/dialog/index.ts
@@ -4,4 +4,6 @@ export { default as DialogContent } from './DialogContent.vue'
export { default as DialogDescription } from './DialogDescription.vue'
export { default as DialogFooter } from './DialogFooter.vue'
export { default as DialogHeader } from './DialogHeader.vue'
+export { default as DialogScrollContent } from './DialogScrollContent.vue'
export { default as DialogTitle } from './DialogTitle.vue'
+export { default as DialogTrigger } from './DialogTrigger.vue'
diff --git a/src/ui/components/FaModal/index.vue b/src/ui/components/FaModal/index.vue
index 8d79af44..9a80dcd9 100644
--- a/src/ui/components/FaModal/index.vue
+++ b/src/ui/components/FaModal/index.vue
@@ -1,7 +1,7 @@
diff --git a/src/ui/components/FaNotification/toast/ToastTitle.vue b/src/ui/components/FaNotification/toast/ToastTitle.vue
index 2b61a5de..970035da 100644
--- a/src/ui/components/FaNotification/toast/ToastTitle.vue
+++ b/src/ui/components/FaNotification/toast/ToastTitle.vue
@@ -1,8 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/src/ui/components/FaPinInput/pin-input/index.ts b/src/ui/components/FaPinInput/pin-input/index.ts
index 5212711f..e645e414 100644
--- a/src/ui/components/FaPinInput/pin-input/index.ts
+++ b/src/ui/components/FaPinInput/pin-input/index.ts
@@ -1,3 +1,4 @@
export { default as PinInput } from './PinInput.vue'
export { default as PinInputGroup } from './PinInputGroup.vue'
export { default as PinInputInput } from './PinInputInput.vue'
+export { default as PinInputSeparator } from './PinInputSeparator.vue'
diff --git a/src/ui/components/FaPopover/index.vue b/src/ui/components/FaPopover/index.vue
index 935aae92..dff88e63 100644
--- a/src/ui/components/FaPopover/index.vue
+++ b/src/ui/components/FaPopover/index.vue
@@ -1,5 +1,5 @@
diff --git a/src/ui/components/FaScrollArea/scroll-area/ScrollArea.vue b/src/ui/components/FaScrollArea/scroll-area/ScrollArea.vue
index 11ca35df..478a6861 100644
--- a/src/ui/components/FaScrollArea/scroll-area/ScrollArea.vue
+++ b/src/ui/components/FaScrollArea/scroll-area/ScrollArea.vue
@@ -1,13 +1,12 @@
diff --git a/src/ui/components/FaSelect/select/SelectLabel.vue b/src/ui/components/FaSelect/select/SelectLabel.vue
index 975e49c7..14f7b6e5 100644
--- a/src/ui/components/FaSelect/select/SelectLabel.vue
+++ b/src/ui/components/FaSelect/select/SelectLabel.vue
@@ -1,14 +1,14 @@
-
+
diff --git a/src/ui/components/FaSelect/select/SelectScrollDownButton.vue b/src/ui/components/FaSelect/select/SelectScrollDownButton.vue
index dda5ee7c..020aa25f 100644
--- a/src/ui/components/FaSelect/select/SelectScrollDownButton.vue
+++ b/src/ui/components/FaSelect/select/SelectScrollDownButton.vue
@@ -1,9 +1,9 @@
diff --git a/src/ui/components/FaSwitch/switch/Switch.vue b/src/ui/components/FaSwitch/switch/Switch.vue
index b7271497..0062c6d8 100644
--- a/src/ui/components/FaSwitch/switch/Switch.vue
+++ b/src/ui/components/FaSwitch/switch/Switch.vue
@@ -1,13 +1,12 @@
diff --git a/src/ui/components/FaTooltip/tooltip/TooltipTrigger.vue b/src/ui/components/FaTooltip/tooltip/TooltipTrigger.vue
index 41acc5e9..266533ba 100644
--- a/src/ui/components/FaTooltip/tooltip/TooltipTrigger.vue
+++ b/src/ui/components/FaTooltip/tooltip/TooltipTrigger.vue
@@ -1,6 +1,6 @@
diff --git a/src/ui/shadcn/ui/form/FormControl.vue b/src/ui/shadcn/ui/form/FormControl.vue
index 8459cab8..eddcafe7 100644
--- a/src/ui/shadcn/ui/form/FormControl.vue
+++ b/src/ui/shadcn/ui/form/FormControl.vue
@@ -1,5 +1,5 @@