vome-core 0.1.77 → 0.1.79

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.
Files changed (203) hide show
  1. package/dist/admin/api/client.js +2 -3
  2. package/dist/admin/components/layout/vm-app-header.vue +341 -0
  3. package/dist/admin/components/layout/vm-app-sidebar.vue +187 -0
  4. package/dist/admin/components/layout/vm-sidebar-flyout.vue +268 -0
  5. package/dist/admin/components/layout/vm-sidebar-nav-item.vue +490 -0
  6. package/dist/admin/components/layout/vm-sidebar-nav.vue +104 -0
  7. package/dist/admin/components/layout/vm-tags-view.vue +233 -0
  8. package/dist/admin/components/ui/avatar/Avatar.vue +18 -0
  9. package/dist/admin/components/ui/avatar/AvatarFallback.vue +21 -0
  10. package/dist/admin/components/ui/avatar/AvatarImage.vue +16 -0
  11. package/dist/admin/components/ui/avatar/index.d.ts +3 -0
  12. package/dist/admin/components/ui/avatar/index.js +1 -0
  13. package/dist/admin/components/ui/badge/Badge.vue +26 -0
  14. package/dist/admin/components/ui/badge/index.d.ts +6 -0
  15. package/dist/admin/components/ui/badge/index.js +1 -0
  16. package/dist/admin/components/ui/button/Button.vue +31 -0
  17. package/dist/admin/components/ui/button/index.d.ts +7 -0
  18. package/dist/admin/components/ui/button/index.js +1 -0
  19. package/dist/admin/components/ui/checkbox/Checkbox.vue +35 -0
  20. package/dist/admin/components/ui/checkbox/index.d.ts +1 -0
  21. package/dist/admin/components/ui/checkbox/index.js +1 -0
  22. package/dist/admin/components/ui/dialog/Dialog.vue +19 -0
  23. package/dist/admin/components/ui/dialog/DialogClose.vue +15 -0
  24. package/dist/admin/components/ui/dialog/DialogContent.vue +135 -0
  25. package/dist/admin/components/ui/dialog/DialogDescription.vue +23 -0
  26. package/dist/admin/components/ui/dialog/DialogFooter.vue +27 -0
  27. package/dist/admin/components/ui/dialog/DialogHeader.vue +17 -0
  28. package/dist/admin/components/ui/dialog/DialogOverlay.vue +21 -0
  29. package/dist/admin/components/ui/dialog/DialogScrollContent.vue +60 -0
  30. package/dist/admin/components/ui/dialog/DialogTitle.vue +23 -0
  31. package/dist/admin/components/ui/dialog/DialogTrigger.vue +15 -0
  32. package/dist/admin/components/ui/dialog/index.d.ts +10 -0
  33. package/dist/admin/components/ui/dialog/index.js +1 -0
  34. package/dist/admin/components/ui/dropdown-menu/DropdownMenu.vue +19 -0
  35. package/dist/admin/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +39 -0
  36. package/dist/admin/components/ui/dropdown-menu/DropdownMenuContent.vue +39 -0
  37. package/dist/admin/components/ui/dropdown-menu/DropdownMenuGroup.vue +15 -0
  38. package/dist/admin/components/ui/dropdown-menu/DropdownMenuItem.vue +31 -0
  39. package/dist/admin/components/ui/dropdown-menu/DropdownMenuLabel.vue +23 -0
  40. package/dist/admin/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +21 -0
  41. package/dist/admin/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +40 -0
  42. package/dist/admin/components/ui/dropdown-menu/DropdownMenuSeparator.vue +23 -0
  43. package/dist/admin/components/ui/dropdown-menu/DropdownMenuShortcut.vue +17 -0
  44. package/dist/admin/components/ui/dropdown-menu/DropdownMenuSub.vue +18 -0
  45. package/dist/admin/components/ui/dropdown-menu/DropdownMenuSubContent.vue +27 -0
  46. package/dist/admin/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +31 -0
  47. package/dist/admin/components/ui/dropdown-menu/DropdownMenuTrigger.vue +17 -0
  48. package/dist/admin/components/ui/dropdown-menu/index.d.ts +15 -0
  49. package/dist/admin/components/ui/dropdown-menu/index.js +1 -0
  50. package/dist/admin/components/ui/input/Input.vue +34 -0
  51. package/dist/admin/components/ui/input/index.d.ts +1 -0
  52. package/dist/admin/components/ui/input/index.js +1 -0
  53. package/dist/admin/components/ui/label/Label.vue +26 -0
  54. package/dist/admin/components/ui/label/index.d.ts +1 -0
  55. package/dist/admin/components/ui/label/index.js +1 -0
  56. package/dist/admin/components/ui/scroll-area/ScrollArea.vue +33 -0
  57. package/dist/admin/components/ui/scroll-area/ScrollBar.vue +32 -0
  58. package/dist/admin/components/ui/scroll-area/index.d.ts +2 -0
  59. package/dist/admin/components/ui/scroll-area/index.js +1 -0
  60. package/dist/admin/components/ui/select/Select.vue +19 -0
  61. package/dist/admin/components/ui/select/SelectContent.vue +51 -0
  62. package/dist/admin/components/ui/select/SelectGroup.vue +15 -0
  63. package/dist/admin/components/ui/select/SelectItem.vue +44 -0
  64. package/dist/admin/components/ui/select/SelectItemText.vue +15 -0
  65. package/dist/admin/components/ui/select/SelectLabel.vue +17 -0
  66. package/dist/admin/components/ui/select/SelectScrollDownButton.vue +26 -0
  67. package/dist/admin/components/ui/select/SelectScrollUpButton.vue +26 -0
  68. package/dist/admin/components/ui/select/SelectSeparator.vue +19 -0
  69. package/dist/admin/components/ui/select/SelectTrigger.vue +33 -0
  70. package/dist/admin/components/ui/select/SelectValue.vue +15 -0
  71. package/dist/admin/components/ui/select/index.d.ts +11 -0
  72. package/dist/admin/components/ui/select/index.js +1 -0
  73. package/dist/admin/components/ui/separator/Separator.vue +29 -0
  74. package/dist/admin/components/ui/separator/index.d.ts +1 -0
  75. package/dist/admin/components/ui/separator/index.js +1 -0
  76. package/dist/admin/components/ui/sheet/Sheet.vue +19 -0
  77. package/dist/admin/components/ui/sheet/SheetClose.vue +15 -0
  78. package/dist/admin/components/ui/sheet/SheetContent.vue +63 -0
  79. package/dist/admin/components/ui/sheet/SheetDescription.vue +21 -0
  80. package/dist/admin/components/ui/sheet/SheetFooter.vue +16 -0
  81. package/dist/admin/components/ui/sheet/SheetHeader.vue +15 -0
  82. package/dist/admin/components/ui/sheet/SheetOverlay.vue +21 -0
  83. package/dist/admin/components/ui/sheet/SheetTitle.vue +21 -0
  84. package/dist/admin/components/ui/sheet/SheetTrigger.vue +15 -0
  85. package/dist/admin/components/ui/sheet/index.d.ts +8 -0
  86. package/dist/admin/components/ui/sheet/index.js +1 -0
  87. package/dist/admin/components/ui/sonner/Toaster.vue +117 -0
  88. package/dist/admin/components/ui/sonner/index.d.ts +1 -0
  89. package/dist/admin/components/ui/sonner/index.js +1 -0
  90. package/dist/admin/components/ui/table/Table.vue +16 -0
  91. package/dist/admin/components/ui/table/TableBody.vue +17 -0
  92. package/dist/admin/components/ui/table/TableCaption.vue +17 -0
  93. package/dist/admin/components/ui/table/TableCell.vue +22 -0
  94. package/dist/admin/components/ui/table/TableEmpty.vue +34 -0
  95. package/dist/admin/components/ui/table/TableFooter.vue +17 -0
  96. package/dist/admin/components/ui/table/TableHead.vue +17 -0
  97. package/dist/admin/components/ui/table/TableHeader.vue +17 -0
  98. package/dist/admin/components/ui/table/TableRow.vue +17 -0
  99. package/dist/admin/components/ui/table/index.d.ts +9 -0
  100. package/dist/admin/components/ui/table/index.js +1 -0
  101. package/dist/admin/components/ui/tabs/Tabs.vue +24 -0
  102. package/dist/admin/components/ui/tabs/TabsContent.vue +21 -0
  103. package/dist/admin/components/ui/tabs/TabsList.vue +24 -0
  104. package/dist/admin/components/ui/tabs/TabsTrigger.vue +26 -0
  105. package/dist/admin/components/ui/tabs/index.d.ts +4 -0
  106. package/dist/admin/components/ui/tabs/index.js +1 -0
  107. package/dist/admin/components/ui/tooltip/Tooltip.vue +19 -0
  108. package/dist/admin/components/ui/tooltip/TooltipContent.vue +34 -0
  109. package/dist/admin/components/ui/tooltip/TooltipProvider.vue +14 -0
  110. package/dist/admin/components/ui/tooltip/TooltipTrigger.vue +15 -0
  111. package/dist/admin/components/ui/tooltip/index.d.ts +4 -0
  112. package/dist/admin/components/ui/tooltip/index.js +1 -0
  113. package/dist/admin/crud/components/vm-color-picker.vue +0 -3
  114. package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
  115. package/dist/admin/crud/config.js +1 -1
  116. package/dist/admin/crud/confirm.d.ts +8 -0
  117. package/dist/admin/crud/confirm.js +1 -1
  118. package/dist/admin/crud/crud-page-request.js +1 -1
  119. package/dist/admin/crud/dict.js +1 -1
  120. package/dist/admin/crud/export-fetch.js +1 -1
  121. package/dist/admin/crud/key.js +1 -1
  122. package/dist/admin/crud/plugins.js +1 -1
  123. package/dist/admin/crud/span.js +1 -1
  124. package/dist/admin/crud/style.d.ts +4 -0
  125. package/dist/admin/crud/style.js +1 -1
  126. package/dist/admin/crud/validate.js +1 -1
  127. package/dist/admin/directives/perm.js +1 -1
  128. package/dist/admin/env.d.ts +0 -4
  129. package/dist/admin/hooks/useUpload.js +1 -1
  130. package/dist/admin/index.d.ts +11 -9
  131. package/dist/admin/index.js +16 -27
  132. package/dist/admin/lib/browser.js +1 -1
  133. package/dist/admin/lib/cn.js +1 -1
  134. package/dist/admin/lib/dialog-float.js +1 -1
  135. package/dist/admin/lib/document-title.d.ts +6 -0
  136. package/dist/admin/lib/document-title.js +1 -0
  137. package/dist/admin/lib/export-excel.js +1 -1
  138. package/dist/admin/lib/import-excel.js +1 -1
  139. package/dist/admin/lib/json.js +1 -1
  140. package/dist/admin/lib/menu.js +1 -1
  141. package/dist/admin/lib/micro-locale.d.ts +5 -0
  142. package/dist/admin/lib/micro-locale.js +1 -0
  143. package/dist/admin/lib/micro-theme.d.ts +14 -0
  144. package/dist/admin/lib/micro-theme.js +1 -0
  145. package/dist/admin/lib/setup-crud-defaults.d.ts +2 -0
  146. package/dist/admin/lib/setup-crud-defaults.js +1 -0
  147. package/dist/admin/lib/shell.d.ts +13 -0
  148. package/dist/admin/lib/shell.js +1 -0
  149. package/dist/admin/lib/theme-color-options.js +1 -1
  150. package/dist/admin/lib/tree.js +1 -1
  151. package/dist/admin/lib/upload.js +1 -1
  152. package/dist/admin/lib/video-frame.js +1 -1
  153. package/dist/admin/router/create.d.ts +16 -0
  154. package/dist/admin/router/create.js +1 -0
  155. package/dist/admin/router/guards.d.ts +6 -0
  156. package/dist/admin/router/guards.js +1 -0
  157. package/dist/admin/router/index.d.ts +5 -3
  158. package/dist/admin/router/index.js +5 -80
  159. package/dist/admin/router/menu-routes.d.ts +7 -2
  160. package/dist/admin/router/menu-routes.js +10 -12
  161. package/dist/admin/service/index.js +0 -3
  162. package/dist/admin/stores/dict.d.ts +13 -0
  163. package/dist/admin/stores/dict.js +1 -0
  164. package/dist/admin/stores/locale.d.ts +3 -0
  165. package/dist/admin/stores/locale.js +1 -0
  166. package/dist/admin/stores/theme.d.ts +1 -0
  167. package/dist/admin/stores/theme.js +1 -0
  168. package/dist/admin/themes/dark.d.ts +2 -0
  169. package/dist/admin/themes/dark.js +1 -0
  170. package/dist/admin/themes/index.d.ts +9 -0
  171. package/dist/admin/themes/index.js +1 -0
  172. package/dist/admin/themes/light.d.ts +2 -0
  173. package/dist/admin/themes/light.js +1 -0
  174. package/dist/client/configure.d.ts +3 -0
  175. package/dist/client/configure.js +8 -1
  176. package/dist/client/vite-admin.js +2 -4
  177. package/dist/client/vite-auto-import.js +4 -4
  178. package/dist/client/vite-resolve.d.ts +3 -3
  179. package/dist/client/vite-resolve.js +10 -15
  180. package/dist/ext/plugin-market-urls.d.ts +8 -0
  181. package/dist/index.js +1 -1
  182. package/dist/server/index.js +1 -1
  183. package/dist/shared/datetime-picker.js +1 -1
  184. package/dist/shared/excel.js +1 -1
  185. package/dist/shared/index.js +1 -1
  186. package/dist/shared/locale-json.js +1 -1
  187. package/dist/shared/tree.js +1 -1
  188. package/package.json +13 -4
  189. package/typings/admin/theme.ts +10 -0
  190. package/dist/admin/config/plugin-dev.d.ts +0 -52
  191. package/dist/admin/config/plugin-dev.js +0 -1
  192. package/dist/comm/chinese-segments.test.d.ts +0 -1
  193. package/dist/comm/path.test.d.ts +0 -1
  194. package/typings/admin/base/auth.d.ts +0 -21
  195. package/typings/admin/base/permission.d.ts +0 -19
  196. package/typings/admin/comm/crud.d.ts +0 -343
  197. package/typings/admin/comm/eps.d.ts +0 -66
  198. package/typings/admin/comm/request.d.ts +0 -13
  199. package/typings/admin/comm/service.d.ts +0 -48
  200. package/typings/admin/comm/upload.d.ts +0 -26
  201. package/typings/admin/host.d.ts +0 -66
  202. package/typings/admin/vome/browser.d.ts +0 -10
  203. package/typings/admin/vome/module.d.ts +0 -13
