mirror of
https://github.com/memohai/Memoh.git
synced 2026-04-27 07:16:19 +09:00
build: add gen-entry.ts
This commit is contained in:
+2
-1
@@ -38,5 +38,6 @@
|
|||||||
"@algolia/client-search"
|
"@algolia/client-search"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"packageManager": "pnpm@10.15.1+sha512.34e538c329b5553014ca8e8f4535997f96180a1d0f614339357449935350d924e22f8614682191264ec33d1462ac21561aff97f6bb18065351c162c7e8f6de67"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,11 +10,11 @@
|
|||||||
"prefix": ""
|
"prefix": ""
|
||||||
},
|
},
|
||||||
"aliases": {
|
"aliases": {
|
||||||
"components": "@/components",
|
"components": "src/components",
|
||||||
"composables": "@/composables",
|
"composables": "src/composables",
|
||||||
"utils": "@/lib/utils",
|
"utils": "src/lib/utils",
|
||||||
"ui": "@/components",
|
"ui": "src/components",
|
||||||
"lib": "@/lib"
|
"lib": "src/lib"
|
||||||
},
|
},
|
||||||
"iconLibrary": "lucide"
|
"iconLibrary": "lucide"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
import fs from 'fs'
|
||||||
|
import path from 'path'
|
||||||
|
|
||||||
|
const rootDir = path.resolve(import.meta.dirname, '../src')
|
||||||
|
const readDir = path.resolve(rootDir, './components')
|
||||||
|
const outputDir = path.resolve(rootDir, './index.ts')
|
||||||
|
|
||||||
|
async function readDirName(){
|
||||||
|
const pathList:Awaited<string[]> = await new Promise((resolve, reject) => {
|
||||||
|
fs.readdir(readDir, (err, data) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err)
|
||||||
|
}
|
||||||
|
resolve(data)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
return pathList
|
||||||
|
}
|
||||||
|
|
||||||
|
async function writeExportFile(pathList: string[]) {
|
||||||
|
const pathListStr = pathList.map(fileName => {
|
||||||
|
return `export * from './components/${fileName}/index'`
|
||||||
|
})
|
||||||
|
await new Promise((resolve, reject) => {
|
||||||
|
fs.writeFile(outputDir, pathListStr.join('\r\n'), (err) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err)
|
||||||
|
}
|
||||||
|
resolve(undefined)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
async function generate() {
|
||||||
|
try {
|
||||||
|
const list = await readDirName()
|
||||||
|
writeExportFile(list)
|
||||||
|
} catch(error) {
|
||||||
|
console.error(error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
generate()
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import type { CollapsibleRootEmits, CollapsibleRootProps } from "reka-ui"
|
||||||
|
import { CollapsibleRoot, useForwardPropsEmits } from "reka-ui"
|
||||||
|
|
||||||
|
const props = defineProps<CollapsibleRootProps>()
|
||||||
|
const emits = defineEmits<CollapsibleRootEmits>()
|
||||||
|
|
||||||
|
const forwarded = useForwardPropsEmits(props, emits)
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<CollapsibleRoot
|
||||||
|
v-slot="slotProps"
|
||||||
|
data-slot="collapsible"
|
||||||
|
v-bind="forwarded"
|
||||||
|
>
|
||||||
|
<slot v-bind="slotProps" />
|
||||||
|
</CollapsibleRoot>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import type { CollapsibleContentProps } from "reka-ui"
|
||||||
|
import { CollapsibleContent } from "reka-ui"
|
||||||
|
|
||||||
|
const props = defineProps<CollapsibleContentProps>()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<CollapsibleContent
|
||||||
|
data-slot="collapsible-content"
|
||||||
|
v-bind="props"
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</CollapsibleContent>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import type { CollapsibleTriggerProps } from "reka-ui"
|
||||||
|
import { CollapsibleTrigger } from "reka-ui"
|
||||||
|
|
||||||
|
const props = defineProps<CollapsibleTriggerProps>()
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<CollapsibleTrigger
|
||||||
|
data-slot="collapsible-trigger"
|
||||||
|
v-bind="props"
|
||||||
|
>
|
||||||
|
<slot />
|
||||||
|
</CollapsibleTrigger>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
export { default as Collapsible } from './Collapsible.vue'
|
||||||
|
export { default as CollapsibleContent } from './CollapsibleContent.vue'
|
||||||
|
export { default as CollapsibleTrigger } from './CollapsibleTrigger.vue'
|
||||||
+29
-30
@@ -1,30 +1,29 @@
|
|||||||
// Generated by scripts/gen-entry.ts. Do not edit manually.
|
export * from './components/alert/index'
|
||||||
|
export * from './components/avatar/index'
|
||||||
export * from './components/alert/index'
|
export * from './components/badge/index'
|
||||||
export * from './components/avatar/index'
|
export * from './components/button/index'
|
||||||
export * from './components/badge/index'
|
export * from './components/button-group/index'
|
||||||
export * from './components/button/index'
|
export * from './components/card/index'
|
||||||
export * from './components/button-group/index'
|
export * from './components/checkbox/index'
|
||||||
export * from './components/card/index'
|
export * from './components/collapsible/index'
|
||||||
export * from './components/checkbox/index'
|
export * from './components/combobox/index'
|
||||||
export * from './components/combobox/index'
|
export * from './components/context-menu/index'
|
||||||
export * from './components/context-menu/index'
|
export * from './components/dialog/index'
|
||||||
export * from './components/dialog/index'
|
export * from './components/dropdown-menu/index'
|
||||||
export * from './components/dropdown-menu/index'
|
export * from './components/input/index'
|
||||||
export * from './components/input/index'
|
export * from './components/input-group/index'
|
||||||
export * from './components/input-group/index'
|
export * from './components/kbd/index'
|
||||||
export * from './components/kbd/index'
|
export * from './components/label/index'
|
||||||
export * from './components/label/index'
|
export * from './components/radio-group/index'
|
||||||
export * from './components/radio-group/index'
|
export * from './components/select/index'
|
||||||
export * from './components/select/index'
|
export * from './components/separator/index'
|
||||||
export * from './components/separator/index'
|
export * from './components/sheet/index'
|
||||||
export * from './components/sheet/index'
|
export * from './components/sidebar/index'
|
||||||
export * from './components/sidebar/index'
|
export * from './components/skeleton/index'
|
||||||
export * from './components/skeleton/index'
|
export * from './components/slider/index'
|
||||||
export * from './components/slider/index'
|
export * from './components/sonner/index'
|
||||||
export * from './components/sonner/index'
|
export * from './components/spinner/index'
|
||||||
export * from './components/spinner/index'
|
export * from './components/switch/index'
|
||||||
export * from './components/switch/index'
|
export * from './components/tabs/index'
|
||||||
export * from './components/tabs/index'
|
export * from './components/textarea/index'
|
||||||
export * from './components/textarea/index'
|
export * from './components/tooltip/index'
|
||||||
export * from './components/tooltip/index'
|
|
||||||
@@ -1,13 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<section>
|
<SidebarInset>
|
||||||
<h1 @click="open=!open">
|
<SidebarTrigger class="-ml-1" />
|
||||||
|
<h1 @click="open = !open">
|
||||||
<!-- 主体 -->
|
<!-- 主体 -->
|
||||||
</h1>
|
</h1>
|
||||||
</section>
|
</SidebarInset>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { inject } from 'vue'
|
import { inject } from 'vue'
|
||||||
|
import { SidebarTrigger, SidebarInset } from '@memoh/ui'
|
||||||
|
|
||||||
const open=inject('sideBarIsOpen')
|
const open = inject('sideBarIsOpen')
|
||||||
</script>
|
</script>
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
</SidebarHeader>
|
</SidebarHeader>
|
||||||
<SidebarContent>
|
<SidebarContent>
|
||||||
<SidebarGroup>
|
<SidebarGroup>
|
||||||
<SidebarGroupLabel class="text-base">
|
<SidebarGroupLabel>
|
||||||
对话操作
|
对话操作
|
||||||
</SidebarGroupLabel>
|
</SidebarGroupLabel>
|
||||||
<SidebarGroupContent>
|
<SidebarGroupContent>
|
||||||
@@ -39,17 +39,15 @@
|
|||||||
v-for="sidebarItem in sidebarInfo"
|
v-for="sidebarItem in sidebarInfo"
|
||||||
:key="sidebarItem.title"
|
:key="sidebarItem.title"
|
||||||
>
|
>
|
||||||
<SidebarMenuButton
|
<CollapsibleTrigger as-child>
|
||||||
as-child
|
<SidebarMenuButton>
|
||||||
>
|
|
||||||
<section class="flex">
|
|
||||||
<svg-icon
|
<svg-icon
|
||||||
type="mdi"
|
type="mdi"
|
||||||
:path="sidebarItem.icon"
|
:path="sidebarItem.icon"
|
||||||
/>
|
/>
|
||||||
<span>{{ sidebarItem.title }}</span>
|
<span>{{ sidebarItem.title }}</span>
|
||||||
</section>
|
</SidebarMenuButton>
|
||||||
</SidebarMenuButton>
|
</CollapsibleTrigger>
|
||||||
</SidebarMenuItem>
|
</SidebarMenuItem>
|
||||||
</SidebarMenu>
|
</SidebarMenu>
|
||||||
</SidebarGroupContent>
|
</SidebarGroupContent>
|
||||||
@@ -74,11 +72,12 @@ import {
|
|||||||
SidebarMenuButton,
|
SidebarMenuButton,
|
||||||
SidebarMenuItem,
|
SidebarMenuItem,
|
||||||
SidebarProvider,
|
SidebarProvider,
|
||||||
SidebarRail,
|
SidebarRail,
|
||||||
|
|
||||||
} from '@memoh/ui'
|
} from '@memoh/ui'
|
||||||
import { reactive, inject } from 'vue'
|
import { reactive, inject } from 'vue'
|
||||||
import SvgIcon from '@jamescoyle/vue-icon'
|
import SvgIcon from '@jamescoyle/vue-icon'
|
||||||
import { mdiCogOutline, mdiChatOutline, mdiCogBox, mdiListBox } from '@mdi/js'
|
import { mdiRobot, mdiChatOutline, mdiCogBox, mdiListBox } from '@mdi/js'
|
||||||
|
|
||||||
|
|
||||||
const open=inject('sideBarIsOpen')
|
const open=inject('sideBarIsOpen')
|
||||||
@@ -90,7 +89,7 @@ const sidebarInfo = reactive([{
|
|||||||
}, {
|
}, {
|
||||||
title: '模型配置',
|
title: '模型配置',
|
||||||
path: '/',
|
path: '/',
|
||||||
icon: mdiCogOutline
|
icon: mdiRobot
|
||||||
}, {
|
}, {
|
||||||
title: '环境设置',
|
title: '环境设置',
|
||||||
path: '/',
|
path: '/',
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<section class="flex">
|
<section class="flex">
|
||||||
<slot name="sidebar" />
|
<sidebar-provider>
|
||||||
<slot name="main" />
|
<slot name="sidebar" />
|
||||||
|
<slot name="main" />
|
||||||
|
</sidebar-provider>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { SidebarProvider } from '@memoh/ui'
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user