vome-core 0.1.76 → 0.1.78
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/admin/api/client.js +2 -3
- package/dist/admin/components/layout/vm-app-header.vue +341 -0
- package/dist/admin/components/layout/vm-app-sidebar.vue +187 -0
- package/dist/admin/components/layout/vm-sidebar-flyout.vue +268 -0
- package/dist/admin/components/layout/vm-sidebar-nav-item.vue +490 -0
- package/dist/admin/components/layout/vm-sidebar-nav.vue +104 -0
- package/dist/admin/components/layout/vm-tags-view.vue +233 -0
- package/dist/admin/components/ui/avatar/Avatar.vue +18 -0
- package/dist/admin/components/ui/avatar/AvatarFallback.vue +21 -0
- package/dist/admin/components/ui/avatar/AvatarImage.vue +16 -0
- package/dist/admin/components/ui/avatar/index.d.ts +3 -0
- package/dist/admin/components/ui/avatar/index.js +1 -0
- package/dist/admin/components/ui/badge/Badge.vue +26 -0
- package/dist/admin/components/ui/badge/index.d.ts +6 -0
- package/dist/admin/components/ui/badge/index.js +1 -0
- package/dist/admin/components/ui/button/Button.vue +31 -0
- package/dist/admin/components/ui/button/index.d.ts +7 -0
- package/dist/admin/components/ui/button/index.js +1 -0
- package/dist/admin/components/ui/checkbox/Checkbox.vue +35 -0
- package/dist/admin/components/ui/checkbox/index.d.ts +1 -0
- package/dist/admin/components/ui/checkbox/index.js +1 -0
- package/dist/admin/components/ui/dialog/Dialog.vue +19 -0
- package/dist/admin/components/ui/dialog/DialogClose.vue +15 -0
- package/dist/admin/components/ui/dialog/DialogContent.vue +135 -0
- package/dist/admin/components/ui/dialog/DialogDescription.vue +23 -0
- package/dist/admin/components/ui/dialog/DialogFooter.vue +27 -0
- package/dist/admin/components/ui/dialog/DialogHeader.vue +17 -0
- package/dist/admin/components/ui/dialog/DialogOverlay.vue +21 -0
- package/dist/admin/components/ui/dialog/DialogScrollContent.vue +60 -0
- package/dist/admin/components/ui/dialog/DialogTitle.vue +23 -0
- package/dist/admin/components/ui/dialog/DialogTrigger.vue +15 -0
- package/dist/admin/components/ui/dialog/index.d.ts +10 -0
- package/dist/admin/components/ui/dialog/index.js +1 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenu.vue +19 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +39 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuContent.vue +39 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuGroup.vue +15 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuItem.vue +31 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuLabel.vue +23 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +21 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +40 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuSeparator.vue +23 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuShortcut.vue +17 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuSub.vue +18 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuSubContent.vue +27 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +31 -0
- package/dist/admin/components/ui/dropdown-menu/DropdownMenuTrigger.vue +17 -0
- package/dist/admin/components/ui/dropdown-menu/index.d.ts +15 -0
- package/dist/admin/components/ui/dropdown-menu/index.js +1 -0
- package/dist/admin/components/ui/input/Input.vue +34 -0
- package/dist/admin/components/ui/input/index.d.ts +1 -0
- package/dist/admin/components/ui/input/index.js +1 -0
- package/dist/admin/components/ui/label/Label.vue +26 -0
- package/dist/admin/components/ui/label/index.d.ts +1 -0
- package/dist/admin/components/ui/label/index.js +1 -0
- package/dist/admin/components/ui/scroll-area/ScrollArea.vue +33 -0
- package/dist/admin/components/ui/scroll-area/ScrollBar.vue +32 -0
- package/dist/admin/components/ui/scroll-area/index.d.ts +2 -0
- package/dist/admin/components/ui/scroll-area/index.js +1 -0
- package/dist/admin/components/ui/select/Select.vue +19 -0
- package/dist/admin/components/ui/select/SelectContent.vue +51 -0
- package/dist/admin/components/ui/select/SelectGroup.vue +15 -0
- package/dist/admin/components/ui/select/SelectItem.vue +44 -0
- package/dist/admin/components/ui/select/SelectItemText.vue +15 -0
- package/dist/admin/components/ui/select/SelectLabel.vue +17 -0
- package/dist/admin/components/ui/select/SelectScrollDownButton.vue +26 -0
- package/dist/admin/components/ui/select/SelectScrollUpButton.vue +26 -0
- package/dist/admin/components/ui/select/SelectSeparator.vue +19 -0
- package/dist/admin/components/ui/select/SelectTrigger.vue +33 -0
- package/dist/admin/components/ui/select/SelectValue.vue +15 -0
- package/dist/admin/components/ui/select/index.d.ts +11 -0
- package/dist/admin/components/ui/select/index.js +1 -0
- package/dist/admin/components/ui/separator/Separator.vue +29 -0
- package/dist/admin/components/ui/separator/index.d.ts +1 -0
- package/dist/admin/components/ui/separator/index.js +1 -0
- package/dist/admin/components/ui/sheet/Sheet.vue +19 -0
- package/dist/admin/components/ui/sheet/SheetClose.vue +15 -0
- package/dist/admin/components/ui/sheet/SheetContent.vue +63 -0
- package/dist/admin/components/ui/sheet/SheetDescription.vue +21 -0
- package/dist/admin/components/ui/sheet/SheetFooter.vue +16 -0
- package/dist/admin/components/ui/sheet/SheetHeader.vue +15 -0
- package/dist/admin/components/ui/sheet/SheetOverlay.vue +21 -0
- package/dist/admin/components/ui/sheet/SheetTitle.vue +21 -0
- package/dist/admin/components/ui/sheet/SheetTrigger.vue +15 -0
- package/dist/admin/components/ui/sheet/index.d.ts +8 -0
- package/dist/admin/components/ui/sheet/index.js +1 -0
- package/dist/admin/components/ui/sonner/Toaster.vue +117 -0
- package/dist/admin/components/ui/sonner/index.d.ts +1 -0
- package/dist/admin/components/ui/sonner/index.js +1 -0
- package/dist/admin/components/ui/table/Table.vue +16 -0
- package/dist/admin/components/ui/table/TableBody.vue +17 -0
- package/dist/admin/components/ui/table/TableCaption.vue +17 -0
- package/dist/admin/components/ui/table/TableCell.vue +22 -0
- package/dist/admin/components/ui/table/TableEmpty.vue +34 -0
- package/dist/admin/components/ui/table/TableFooter.vue +17 -0
- package/dist/admin/components/ui/table/TableHead.vue +17 -0
- package/dist/admin/components/ui/table/TableHeader.vue +17 -0
- package/dist/admin/components/ui/table/TableRow.vue +17 -0
- package/dist/admin/components/ui/table/index.d.ts +9 -0
- package/dist/admin/components/ui/table/index.js +1 -0
- package/dist/admin/components/ui/table/utils.d.ts +3 -0
- package/dist/admin/components/ui/table/utils.js +1 -0
- package/dist/admin/components/ui/tabs/Tabs.vue +24 -0
- package/dist/admin/components/ui/tabs/TabsContent.vue +21 -0
- package/dist/admin/components/ui/tabs/TabsList.vue +24 -0
- package/dist/admin/components/ui/tabs/TabsTrigger.vue +26 -0
- package/dist/admin/components/ui/tabs/index.d.ts +4 -0
- package/dist/admin/components/ui/tabs/index.js +1 -0
- package/dist/admin/components/ui/tooltip/Tooltip.vue +19 -0
- package/dist/admin/components/ui/tooltip/TooltipContent.vue +34 -0
- package/dist/admin/components/ui/tooltip/TooltipProvider.vue +14 -0
- package/dist/admin/components/ui/tooltip/TooltipTrigger.vue +15 -0
- package/dist/admin/components/ui/tooltip/index.d.ts +4 -0
- package/dist/admin/components/ui/tooltip/index.js +1 -0
- package/dist/admin/crud/components/vm-color-picker.vue +0 -3
- package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
- package/dist/admin/crud/config.js +1 -1
- package/dist/admin/crud/confirm.d.ts +8 -0
- package/dist/admin/crud/confirm.js +1 -1
- package/dist/admin/crud/crud-page-request.js +1 -1
- package/dist/admin/crud/dict.js +1 -1
- package/dist/admin/crud/export-fetch.js +1 -1
- package/dist/admin/crud/key.js +1 -1
- package/dist/admin/crud/plugins.js +1 -1
- package/dist/admin/crud/span.js +1 -1
- package/dist/admin/crud/style.d.ts +4 -0
- package/dist/admin/crud/style.js +1 -1
- package/dist/admin/crud/validate.js +1 -1
- package/dist/admin/crud/vm-data-i18n-btn.vue +0 -7
- package/dist/admin/directives/perm.js +1 -1
- package/dist/admin/env.d.ts +0 -4
- package/dist/admin/hooks/useUpload.js +1 -1
- package/dist/admin/index.d.ts +11 -4
- package/dist/admin/index.js +16 -7
- package/dist/admin/lib/browser.js +1 -1
- package/dist/admin/lib/cn.js +1 -1
- package/dist/admin/lib/dialog-float.js +1 -1
- package/dist/admin/lib/document-title.d.ts +6 -0
- package/dist/admin/lib/document-title.js +1 -0
- package/dist/admin/lib/export-excel.js +1 -1
- package/dist/admin/lib/import-excel.js +1 -1
- package/dist/admin/lib/json.js +1 -1
- package/dist/admin/lib/menu.js +1 -1
- package/dist/admin/lib/micro-locale.d.ts +5 -0
- package/dist/admin/lib/micro-locale.js +1 -0
- package/dist/admin/lib/micro-theme.d.ts +14 -0
- package/dist/admin/lib/micro-theme.js +1 -0
- package/dist/admin/lib/setup-crud-defaults.d.ts +2 -0
- package/dist/admin/lib/setup-crud-defaults.js +1 -0
- package/dist/admin/lib/shell.d.ts +13 -0
- package/dist/admin/lib/shell.js +1 -0
- package/dist/admin/lib/theme-color-options.js +1 -1
- package/dist/admin/lib/tree.js +1 -1
- package/dist/admin/lib/upload.js +1 -1
- package/dist/admin/lib/video-frame.js +1 -1
- package/dist/admin/router/create.d.ts +16 -0
- package/dist/admin/router/create.js +1 -0
- package/dist/admin/router/guards.d.ts +6 -0
- package/dist/admin/router/guards.js +1 -0
- package/dist/admin/router/index.d.ts +6 -3
- package/dist/admin/router/index.js +5 -80
- package/dist/admin/router/menu-routes.d.ts +7 -2
- package/dist/admin/router/menu-routes.js +10 -12
- package/dist/admin/service/index.js +0 -3
- package/dist/admin/stores/dict.d.ts +13 -0
- package/dist/admin/stores/dict.js +1 -0
- package/dist/admin/stores/locale.d.ts +3 -0
- package/dist/admin/stores/locale.js +1 -0
- package/dist/admin/stores/theme.d.ts +1 -0
- package/dist/admin/stores/theme.js +1 -0
- package/dist/admin/themes/dark.d.ts +2 -0
- package/dist/admin/themes/dark.js +1 -0
- package/dist/admin/themes/index.d.ts +9 -0
- package/dist/admin/themes/index.js +1 -0
- package/dist/admin/themes/light.d.ts +2 -0
- package/dist/admin/themes/light.js +1 -0
- package/dist/client/configure.d.ts +3 -0
- package/dist/client/configure.js +7 -0
- package/dist/client/vite-admin.js +2 -4
- package/dist/client/vite-auto-import.js +4 -4
- package/dist/client/vite-resolve.d.ts +3 -3
- package/dist/client/vite-resolve.js +10 -15
- package/dist/ext/plugin-market-urls.d.ts +8 -0
- package/dist/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/shared/datetime-picker.js +1 -1
- package/dist/shared/excel.js +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/locale-json.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/package.json +13 -4
- package/typings/admin/theme.ts +10 -0
- package/dist/admin/config/plugin-dev.d.ts +0 -52
- package/dist/admin/config/plugin-dev.js +0 -1
- package/typings/admin/host.d.ts +0 -66
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x4855(_0x48543e,_0x224f77){_0x48543e=_0x48543e-0x97;var _0x690ee3=_0x690e();var _0x485505=_0x690ee3[_0x48543e];if(_0x4855['WSJNkW']===undefined){var _0xe79382=function(_0x36beeb){var _0x59db67='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x2fd062='',_0x1e0629='';for(var _0x4f76c4=0x0,_0x7eb07d,_0x17f4b8,_0x19e8e9=0x0;_0x17f4b8=_0x36beeb['charAt'](_0x19e8e9++);~_0x17f4b8&&(_0x7eb07d=_0x4f76c4%0x4?_0x7eb07d*0x40+_0x17f4b8:_0x17f4b8,_0x4f76c4++%0x4)?_0x2fd062+=String['fromCharCode'](0xff&_0x7eb07d>>(-0x2*_0x4f76c4&0x6)):0x0){_0x17f4b8=_0x59db67['indexOf'](_0x17f4b8);}for(var _0x521b82=0x0,_0x380c04=_0x2fd062['length'];_0x521b82<_0x380c04;_0x521b82++){_0x1e0629+='%'+('00'+_0x2fd062['charCodeAt'](_0x521b82)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1e0629);};_0x4855['DFxsUL']=_0xe79382,_0x4855['DXIznd']={},_0x4855['WSJNkW']=!![];}var _0x40f2f6=_0x690ee3[0x0],_0x1aa509=_0x48543e+_0x40f2f6,_0x1a45d3=_0x4855['DXIznd'][_0x1aa509];return!_0x1a45d3?(_0x485505=_0x4855['DFxsUL'](_0x485505),_0x4855['DXIznd'][_0x1aa509]=_0x485505):_0x485505=_0x1a45d3,_0x485505;}(function(_0x4973d9,_0x3279af){var _0x189052=_0x4855,_0x5ed38f=_0x4973d9();while(!![]){try{var _0x3104b3=parseInt(_0x189052(0x99))/0x1*(-parseInt(_0x189052(0x9e))/0x2)+parseInt(_0x189052(0x9d))/0x3+-parseInt(_0x189052(0x9a))/0x4+-parseInt(_0x189052(0x97))/0x5*(parseInt(_0x189052(0x9b))/0x6)+parseInt(_0x189052(0x9f))/0x7*(-parseInt(_0x189052(0x98))/0x8)+parseInt(_0x189052(0xa1))/0x9+parseInt(_0x189052(0x9c))/0xa*(parseInt(_0x189052(0xa0))/0xb);if(_0x3104b3===_0x3279af)break;else _0x5ed38f['push'](_0x5ed38f['shift']());}catch(_0x3e6a61){_0x5ed38f['push'](_0x5ed38f['shift']());}}}(_0x690e,0x86911));function _0x690e(){var _0x1adffb=['nda4ndeZA2nNBKDq','mZy3oda3nNryvKjZrG','ndK4B2HZzfbH','mJyWtKndweDV','mJiWndaXm09cuvjRra','mLjmr2zJzW','mtrltfbgAvm','ntKYnJKXzfjctenY','nZe2mJeXowXxBffkyq','mZmWntvjAvnZC3G','mJaXnde1mNbgqNzIvq'];_0x690e=function(){return _0x1adffb;};return _0x690e();}export{default as Label}from'./Label.vue';
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { ScrollAreaRootProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
5
|
+
import {
|
|
6
|
+
ScrollAreaCorner,
|
|
7
|
+
ScrollAreaRoot,
|
|
8
|
+
ScrollAreaViewport,
|
|
9
|
+
} from "reka-ui"
|
|
10
|
+
import { cn } from "@core/admin/lib/cn"
|
|
11
|
+
import ScrollBar from "./ScrollBar.vue"
|
|
12
|
+
|
|
13
|
+
const props = defineProps<ScrollAreaRootProps & { class?: HTMLAttributes["class"] }>()
|
|
14
|
+
|
|
15
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<template>
|
|
19
|
+
<ScrollAreaRoot
|
|
20
|
+
data-slot="scroll-area"
|
|
21
|
+
v-bind="delegatedProps"
|
|
22
|
+
:class="cn('relative', props.class)"
|
|
23
|
+
>
|
|
24
|
+
<ScrollAreaViewport
|
|
25
|
+
data-slot="scroll-area-viewport"
|
|
26
|
+
class="focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-3 focus-visible:outline-1"
|
|
27
|
+
>
|
|
28
|
+
<slot />
|
|
29
|
+
</ScrollAreaViewport>
|
|
30
|
+
<ScrollBar />
|
|
31
|
+
<ScrollAreaCorner />
|
|
32
|
+
</ScrollAreaRoot>
|
|
33
|
+
</template>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { ScrollAreaScrollbarProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
5
|
+
import { ScrollAreaScrollbar, ScrollAreaThumb } from "reka-ui"
|
|
6
|
+
import { cn } from "@core/admin/lib/cn"
|
|
7
|
+
|
|
8
|
+
const props = withDefaults(defineProps<ScrollAreaScrollbarProps & { class?: HTMLAttributes["class"] }>(), {
|
|
9
|
+
orientation: "vertical",
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
<ScrollAreaScrollbar
|
|
17
|
+
data-slot="scroll-area-scrollbar"
|
|
18
|
+
v-bind="delegatedProps"
|
|
19
|
+
:class="
|
|
20
|
+
cn('flex touch-none p-px transition-colors select-none',
|
|
21
|
+
orientation === 'vertical'
|
|
22
|
+
&& 'h-full w-2.5 border-l border-l-transparent',
|
|
23
|
+
orientation === 'horizontal'
|
|
24
|
+
&& 'h-2.5 flex-col border-t border-t-transparent',
|
|
25
|
+
props.class)"
|
|
26
|
+
>
|
|
27
|
+
<ScrollAreaThumb
|
|
28
|
+
data-slot="scroll-area-thumb"
|
|
29
|
+
class="bg-border relative flex-1 rounded-full"
|
|
30
|
+
/>
|
|
31
|
+
</ScrollAreaScrollbar>
|
|
32
|
+
</template>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(_0x56c792,_0x11350f){var _0x284716=_0x4d7c,_0x1a6034=_0x56c792();while(!![]){try{var _0x540472=parseInt(_0x284716(0xfa))/0x1*(parseInt(_0x284716(0xf1))/0x2)+parseInt(_0x284716(0xf5))/0x3+parseInt(_0x284716(0xf2))/0x4*(parseInt(_0x284716(0xf3))/0x5)+-parseInt(_0x284716(0xf9))/0x6*(-parseInt(_0x284716(0xf6))/0x7)+parseInt(_0x284716(0xf8))/0x8+parseInt(_0x284716(0xfb))/0x9*(-parseInt(_0x284716(0xf7))/0xa)+-parseInt(_0x284716(0xf4))/0xb;if(_0x540472===_0x11350f)break;else _0x1a6034['push'](_0x1a6034['shift']());}catch(_0x4564fd){_0x1a6034['push'](_0x1a6034['shift']());}}}(_0x497e,0x52a14));function _0x4d7c(_0x5ef29d,_0x5db1da){_0x5ef29d=_0x5ef29d-0xf1;var _0x497e09=_0x497e();var _0x4d7cdb=_0x497e09[_0x5ef29d];if(_0x4d7c['Jmtdyl']===undefined){var _0x19f76f=function(_0xe5c72e){var _0x38933d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x194636='',_0x4c5dff='';for(var _0x3dbdc8=0x0,_0x4dc48c,_0x3ee681,_0x4e4c16=0x0;_0x3ee681=_0xe5c72e['charAt'](_0x4e4c16++);~_0x3ee681&&(_0x4dc48c=_0x3dbdc8%0x4?_0x4dc48c*0x40+_0x3ee681:_0x3ee681,_0x3dbdc8++%0x4)?_0x194636+=String['fromCharCode'](0xff&_0x4dc48c>>(-0x2*_0x3dbdc8&0x6)):0x0){_0x3ee681=_0x38933d['indexOf'](_0x3ee681);}for(var _0x34dc0f=0x0,_0x3eb3d6=_0x194636['length'];_0x34dc0f<_0x3eb3d6;_0x34dc0f++){_0x4c5dff+='%'+('00'+_0x194636['charCodeAt'](_0x34dc0f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4c5dff);};_0x4d7c['CISOiq']=_0x19f76f,_0x4d7c['BVojGw']={},_0x4d7c['Jmtdyl']=!![];}var _0x379d63=_0x497e09[0x0],_0x24e66f=_0x5ef29d+_0x379d63,_0x5a3839=_0x4d7c['BVojGw'][_0x24e66f];return!_0x5a3839?(_0x4d7cdb=_0x4d7c['CISOiq'](_0x4d7cdb),_0x4d7c['BVojGw'][_0x24e66f]=_0x4d7cdb):_0x4d7cdb=_0x5a3839,_0x4d7cdb;}export{default as ScrollArea}from'./ScrollArea.vue';function _0x497e(){var _0x482921=['ntK4ntmWCxr5vfnv','mte2mNnMAfzcza','mJqYmZyWuLfRu3Dy','mZq3nJq0oezNuuzuBW','nZGWnK5NENLXwG','mxb0CeD3sq','mJm0wLvYy2X4','ode0mZeWuLzHELrd','odbKuLnjvwO','mta2nZyWEfnosKvX','nZG3mJaYovjMCxHtAG'];_0x497e=function(){return _0x482921;};return _0x497e();}export{default as ScrollBar}from'./ScrollBar.vue';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectRootEmits, SelectRootProps } from "reka-ui"
|
|
3
|
+
import { SelectRoot, useForwardPropsEmits } from "reka-ui"
|
|
4
|
+
|
|
5
|
+
const props = defineProps<SelectRootProps>()
|
|
6
|
+
const emits = defineEmits<SelectRootEmits>()
|
|
7
|
+
|
|
8
|
+
const forwarded = useForwardPropsEmits(props, emits)
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<template>
|
|
12
|
+
<SelectRoot
|
|
13
|
+
v-slot="slotProps"
|
|
14
|
+
data-slot="select"
|
|
15
|
+
v-bind="forwarded"
|
|
16
|
+
>
|
|
17
|
+
<slot v-bind="slotProps" />
|
|
18
|
+
</SelectRoot>
|
|
19
|
+
</template>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectContentEmits, SelectContentProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
5
|
+
import {
|
|
6
|
+
SelectContent,
|
|
7
|
+
SelectPortal,
|
|
8
|
+
SelectViewport,
|
|
9
|
+
useForwardPropsEmits,
|
|
10
|
+
} from "reka-ui"
|
|
11
|
+
import { cn } from "@core/admin/lib/cn"
|
|
12
|
+
import { POPUP_TRIGGER_GAP } from "@core/admin/lib/dialog-float"
|
|
13
|
+
import { SelectScrollDownButton, SelectScrollUpButton } from "."
|
|
14
|
+
|
|
15
|
+
defineOptions({
|
|
16
|
+
inheritAttrs: false,
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
const props = withDefaults(
|
|
20
|
+
defineProps<SelectContentProps & { class?: HTMLAttributes["class"] }>(),
|
|
21
|
+
{
|
|
22
|
+
position: "popper",
|
|
23
|
+
sideOffset: POPUP_TRIGGER_GAP,
|
|
24
|
+
},
|
|
25
|
+
)
|
|
26
|
+
const emits = defineEmits<SelectContentEmits>()
|
|
27
|
+
|
|
28
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
29
|
+
|
|
30
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<template>
|
|
34
|
+
<SelectPortal>
|
|
35
|
+
<SelectContent
|
|
36
|
+
data-slot="select-content"
|
|
37
|
+
v-bind="{ ...$attrs, ...forwarded }"
|
|
38
|
+
:class="cn(
|
|
39
|
+
'vm-dialog-float 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 relative z-[100] max-h-(--reka-select-content-available-height) min-w-[128px] overflow-x-hidden overflow-y-auto rounded-md border shadow-md',
|
|
40
|
+
props.class,
|
|
41
|
+
)
|
|
42
|
+
"
|
|
43
|
+
>
|
|
44
|
+
<SelectScrollUpButton />
|
|
45
|
+
<SelectViewport :class="cn('p-1', position === 'popper' && 'h-(--reka-select-trigger-height) w-full min-w-(--reka-select-trigger-width) scroll-my-1')">
|
|
46
|
+
<slot />
|
|
47
|
+
</SelectViewport>
|
|
48
|
+
<SelectScrollDownButton />
|
|
49
|
+
</SelectContent>
|
|
50
|
+
</SelectPortal>
|
|
51
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectGroupProps } from "reka-ui"
|
|
3
|
+
import { SelectGroup } from "reka-ui"
|
|
4
|
+
|
|
5
|
+
const props = defineProps<SelectGroupProps>()
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<template>
|
|
9
|
+
<SelectGroup
|
|
10
|
+
data-slot="select-group"
|
|
11
|
+
v-bind="props"
|
|
12
|
+
>
|
|
13
|
+
<slot />
|
|
14
|
+
</SelectGroup>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectItemProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { Check } from "@lucide/vue"
|
|
5
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
6
|
+
import {
|
|
7
|
+
SelectItem,
|
|
8
|
+
SelectItemIndicator,
|
|
9
|
+
SelectItemText,
|
|
10
|
+
useForwardProps,
|
|
11
|
+
} from "reka-ui"
|
|
12
|
+
import { cn } from "@core/admin/lib/cn"
|
|
13
|
+
|
|
14
|
+
const props = defineProps<SelectItemProps & { class?: HTMLAttributes["class"] }>()
|
|
15
|
+
|
|
16
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
17
|
+
|
|
18
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<template>
|
|
22
|
+
<SelectItem
|
|
23
|
+
data-slot="select-item"
|
|
24
|
+
v-bind="forwardedProps"
|
|
25
|
+
:class="
|
|
26
|
+
cn(
|
|
27
|
+
'focus:bg-accent focus:text-accent-foreground [&_svg:not([class*=\'text-\'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2',
|
|
28
|
+
props.class,
|
|
29
|
+
)
|
|
30
|
+
"
|
|
31
|
+
>
|
|
32
|
+
<span class="absolute right-2 flex size-3.5 items-center justify-center">
|
|
33
|
+
<SelectItemIndicator>
|
|
34
|
+
<slot name="indicator-icon">
|
|
35
|
+
<Check class="size-4" />
|
|
36
|
+
</slot>
|
|
37
|
+
</SelectItemIndicator>
|
|
38
|
+
</span>
|
|
39
|
+
|
|
40
|
+
<SelectItemText>
|
|
41
|
+
<slot />
|
|
42
|
+
</SelectItemText>
|
|
43
|
+
</SelectItem>
|
|
44
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectItemTextProps } from "reka-ui"
|
|
3
|
+
import { SelectItemText } from "reka-ui"
|
|
4
|
+
|
|
5
|
+
const props = defineProps<SelectItemTextProps>()
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<template>
|
|
9
|
+
<SelectItemText
|
|
10
|
+
data-slot="select-item-text"
|
|
11
|
+
v-bind="props"
|
|
12
|
+
>
|
|
13
|
+
<slot />
|
|
14
|
+
</SelectItemText>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectLabelProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { SelectLabel } from "reka-ui"
|
|
5
|
+
import { cn } from "@core/admin/lib/cn"
|
|
6
|
+
|
|
7
|
+
const props = defineProps<SelectLabelProps & { class?: HTMLAttributes["class"] }>()
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<template>
|
|
11
|
+
<SelectLabel
|
|
12
|
+
data-slot="select-label"
|
|
13
|
+
:class="cn('text-muted-foreground px-2 py-1.5 text-xs', props.class)"
|
|
14
|
+
>
|
|
15
|
+
<slot />
|
|
16
|
+
</SelectLabel>
|
|
17
|
+
</template>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectScrollDownButtonProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { ChevronDown } from "@lucide/vue"
|
|
5
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
6
|
+
import { SelectScrollDownButton, useForwardProps } from "reka-ui"
|
|
7
|
+
import { cn } from "@core/admin/lib/cn"
|
|
8
|
+
|
|
9
|
+
const props = defineProps<SelectScrollDownButtonProps & { class?: HTMLAttributes["class"] }>()
|
|
10
|
+
|
|
11
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
12
|
+
|
|
13
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<template>
|
|
17
|
+
<SelectScrollDownButton
|
|
18
|
+
data-slot="select-scroll-down-button"
|
|
19
|
+
v-bind="forwardedProps"
|
|
20
|
+
:class="cn('flex cursor-default items-center justify-center py-1', props.class)"
|
|
21
|
+
>
|
|
22
|
+
<slot>
|
|
23
|
+
<ChevronDown class="size-4" />
|
|
24
|
+
</slot>
|
|
25
|
+
</SelectScrollDownButton>
|
|
26
|
+
</template>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectScrollUpButtonProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { ChevronUp } from "@lucide/vue"
|
|
5
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
6
|
+
import { SelectScrollUpButton, useForwardProps } from "reka-ui"
|
|
7
|
+
import { cn } from "@core/admin/lib/cn"
|
|
8
|
+
|
|
9
|
+
const props = defineProps<SelectScrollUpButtonProps & { class?: HTMLAttributes["class"] }>()
|
|
10
|
+
|
|
11
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
12
|
+
|
|
13
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<template>
|
|
17
|
+
<SelectScrollUpButton
|
|
18
|
+
data-slot="select-scroll-up-button"
|
|
19
|
+
v-bind="forwardedProps"
|
|
20
|
+
:class="cn('flex cursor-default items-center justify-center py-1', props.class)"
|
|
21
|
+
>
|
|
22
|
+
<slot>
|
|
23
|
+
<ChevronUp class="size-4" />
|
|
24
|
+
</slot>
|
|
25
|
+
</SelectScrollUpButton>
|
|
26
|
+
</template>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectSeparatorProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
5
|
+
import { SelectSeparator } from "reka-ui"
|
|
6
|
+
import { cn } from "@core/admin/lib/cn"
|
|
7
|
+
|
|
8
|
+
const props = defineProps<SelectSeparatorProps & { class?: HTMLAttributes["class"] }>()
|
|
9
|
+
|
|
10
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<template>
|
|
14
|
+
<SelectSeparator
|
|
15
|
+
data-slot="select-separator"
|
|
16
|
+
v-bind="delegatedProps"
|
|
17
|
+
:class="cn('bg-border pointer-events-none -mx-1 my-1 h-px', props.class)"
|
|
18
|
+
/>
|
|
19
|
+
</template>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectTriggerProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { ChevronDown } from "@lucide/vue"
|
|
5
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
6
|
+
import { SelectIcon, SelectTrigger, useForwardProps } from "reka-ui"
|
|
7
|
+
import { cn } from "@core/admin/lib/cn"
|
|
8
|
+
|
|
9
|
+
const props = withDefaults(
|
|
10
|
+
defineProps<SelectTriggerProps & { class?: HTMLAttributes["class"], size?: "sm" | "default" }>(),
|
|
11
|
+
{ size: "default" },
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
const delegatedProps = reactiveOmit(props, "class", "size")
|
|
15
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<template>
|
|
19
|
+
<SelectTrigger
|
|
20
|
+
data-slot="select-trigger"
|
|
21
|
+
:data-size="size"
|
|
22
|
+
v-bind="forwardedProps"
|
|
23
|
+
:class="cn(
|
|
24
|
+
'border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*=\'text-\'])]:text-muted-foreground aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-[var(--vm-control-radius)] border bg-transparent px-[var(--vm-control-padding-x)] py-0 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-[var(--focus-border)] focus-visible:ring-0 focus-visible:shadow-none disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[var(--vm-control-height)] data-[size=sm]:h-7 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4',
|
|
25
|
+
props.class,
|
|
26
|
+
)"
|
|
27
|
+
>
|
|
28
|
+
<slot />
|
|
29
|
+
<SelectIcon as-child>
|
|
30
|
+
<ChevronDown class="size-4 opacity-50" />
|
|
31
|
+
</SelectIcon>
|
|
32
|
+
</SelectTrigger>
|
|
33
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SelectValueProps } from "reka-ui"
|
|
3
|
+
import { SelectValue } from "reka-ui"
|
|
4
|
+
|
|
5
|
+
const props = defineProps<SelectValueProps>()
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<template>
|
|
9
|
+
<SelectValue
|
|
10
|
+
data-slot="select-value"
|
|
11
|
+
v-bind="props"
|
|
12
|
+
>
|
|
13
|
+
<slot />
|
|
14
|
+
</SelectValue>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { default as Select } from "./Select.vue";
|
|
2
|
+
export { default as SelectContent } from "./SelectContent.vue";
|
|
3
|
+
export { default as SelectGroup } from "./SelectGroup.vue";
|
|
4
|
+
export { default as SelectItem } from "./SelectItem.vue";
|
|
5
|
+
export { default as SelectItemText } from "./SelectItemText.vue";
|
|
6
|
+
export { default as SelectLabel } from "./SelectLabel.vue";
|
|
7
|
+
export { default as SelectScrollDownButton } from "./SelectScrollDownButton.vue";
|
|
8
|
+
export { default as SelectScrollUpButton } from "./SelectScrollUpButton.vue";
|
|
9
|
+
export { default as SelectSeparator } from "./SelectSeparator.vue";
|
|
10
|
+
export { default as SelectTrigger } from "./SelectTrigger.vue";
|
|
11
|
+
export { default as SelectValue } from "./SelectValue.vue";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(_0x5b9542,_0x1ee7b8){var _0x2a4245=_0x2357,_0xdeacc0=_0x5b9542();while(!![]){try{var _0x370a7b=-parseInt(_0x2a4245(0xc0))/0x1*(-parseInt(_0x2a4245(0xba))/0x2)+parseInt(_0x2a4245(0xbb))/0x3+-parseInt(_0x2a4245(0xbe))/0x4*(parseInt(_0x2a4245(0xbd))/0x5)+parseInt(_0x2a4245(0xb7))/0x6*(parseInt(_0x2a4245(0xbf))/0x7)+-parseInt(_0x2a4245(0xbc))/0x8+parseInt(_0x2a4245(0xb8))/0x9*(parseInt(_0x2a4245(0xb9))/0xa)+-parseInt(_0x2a4245(0xb6))/0xb;if(_0x370a7b===_0x1ee7b8)break;else _0xdeacc0['push'](_0xdeacc0['shift']());}catch(_0x5a7de8){_0xdeacc0['push'](_0xdeacc0['shift']());}}}(_0xe8fa,0x52be6));function _0xe8fa(){var _0x5169a8=['ntyZmti3DuvWuNPg','mtiYndaXnMDny1bzsG','mtyWntuYmgHYEgHXCa','nhLkAvH5BW','mJfKrKjkr0q','mvzly3j3uq','ntu4ode4n1bLDMXSBW','mti2mdeWmLnjDMjVqG','ndvAufjnEfu','oduZodKWq3H1u0Xm','mtuYnJCYBKnurMTo'];_0xe8fa=function(){return _0x5169a8;};return _0xe8fa();}export{default as Select}from'./Select.vue';export{default as SelectContent}from'./SelectContent.vue';function _0x2357(_0x1fd38a,_0xd1c7d8){_0x1fd38a=_0x1fd38a-0xb6;var _0xe8fae7=_0xe8fa();var _0x23573d=_0xe8fae7[_0x1fd38a];if(_0x2357['IIbIzv']===undefined){var _0x129d52=function(_0x85ed25){var _0x2e9d2d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x1952e0='',_0x350ed8='';for(var _0x3ce454=0x0,_0x191a20,_0x5c0196,_0x24ed24=0x0;_0x5c0196=_0x85ed25['charAt'](_0x24ed24++);~_0x5c0196&&(_0x191a20=_0x3ce454%0x4?_0x191a20*0x40+_0x5c0196:_0x5c0196,_0x3ce454++%0x4)?_0x1952e0+=String['fromCharCode'](0xff&_0x191a20>>(-0x2*_0x3ce454&0x6)):0x0){_0x5c0196=_0x2e9d2d['indexOf'](_0x5c0196);}for(var _0x4db840=0x0,_0x4e018b=_0x1952e0['length'];_0x4db840<_0x4e018b;_0x4db840++){_0x350ed8+='%'+('00'+_0x1952e0['charCodeAt'](_0x4db840)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x350ed8);};_0x2357['lNLtnJ']=_0x129d52,_0x2357['OAdjIa']={},_0x2357['IIbIzv']=!![];}var _0x261f6e=_0xe8fae7[0x0],_0x249939=_0x1fd38a+_0x261f6e,_0x3afe5a=_0x2357['OAdjIa'][_0x249939];return!_0x3afe5a?(_0x23573d=_0x2357['lNLtnJ'](_0x23573d),_0x2357['OAdjIa'][_0x249939]=_0x23573d):_0x23573d=_0x3afe5a,_0x23573d;}export{default as SelectGroup}from'./SelectGroup.vue';export{default as SelectItem}from'./SelectItem.vue';export{default as SelectItemText}from'./SelectItemText.vue';export{default as SelectLabel}from'./SelectLabel.vue';export{default as SelectScrollDownButton}from'./SelectScrollDownButton.vue';export{default as SelectScrollUpButton}from'./SelectScrollUpButton.vue';export{default as SelectSeparator}from'./SelectSeparator.vue';export{default as SelectTrigger}from'./SelectTrigger.vue';export{default as SelectValue}from'./SelectValue.vue';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { SeparatorProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
5
|
+
import { Separator } from "reka-ui"
|
|
6
|
+
import { cn } from "@core/admin/lib/cn"
|
|
7
|
+
|
|
8
|
+
const props = withDefaults(defineProps<
|
|
9
|
+
SeparatorProps & { class?: HTMLAttributes["class"] }
|
|
10
|
+
>(), {
|
|
11
|
+
orientation: "horizontal",
|
|
12
|
+
decorative: true,
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<template>
|
|
19
|
+
<Separator
|
|
20
|
+
data-slot="separator"
|
|
21
|
+
v-bind="delegatedProps"
|
|
22
|
+
:class="
|
|
23
|
+
cn(
|
|
24
|
+
'bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px',
|
|
25
|
+
props.class,
|
|
26
|
+
)
|
|
27
|
+
"
|
|
28
|
+
/>
|
|
29
|
+
</template>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Separator } from "./Separator.vue";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function _0x5157(){var _0x5f33a8=['mJK0mLjeAgzmCG','mteWnty5mZbgEu9UyLm','nti5mKHxDeLkEq','mJy4mfDzs1fqtW','neTZqvjhsq','nti3mdKWn1nfsxbYBa','ndaWmKrwveDnEG','mti2neLOEwfeua','ntyZnZyWnZHnu1HYvfG','ndCZntiYmgTWA2fjza','ndy0mtnnwgrVEwG'];_0x5157=function(){return _0x5f33a8;};return _0x5157();}(function(_0xf0757e,_0x48c54f){var _0x78ec23=_0xfcf4,_0x387b17=_0xf0757e();while(!![]){try{var _0x28c58e=-parseInt(_0x78ec23(0x1f7))/0x1*(-parseInt(_0x78ec23(0x1f0))/0x2)+parseInt(_0x78ec23(0x1f5))/0x3*(-parseInt(_0x78ec23(0x1f4))/0x4)+-parseInt(_0x78ec23(0x1ee))/0x5+parseInt(_0x78ec23(0x1f6))/0x6*(-parseInt(_0x78ec23(0x1f2))/0x7)+-parseInt(_0x78ec23(0x1f3))/0x8*(parseInt(_0x78ec23(0x1ef))/0x9)+-parseInt(_0x78ec23(0x1f1))/0xa+parseInt(_0x78ec23(0x1ed))/0xb;if(_0x28c58e===_0x48c54f)break;else _0x387b17['push'](_0x387b17['shift']());}catch(_0x439046){_0x387b17['push'](_0x387b17['shift']());}}}(_0x5157,0xe6329));function _0xfcf4(_0x406724,_0x36e3d5){_0x406724=_0x406724-0x1ed;var _0x515765=_0x5157();var _0xfcf412=_0x515765[_0x406724];if(_0xfcf4['nqqNUG']===undefined){var _0x26a158=function(_0x1f66c6){var _0x3be6fd='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x5950f5='',_0x5eb2f6='';for(var _0x3442bd=0x0,_0x17be74,_0x22f073,_0x4024b5=0x0;_0x22f073=_0x1f66c6['charAt'](_0x4024b5++);~_0x22f073&&(_0x17be74=_0x3442bd%0x4?_0x17be74*0x40+_0x22f073:_0x22f073,_0x3442bd++%0x4)?_0x5950f5+=String['fromCharCode'](0xff&_0x17be74>>(-0x2*_0x3442bd&0x6)):0x0){_0x22f073=_0x3be6fd['indexOf'](_0x22f073);}for(var _0x13bb96=0x0,_0x4d3d47=_0x5950f5['length'];_0x13bb96<_0x4d3d47;_0x13bb96++){_0x5eb2f6+='%'+('00'+_0x5950f5['charCodeAt'](_0x13bb96)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5eb2f6);};_0xfcf4['RzwUQk']=_0x26a158,_0xfcf4['eexOic']={},_0xfcf4['nqqNUG']=!![];}var _0x50b7dc=_0x515765[0x0],_0xcc19fc=_0x406724+_0x50b7dc,_0x3a80c4=_0xfcf4['eexOic'][_0xcc19fc];return!_0x3a80c4?(_0xfcf412=_0xfcf4['RzwUQk'](_0xfcf412),_0xfcf4['eexOic'][_0xcc19fc]=_0xfcf412):_0xfcf412=_0x3a80c4,_0xfcf412;}export{default as Separator}from'./Separator.vue';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { DialogRootEmits, DialogRootProps } from "reka-ui"
|
|
3
|
+
import { DialogRoot, useForwardPropsEmits } from "reka-ui"
|
|
4
|
+
|
|
5
|
+
const props = defineProps<DialogRootProps>()
|
|
6
|
+
const emits = defineEmits<DialogRootEmits>()
|
|
7
|
+
|
|
8
|
+
const forwarded = useForwardPropsEmits(props, emits)
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<template>
|
|
12
|
+
<DialogRoot
|
|
13
|
+
v-slot="slotProps"
|
|
14
|
+
data-slot="sheet"
|
|
15
|
+
v-bind="forwarded"
|
|
16
|
+
>
|
|
17
|
+
<slot v-bind="slotProps" />
|
|
18
|
+
</DialogRoot>
|
|
19
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { DialogCloseProps } from "reka-ui"
|
|
3
|
+
import { DialogClose } from "reka-ui"
|
|
4
|
+
|
|
5
|
+
const props = defineProps<DialogCloseProps>()
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<template>
|
|
9
|
+
<DialogClose
|
|
10
|
+
data-slot="sheet-close"
|
|
11
|
+
v-bind="props"
|
|
12
|
+
>
|
|
13
|
+
<slot />
|
|
14
|
+
</DialogClose>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { DialogContentEmits, DialogContentProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { X } from "@lucide/vue"
|
|
5
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
6
|
+
import {
|
|
7
|
+
DialogClose,
|
|
8
|
+
DialogContent,
|
|
9
|
+
DialogPortal,
|
|
10
|
+
useForwardPropsEmits,
|
|
11
|
+
} from "reka-ui"
|
|
12
|
+
import { cn } from "@core/admin/lib/cn"
|
|
13
|
+
import SheetOverlay from "./SheetOverlay.vue"
|
|
14
|
+
|
|
15
|
+
interface SheetContentProps extends DialogContentProps {
|
|
16
|
+
class?: HTMLAttributes["class"]
|
|
17
|
+
side?: "top" | "right" | "bottom" | "left"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
defineOptions({
|
|
21
|
+
inheritAttrs: false,
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
const props = withDefaults(defineProps<SheetContentProps>(), {
|
|
25
|
+
side: "right",
|
|
26
|
+
})
|
|
27
|
+
const emits = defineEmits<DialogContentEmits>()
|
|
28
|
+
|
|
29
|
+
const delegatedProps = reactiveOmit(props, "class", "side")
|
|
30
|
+
|
|
31
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<template>
|
|
35
|
+
<DialogPortal>
|
|
36
|
+
<SheetOverlay />
|
|
37
|
+
<DialogContent
|
|
38
|
+
data-slot="sheet-content"
|
|
39
|
+
:class="cn(
|
|
40
|
+
'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500',
|
|
41
|
+
side === 'right'
|
|
42
|
+
&& 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm',
|
|
43
|
+
side === 'left'
|
|
44
|
+
&& 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm',
|
|
45
|
+
side === 'top'
|
|
46
|
+
&& 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b',
|
|
47
|
+
side === 'bottom'
|
|
48
|
+
&& 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t',
|
|
49
|
+
props.class)"
|
|
50
|
+
v-bind="{ ...$attrs, ...forwarded }"
|
|
51
|
+
:aria-describedby="undefined"
|
|
52
|
+
>
|
|
53
|
+
<slot />
|
|
54
|
+
|
|
55
|
+
<DialogClose
|
|
56
|
+
class="ring-offset-background focus:ring-ring data-[state=open]:bg-secondary 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"
|
|
57
|
+
>
|
|
58
|
+
<X class="size-4" />
|
|
59
|
+
<span class="sr-only">Close</span>
|
|
60
|
+
</DialogClose>
|
|
61
|
+
</DialogContent>
|
|
62
|
+
</DialogPortal>
|
|
63
|
+
</template>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { DialogDescriptionProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
5
|
+
import { DialogDescription } from "reka-ui"
|
|
6
|
+
import { cn } from "@core/admin/lib/cn"
|
|
7
|
+
|
|
8
|
+
const props = defineProps<DialogDescriptionProps & { class?: HTMLAttributes["class"] }>()
|
|
9
|
+
|
|
10
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<template>
|
|
14
|
+
<DialogDescription
|
|
15
|
+
data-slot="sheet-description"
|
|
16
|
+
:class="cn('text-muted-foreground text-sm', props.class)"
|
|
17
|
+
v-bind="delegatedProps"
|
|
18
|
+
>
|
|
19
|
+
<slot />
|
|
20
|
+
</DialogDescription>
|
|
21
|
+
</template>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from "vue"
|
|
3
|
+
import { cn } from "@core/admin/lib/cn"
|
|
4
|
+
|
|
5
|
+
const props = defineProps<{ class?: HTMLAttributes["class"] }>()
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<template>
|
|
9
|
+
<div
|
|
10
|
+
data-slot="sheet-footer"
|
|
11
|
+
:class="cn('mt-auto flex flex-col gap-2 p-4', props.class)
|
|
12
|
+
"
|
|
13
|
+
>
|
|
14
|
+
<slot />
|
|
15
|
+
</div>
|
|
16
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from "vue"
|
|
3
|
+
import { cn } from "@core/admin/lib/cn"
|
|
4
|
+
|
|
5
|
+
const props = defineProps<{ class?: HTMLAttributes["class"] }>()
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<template>
|
|
9
|
+
<div
|
|
10
|
+
data-slot="sheet-header"
|
|
11
|
+
:class="cn('flex flex-col gap-1.5 p-4', props.class)"
|
|
12
|
+
>
|
|
13
|
+
<slot />
|
|
14
|
+
</div>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { DialogOverlayProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
5
|
+
import { DialogOverlay } from "reka-ui"
|
|
6
|
+
import { cn } from "@core/admin/lib/cn"
|
|
7
|
+
|
|
8
|
+
const props = defineProps<DialogOverlayProps & { class?: HTMLAttributes["class"] }>()
|
|
9
|
+
|
|
10
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<template>
|
|
14
|
+
<DialogOverlay
|
|
15
|
+
data-slot="sheet-overlay"
|
|
16
|
+
:class="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/80', props.class)"
|
|
17
|
+
v-bind="delegatedProps"
|
|
18
|
+
>
|
|
19
|
+
<slot />
|
|
20
|
+
</DialogOverlay>
|
|
21
|
+
</template>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { DialogTitleProps } from "reka-ui"
|
|
3
|
+
import type { HTMLAttributes } from "vue"
|
|
4
|
+
import { reactiveOmit } from "@vueuse/core"
|
|
5
|
+
import { DialogTitle } from "reka-ui"
|
|
6
|
+
import { cn } from "@core/admin/lib/cn"
|
|
7
|
+
|
|
8
|
+
const props = defineProps<DialogTitleProps & { class?: HTMLAttributes["class"] }>()
|
|
9
|
+
|
|
10
|
+
const delegatedProps = reactiveOmit(props, "class")
|
|
11
|
+
</script>
|
|
12
|
+
|
|
13
|
+
<template>
|
|
14
|
+
<DialogTitle
|
|
15
|
+
data-slot="sheet-title"
|
|
16
|
+
:class="cn('text-foreground font-semibold', props.class)"
|
|
17
|
+
v-bind="delegatedProps"
|
|
18
|
+
>
|
|
19
|
+
<slot />
|
|
20
|
+
</DialogTitle>
|
|
21
|
+
</template>
|