@@ -0,0 +1 @@
1
+ function _0x2a27(_0x408a86,_0x272113){_0x408a86=_0x408a86-0x120;var _0x283491=_0x2834();var _0x2a271c=_0x283491[_0x408a86];if(_0x2a27['mNTdeG']===undefined){var _0x1180f1=function(_0x2e9b41){var _0x4f1160='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x570115='',_0x5b07f2='';for(var _0xe754ce=0x0,_0x1425d5,_0x414039,_0x1efdd3=0x0;_0x414039=_0x2e9b41['charAt'](_0x1efdd3++);~_0x414039&&(_0x1425d5=_0xe754ce%0x4?_0x1425d5*0x40+_0x414039:_0x414039,_0xe754ce++%0x4)?_0x570115+=String['fromCharCode'](0xff&_0x1425d5>>(-0x2*_0xe754ce&0x6)):0x0){_0x414039=_0x4f1160['indexOf'](_0x414039);}for(var _0x47d51c=0x0,_0x487047=_0x570115['length'];_0x47d51c<_0x487047;_0x47d51c++){_0x5b07f2+='%'+('00'+_0x570115['charCodeAt'](_0x47d51c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5b07f2);};_0x2a27['eitpQh']=_0x1180f1,_0x2a27['LotFdK']={},_0x2a27['mNTdeG']=!![];}var _0x196a3a=_0x283491[0x0],_0x63b076=_0x408a86+_0x196a3a,_0x5e3a21=_0x2a27['LotFdK'][_0x63b076];return!_0x5e3a21?(_0x2a271c=_0x2a27['eitpQh'](_0x2a271c),_0x2a27['LotFdK'][_0x63b076]=_0x2a271c):_0x2a271c=_0x5e3a21,_0x2a271c;}(function(_0x4d5948,_0x356154){var _0x4172bd=_0x2a27,_0x58fd9a=_0x4d5948();while(!![]){try{var _0x38e913=-parseInt(_0x4172bd(0x12a))/0x1*(-parseInt(_0x4172bd(0x125))/0x2)+-parseInt(_0x4172bd(0x123))/0x3*(parseInt(_0x4172bd(0x12b))/0x4)+-parseInt(_0x4172bd(0x126))/0x5+parseInt(_0x4172bd(0x121))/0x6*(parseInt(_0x4172bd(0x120))/0x7)+parseInt(_0x4172bd(0x128))/0x8*(-parseInt(_0x4172bd(0x129))/0x9)+-parseInt(_0x4172bd(0x122))/0xa*(-parseInt(_0x4172bd(0x12c))/0xb)+parseInt(_0x4172bd(0x127))/0xc*(parseInt(_0x4172bd(0x124))/0xd);if(_0x38e913===_0x356154)break;else _0x58fd9a['push'](_0x58fd9a['shift']());}catch(_0x1c27b0){_0x58fd9a['push'](_0x58fd9a['shift']());}}}(_0x2834,0xe0dec));export{default as Label}from'./Label.vue';function _0x2834(){var _0x14a4d7=['mtuWn1zfvLzAsq','mZvlqw1KB20','ode0mJu0rMnODKfS','nJGWotbdqw5tzeW','ndq3odDdD3risvG','mZuWndHuCvDyAuy','nMTtvfvurG','ntmYmdm0nwrMuNbYuG','mJC5nLHszePnvG','nte2mdG3mKnnCLPoAa','ouzIvevIvq','ntu4mtK4D3DVqMfW','mZq0rxrIsNzu'];_0x2834=function(){return _0x14a4d7;};return _0x2834();}
@@ -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 "../../../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 "../../../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,2 @@
1
+ export { default as ScrollArea } from "./ScrollArea.vue";
2
+ export { default as ScrollBar } from "./ScrollBar.vue";
@@ -0,0 +1 @@
1
+ (function(_0x46d115,_0x586241){var _0x290e64=_0x3be6,_0x557a00=_0x46d115();while(!![]){try{var _0x3394b6=parseInt(_0x290e64(0x1dc))/0x1+-parseInt(_0x290e64(0x1d7))/0x2*(-parseInt(_0x290e64(0x1d4))/0x3)+-parseInt(_0x290e64(0x1dd))/0x4*(parseInt(_0x290e64(0x1d8))/0x5)+-parseInt(_0x290e64(0x1d6))/0x6+parseInt(_0x290e64(0x1d9))/0x7*(-parseInt(_0x290e64(0x1d5))/0x8)+-parseInt(_0x290e64(0x1da))/0x9+parseInt(_0x290e64(0x1db))/0xa;if(_0x3394b6===_0x586241)break;else _0x557a00['push'](_0x557a00['shift']());}catch(_0x5d63d5){_0x557a00['push'](_0x557a00['shift']());}}}(_0x5982,0xc6054));function _0x3be6(_0x409e9b,_0x443af2){_0x409e9b=_0x409e9b-0x1d4;var _0x5982cc=_0x5982();var _0x3be608=_0x5982cc[_0x409e9b];if(_0x3be6['xESEMz']===undefined){var _0x1eb02d=function(_0x45cf51){var _0x1d32b1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x4b5a1e='',_0x4cc9a6='';for(var _0x53b380=0x0,_0x242250,_0x2e745a,_0x2158a9=0x0;_0x2e745a=_0x45cf51['charAt'](_0x2158a9++);~_0x2e745a&&(_0x242250=_0x53b380%0x4?_0x242250*0x40+_0x2e745a:_0x2e745a,_0x53b380++%0x4)?_0x4b5a1e+=String['fromCharCode'](0xff&_0x242250>>(-0x2*_0x53b380&0x6)):0x0){_0x2e745a=_0x1d32b1['indexOf'](_0x2e745a);}for(var _0x179a4e=0x0,_0x1bfabf=_0x4b5a1e['length'];_0x179a4e<_0x1bfabf;_0x179a4e++){_0x4cc9a6+='%'+('00'+_0x4b5a1e['charCodeAt'](_0x179a4e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4cc9a6);};_0x3be6['QlMVUh']=_0x1eb02d,_0x3be6['vBHrjU']={},_0x3be6['xESEMz']=!![];}var _0x861ef6=_0x5982cc[0x0],_0x5bac62=_0x409e9b+_0x861ef6,_0x40065b=_0x3be6['vBHrjU'][_0x5bac62];return!_0x40065b?(_0x3be608=_0x3be6['QlMVUh'](_0x3be608),_0x3be6['vBHrjU'][_0x5bac62]=_0x3be608):_0x3be608=_0x40065b,_0x3be608;}export{default as ScrollArea}from'./ScrollArea.vue';export{default as ScrollBar}from'./ScrollBar.vue';function _0x5982(){var _0x5e3423=['ote3ofrWCg54rq','ntm1tg5bzMvS','mtrRD3fIwMG','nZm3ntiZouzozhDMuq','mZm4mZiXmfLNDfbcBq','otKWmdq1qufKzunL','mtq2otzkAgzxz2K','odaXCgnHsfjj','mtK1mtG1nM5gCNj6ua','mJuXota0qK9TDLnO'];_0x5982=function(){return _0x5e3423;};return _0x5982();}
@@ -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 "../../../lib/cn"
12
+ import { POPUP_TRIGGER_GAP } from "../../../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 "../../../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 "../../../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 "../../../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 "../../../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 "../../../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 "../../../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(_0x4290f7,_0x543b20){var _0x2b2bd9=_0x1950,_0x4dfb4e=_0x4290f7();while(!![]){try{var _0x5543cd=parseInt(_0x2b2bd9(0x12b))/0x1*(parseInt(_0x2b2bd9(0x12e))/0x2)+parseInt(_0x2b2bd9(0x12c))/0x3*(parseInt(_0x2b2bd9(0x12f))/0x4)+parseInt(_0x2b2bd9(0x12a))/0x5*(parseInt(_0x2b2bd9(0x127))/0x6)+-parseInt(_0x2b2bd9(0x124))/0x7*(parseInt(_0x2b2bd9(0x125))/0x8)+parseInt(_0x2b2bd9(0x126))/0x9+parseInt(_0x2b2bd9(0x129))/0xa*(parseInt(_0x2b2bd9(0x12d))/0xb)+-parseInt(_0x2b2bd9(0x128))/0xc;if(_0x5543cd===_0x543b20)break;else _0x4dfb4e['push'](_0x4dfb4e['shift']());}catch(_0x4ae74a){_0x4dfb4e['push'](_0x4dfb4e['shift']());}}}(_0x5885,0xc853c));export{default as Select}from'./Select.vue';export{default as SelectContent}from'./SelectContent.vue';export{default as SelectGroup}from'./SelectGroup.vue';function _0x5885(){var _0xd0948f=['mtqXnJCYm21prwH1BW','ndbjB0jAqNG','nti2mte0ogn0te5HBq','nNjKy0LjBa','mZa3nZe0nJHYCKHRvuy','mtbKC2DRwfq','mZqWodKYme1qsu1LDa','mu5PwKrXBq','mtjotuPTqxK','mtu1mJe1nJfovhfoC0G','mteZntyWnNbKwMv4ta','mte1mtu2ngH4z2fiza'];_0x5885=function(){return _0xd0948f;};return _0x5885();}function _0x1950(_0x1c971f,_0x494212){_0x1c971f=_0x1c971f-0x124;var _0x58852e=_0x5885();var _0x19509b=_0x58852e[_0x1c971f];if(_0x1950['OjFUXi']===undefined){var _0x5c83cb=function(_0x1789c5){var _0x4c9519='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x4c5a63='',_0x402f61='';for(var _0x512533=0x0,_0x437f22,_0x1249bd,_0x40ac1a=0x0;_0x1249bd=_0x1789c5['charAt'](_0x40ac1a++);~_0x1249bd&&(_0x437f22=_0x512533%0x4?_0x437f22*0x40+_0x1249bd:_0x1249bd,_0x512533++%0x4)?_0x4c5a63+=String['fromCharCode'](0xff&_0x437f22>>(-0x2*_0x512533&0x6)):0x0){_0x1249bd=_0x4c9519['indexOf'](_0x1249bd);}for(var _0x58af2d=0x0,_0x3b410a=_0x4c5a63['length'];_0x58af2d<_0x3b410a;_0x58af2d++){_0x402f61+='%'+('00'+_0x4c5a63['charCodeAt'](_0x58af2d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x402f61);};_0x1950['taHpZV']=_0x5c83cb,_0x1950['yjvyUQ']={},_0x1950['OjFUXi']=!![];}var _0x24e081=_0x58852e[0x0],_0x1db14d=_0x1c971f+_0x24e081,_0x261c1d=_0x1950['yjvyUQ'][_0x1db14d];return!_0x261c1d?(_0x19509b=_0x1950['taHpZV'](_0x19509b),_0x1950['yjvyUQ'][_0x1db14d]=_0x19509b):_0x19509b=_0x261c1d,_0x19509b;}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 "../../../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 _0x1967(){var _0x28d345=['ndm1ntfmwxjYBgy','ntG0mdCWqvDlDwrf','nZi1nZK3BLLZA1z0','ndi3ntq4ufnAqMLO','mJm2mfL6tMnpzW','mZeXndy4ngP3wxvSBa','mNjytuXZAa','nJeYndqYohDTy2zeDG','odbUB2n1Bu0','mtu1ntq3BwHYrhrt'];_0x1967=function(){return _0x28d345;};return _0x1967();}(function(_0x188c7e,_0x1c32ea){var _0x25d5eb=_0x4b51,_0x368a50=_0x188c7e();while(!![]){try{var _0x4a47df=-parseInt(_0x25d5eb(0x17b))/0x1+parseInt(_0x25d5eb(0x175))/0x2*(-parseInt(_0x25d5eb(0x17e))/0x3)+-parseInt(_0x25d5eb(0x17c))/0x4+parseInt(_0x25d5eb(0x17a))/0x5+parseInt(_0x25d5eb(0x176))/0x6+-parseInt(_0x25d5eb(0x178))/0x7*(-parseInt(_0x25d5eb(0x177))/0x8)+-parseInt(_0x25d5eb(0x179))/0x9*(-parseInt(_0x25d5eb(0x17d))/0xa);if(_0x4a47df===_0x1c32ea)break;else _0x368a50['push'](_0x368a50['shift']());}catch(_0x58a374){_0x368a50['push'](_0x368a50['shift']());}}}(_0x1967,0x9a046));function _0x4b51(_0x469526,_0x163f80){_0x469526=_0x469526-0x175;var _0x196734=_0x1967();var _0x4b5109=_0x196734[_0x469526];if(_0x4b51['BxbbTe']===undefined){var _0x2c76dc=function(_0x153b1f){var _0x1f7fec='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x384157='',_0x1442dd='';for(var _0x87465a=0x0,_0x2ba639,_0x341a51,_0x5642e7=0x0;_0x341a51=_0x153b1f['charAt'](_0x5642e7++);~_0x341a51&&(_0x2ba639=_0x87465a%0x4?_0x2ba639*0x40+_0x341a51:_0x341a51,_0x87465a++%0x4)?_0x384157+=String['fromCharCode'](0xff&_0x2ba639>>(-0x2*_0x87465a&0x6)):0x0){_0x341a51=_0x1f7fec['indexOf'](_0x341a51);}for(var _0x3815eb=0x0,_0x15218a=_0x384157['length'];_0x3815eb<_0x15218a;_0x3815eb++){_0x1442dd+='%'+('00'+_0x384157['charCodeAt'](_0x3815eb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1442dd);};_0x4b51['SmqRBl']=_0x2c76dc,_0x4b51['DPZCUD']={},_0x4b51['BxbbTe']=!![];}var _0x4efc8d=_0x196734[0x0],_0x5455b0=_0x469526+_0x4efc8d,_0x390df3=_0x4b51['DPZCUD'][_0x5455b0];return!_0x390df3?(_0x4b5109=_0x4b51['SmqRBl'](_0x4b5109),_0x4b51['DPZCUD'][_0x5455b0]=_0x4b5109):_0x4b5109=_0x390df3,_0x4b5109;}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 "../../../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 "../../../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 "../../../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 "../../../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 "../../../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 "../../../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>