mirror of
https://github.com/fantastic-admin/basic.git
synced 2026-10-07 03:13:49 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be4a274f00 | ||
|
|
6889792142 | ||
|
|
b02192d293 | ||
|
|
09a179cd7f | ||
|
|
1b3ed11d55 | ||
|
|
d712653c17 | ||
|
|
75197a0889 | ||
|
|
3d7d9168d1 |
+1
-7
@@ -24,7 +24,7 @@ An **AI-oriented** admin system framework
|
||||
|
||||
- AI-friendly engineering foundation with multiple built-in Skills
|
||||
- First-class tech stack: Vue 3.6 / Vite 8 / Pinia / UnoCSS / VueUse / TypeScript / ESLint / Stylelint / ...
|
||||
- Freely choose your preferred UI library, with Element Plus by default
|
||||
- Freely choose your preferred UI library
|
||||
- 8 built-in theme schemes with extensibility for distinct industry brand styles
|
||||
- 7 navigation menu modes to match products at different growth stages
|
||||
- Fine-grained and controllable page keep-alive strategy
|
||||
@@ -48,12 +48,6 @@ If you find Fantastic-admin useful, or you are already using it, please consider
|
||||
|
||||
[](https://atomgit.com/fantastic-admin/basic)
|
||||
|
||||
<details>
|
||||
<summary>Github Stars Chart</summary>
|
||||
|
||||
[](https://starchart.cc/fantastic-admin/basic)
|
||||
</details>
|
||||
|
||||
## Ecosystem
|
||||
|
||||
- [`Fantastic-startkit`](https://hooray.github.io/fantastic-startkit/) - A simple and easy-to-use Vue 3 project starter kit
|
||||
|
||||
@@ -48,12 +48,6 @@
|
||||
|
||||
[](https://atomgit.com/fantastic-admin/basic)
|
||||
|
||||
<details>
|
||||
<summary>Github Stars 曲线</summary>
|
||||
|
||||
[](https://starchart.cc/fantastic-admin/basic)
|
||||
</details>
|
||||
|
||||
## 生态
|
||||
|
||||
- [`Fantastic-startkit`](https://hooray.github.io/fantastic-startkit/) - 简单好用的 Vue3 项目启动套件
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
/* oxlint-disable */
|
||||
/* oxfmt-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
|
||||
@@ -4,10 +4,9 @@ import process from 'node:process'
|
||||
import dayjs from 'dayjs'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import { parseLoadedEnv } from 'vite-plugin-env-parse'
|
||||
import pkg from './package.json'
|
||||
import createVitePlugins from './vite/plugins'
|
||||
import pkg from './package.json' with { type: 'json' }
|
||||
import createVitePlugins from './vite/plugins.ts'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(({ mode, command }) => {
|
||||
const env = parseLoadedEnv(loadEnv(mode, process.cwd()))
|
||||
// 全局 scss 资源
|
||||
@@ -54,8 +53,8 @@ export default defineConfig(({ mode, command }) => {
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
'#': path.resolve(__dirname, 'src/types'),
|
||||
'@': path.resolve(import.meta.dirname, 'src'),
|
||||
'#': path.resolve(import.meta.dirname, 'src/types'),
|
||||
},
|
||||
},
|
||||
css: {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
/* oxlint-disable */
|
||||
/* oxfmt-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
|
||||
@@ -4,10 +4,9 @@ import process from 'node:process'
|
||||
import dayjs from 'dayjs'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import { parseLoadedEnv } from 'vite-plugin-env-parse'
|
||||
import pkg from './package.json'
|
||||
import createVitePlugins from './vite/plugins'
|
||||
import pkg from './package.json' with { type: 'json' }
|
||||
import createVitePlugins from './vite/plugins.ts'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(({ mode, command }) => {
|
||||
const env = parseLoadedEnv(loadEnv(mode, process.cwd()))
|
||||
// 全局 scss 资源
|
||||
@@ -54,8 +53,8 @@ export default defineConfig(({ mode, command }) => {
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
'#': path.resolve(__dirname, 'src/types'),
|
||||
'@': path.resolve(import.meta.dirname, 'src'),
|
||||
'#': path.resolve(import.meta.dirname, 'src/types'),
|
||||
},
|
||||
},
|
||||
css: {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
/* oxlint-disable */
|
||||
/* oxfmt-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
|
||||
@@ -4,10 +4,9 @@ import process from 'node:process'
|
||||
import dayjs from 'dayjs'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import { parseLoadedEnv } from 'vite-plugin-env-parse'
|
||||
import pkg from './package.json'
|
||||
import createVitePlugins from './vite/plugins'
|
||||
import pkg from './package.json' with { type: 'json' }
|
||||
import createVitePlugins from './vite/plugins.ts'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(({ mode, command }) => {
|
||||
const env = parseLoadedEnv(loadEnv(mode, process.cwd()))
|
||||
// 全局 scss 资源
|
||||
@@ -54,8 +53,8 @@ export default defineConfig(({ mode, command }) => {
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
'#': path.resolve(__dirname, 'src/types'),
|
||||
'@': path.resolve(import.meta.dirname, 'src'),
|
||||
'#': path.resolve(import.meta.dirname, 'src/types'),
|
||||
},
|
||||
},
|
||||
css: {
|
||||
|
||||
@@ -2,4 +2,7 @@ import { setSettings } from '@fantastic-admin/settings'
|
||||
|
||||
export default setSettings({
|
||||
// 请在此处编写或粘贴应用配置
|
||||
menu: {
|
||||
mainMenuClickMode: 'smart',
|
||||
},
|
||||
})
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
/* oxlint-disable */
|
||||
/* oxfmt-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
|
||||
@@ -4,10 +4,9 @@ import process from 'node:process'
|
||||
import dayjs from 'dayjs'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import { parseLoadedEnv } from 'vite-plugin-env-parse'
|
||||
import pkg from './package.json'
|
||||
import createVitePlugins from './vite/plugins'
|
||||
import pkg from './package.json' with { type: 'json' }
|
||||
import createVitePlugins from './vite/plugins.ts'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(({ mode, command }) => {
|
||||
const env = parseLoadedEnv(loadEnv(mode, process.cwd()))
|
||||
// 全局 scss 资源
|
||||
@@ -54,8 +53,8 @@ export default defineConfig(({ mode, command }) => {
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
'#': path.resolve(__dirname, 'src/types'),
|
||||
'@': path.resolve(import.meta.dirname, 'src'),
|
||||
'#': path.resolve(import.meta.dirname, 'src/types'),
|
||||
},
|
||||
},
|
||||
css: {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
/* oxlint-disable */
|
||||
/* oxfmt-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
|
||||
@@ -4,10 +4,9 @@ import process from 'node:process'
|
||||
import dayjs from 'dayjs'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import { parseLoadedEnv } from 'vite-plugin-env-parse'
|
||||
import pkg from './package.json'
|
||||
import createVitePlugins from './vite/plugins'
|
||||
import pkg from './package.json' with { type: 'json' }
|
||||
import createVitePlugins from './vite/plugins.ts'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(({ mode, command }) => {
|
||||
const env = parseLoadedEnv(loadEnv(mode, process.cwd()))
|
||||
// 全局 scss 资源
|
||||
@@ -54,8 +53,8 @@ export default defineConfig(({ mode, command }) => {
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
'#': path.resolve(__dirname, 'src/types'),
|
||||
'@': path.resolve(import.meta.dirname, 'src'),
|
||||
'#': path.resolve(import.meta.dirname, 'src/types'),
|
||||
},
|
||||
},
|
||||
css: {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
/* oxlint-disable */
|
||||
/* oxfmt-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
|
||||
@@ -4,10 +4,9 @@ import process from 'node:process'
|
||||
import dayjs from 'dayjs'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import { parseLoadedEnv } from 'vite-plugin-env-parse'
|
||||
import pkg from './package.json'
|
||||
import createVitePlugins from './vite/plugins'
|
||||
import pkg from './package.json' with { type: 'json' }
|
||||
import createVitePlugins from './vite/plugins.ts'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(({ mode, command }) => {
|
||||
const env = parseLoadedEnv(loadEnv(mode, process.cwd()))
|
||||
// 全局 scss 资源
|
||||
@@ -54,8 +53,8 @@ export default defineConfig(({ mode, command }) => {
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
'#': path.resolve(__dirname, 'src/types'),
|
||||
'@': path.resolve(import.meta.dirname, 'src'),
|
||||
'#': path.resolve(import.meta.dirname, 'src/types'),
|
||||
},
|
||||
},
|
||||
css: {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
/* oxlint-disable */
|
||||
/* oxfmt-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
|
||||
@@ -4,10 +4,9 @@ import process from 'node:process'
|
||||
import dayjs from 'dayjs'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import { parseLoadedEnv } from 'vite-plugin-env-parse'
|
||||
import pkg from './package.json'
|
||||
import createVitePlugins from './vite/plugins'
|
||||
import pkg from './package.json' with { type: 'json' }
|
||||
import createVitePlugins from './vite/plugins.ts'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(({ mode, command }) => {
|
||||
const env = parseLoadedEnv(loadEnv(mode, process.cwd()))
|
||||
// 全局 scss 资源
|
||||
@@ -54,8 +53,8 @@ export default defineConfig(({ mode, command }) => {
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
'#': path.resolve(__dirname, 'src/types'),
|
||||
'@': path.resolve(import.meta.dirname, 'src'),
|
||||
'#': path.resolve(import.meta.dirname, 'src/types'),
|
||||
},
|
||||
},
|
||||
css: {
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
/* oxlint-disable */
|
||||
/* oxfmt-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
|
||||
Vendored
+4
@@ -35,6 +35,8 @@ declare module 'vue' {
|
||||
FaDropdown: typeof import('@fantastic-admin/components')['FaDropdown']
|
||||
FaFileUpload: typeof import('@fantastic-admin/components')['FaFileUpload']
|
||||
FaFixedBar: typeof import('@fantastic-admin/components')['FaFixedBar']
|
||||
FaForm: typeof import('@fantastic-admin/components')['FaForm']
|
||||
FaFormItem: typeof import('@fantastic-admin/components')['FaFormItem']
|
||||
FaHoverCard: typeof import('@fantastic-admin/components')['FaHoverCard']
|
||||
FaIcon: typeof import('@fantastic-admin/components')['FaIcon']
|
||||
FaImagePreview: typeof import('@fantastic-admin/components')['FaImagePreview']
|
||||
@@ -93,6 +95,8 @@ declare global {
|
||||
const FaDropdown: typeof import('@fantastic-admin/components')['FaDropdown']
|
||||
const FaFileUpload: typeof import('@fantastic-admin/components')['FaFileUpload']
|
||||
const FaFixedBar: typeof import('@fantastic-admin/components')['FaFixedBar']
|
||||
const FaForm: typeof import('@fantastic-admin/components')['FaForm']
|
||||
const FaFormItem: typeof import('@fantastic-admin/components')['FaFormItem']
|
||||
const FaHoverCard: typeof import('@fantastic-admin/components')['FaHoverCard']
|
||||
const FaIcon: typeof import('@fantastic-admin/components')['FaIcon']
|
||||
const FaImagePreview: typeof import('@fantastic-admin/components')['FaImagePreview']
|
||||
|
||||
@@ -4,10 +4,9 @@ import process from 'node:process'
|
||||
import dayjs from 'dayjs'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import { parseLoadedEnv } from 'vite-plugin-env-parse'
|
||||
import pkg from './package.json'
|
||||
import createVitePlugins from './vite/plugins'
|
||||
import pkg from './package.json' with { type: 'json' }
|
||||
import createVitePlugins from './vite/plugins.ts'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(({ mode, command }) => {
|
||||
const env = parseLoadedEnv(loadEnv(mode, process.cwd()))
|
||||
// 全局 scss 资源
|
||||
@@ -54,8 +53,8 @@ export default defineConfig(({ mode, command }) => {
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
'#': path.resolve(__dirname, 'src/types'),
|
||||
'@': path.resolve(import.meta.dirname, 'src'),
|
||||
'#': path.resolve(import.meta.dirname, 'src/types'),
|
||||
},
|
||||
},
|
||||
css: {
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
/* oxlint-disable */
|
||||
/* oxfmt-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
|
||||
@@ -4,10 +4,9 @@ import process from 'node:process'
|
||||
import dayjs from 'dayjs'
|
||||
import { defineConfig, loadEnv } from 'vite'
|
||||
import { parseLoadedEnv } from 'vite-plugin-env-parse'
|
||||
import pkg from './package.json'
|
||||
import createVitePlugins from './vite/plugins'
|
||||
import pkg from './package.json' with { type: 'json' }
|
||||
import createVitePlugins from './vite/plugins.ts'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(({ mode, command }) => {
|
||||
const env = parseLoadedEnv(loadEnv(mode, process.cwd()))
|
||||
// 全局 scss 资源
|
||||
@@ -55,8 +54,8 @@ export default defineConfig(({ mode, command }) => {
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
'@': path.resolve(__dirname, 'src'),
|
||||
'#': path.resolve(__dirname, 'src/types'),
|
||||
'@': path.resolve(import.meta.dirname, 'src'),
|
||||
'#': path.resolve(import.meta.dirname, 'src/types'),
|
||||
},
|
||||
},
|
||||
css: {
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
"type": "module",
|
||||
"version": "6.3.0",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@11.9.0",
|
||||
"packageManager": "pnpm@11.24.0",
|
||||
"engines": {
|
||||
"node": "^22.22.2 || ^24.15.0 || >=26.0.0"
|
||||
},
|
||||
|
||||
@@ -4,7 +4,7 @@ import { cva } from 'class-variance-authority'
|
||||
export { default as Badge } from './Badge.vue'
|
||||
|
||||
export const badgeVariants = cva(
|
||||
'inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden',
|
||||
'inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden',
|
||||
{
|
||||
variants: {
|
||||
variant: {
|
||||
|
||||
@@ -4,7 +4,7 @@ import { cva } from 'class-variance-authority'
|
||||
export { default as Button } from './Button.vue'
|
||||
|
||||
export const buttonVariants = cva(
|
||||
'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*=size-])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',
|
||||
'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*=size-])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',
|
||||
{
|
||||
variants: {
|
||||
variant: {
|
||||
|
||||
@@ -158,7 +158,7 @@ function handleCustomOptionKeydown(option: TOption) {
|
||||
cn(
|
||||
'flex gap-2',
|
||||
option.description ? 'items-start' : 'items-center',
|
||||
slots.option && 'outline-none focus-visible:ring-ring/50 focus-visible:ring-[3px] rounded-xl',
|
||||
slots.option && 'outline-none focus-visible:ring-ring/50 focus-visible:ring-3 rounded-xl',
|
||||
props.optionClass,
|
||||
)
|
||||
"
|
||||
|
||||
@@ -20,7 +20,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
||||
data-slot="checkbox"
|
||||
v-bind="forwarded"
|
||||
:class="
|
||||
cn('peer border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50', props.class)"
|
||||
cn('peer border-input data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50', props.class)"
|
||||
>
|
||||
<CheckboxIndicator
|
||||
data-slot="checkbox-indicator"
|
||||
|
||||
@@ -22,7 +22,7 @@ const slot = computed(() => context?.value.slots[props.index])
|
||||
v-bind="forwarded"
|
||||
data-slot="input-otp-slot"
|
||||
:data-active="slot?.isActive"
|
||||
:class="cn('data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-e text-sm shadow-xs transition-all outline-none first:rounded-ss-md first:rounded-es-md first:border-s last:rounded-se-md last:rounded-ee-md data-[active=true]:z-10 data-[active=true]:ring-[3px]', props.class)"
|
||||
:class="cn('data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-e text-sm shadow-xs transition-all outline-none first:rounded-ss-md first:rounded-es-md first:border-s last:rounded-se-md last:rounded-ee-md data-[active=true]:z-10 data-[active=true]:ring-3', props.class)"
|
||||
>
|
||||
{{ slot?.char }}
|
||||
<div v-if="slot?.hasFakeCaret" class="flex pointer-events-none items-center inset-0 justify-center absolute">
|
||||
|
||||
@@ -60,7 +60,7 @@ defineExpose({
|
||||
v-bind="{
|
||||
...omit(props, ['type', 'align', 'clearable', 'class', 'inputClass', 'startClass', 'endClass']),
|
||||
type,
|
||||
class: cn('w-full flex-1 border-0 rounded-none bg-transparent ring-offset-transparent dark:bg-transparent focus-visible:ring-0 focus-visible:ring-transparent', props.inputClass),
|
||||
class: cn('w-full flex-1 border-0 rounded-none bg-transparent shadow-none ring-offset-transparent dark:bg-transparent focus-visible:ring-0 focus-visible:ring-transparent', props.inputClass),
|
||||
...$attrs,
|
||||
}"
|
||||
ref="inputRef"
|
||||
|
||||
@@ -22,7 +22,7 @@ const props = defineProps<{
|
||||
'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3',
|
||||
|
||||
// Focus state.
|
||||
'has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]',
|
||||
'has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-3',
|
||||
|
||||
// Error state.
|
||||
'has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40',
|
||||
|
||||
@@ -33,7 +33,7 @@ defineExpose({
|
||||
data-slot="input"
|
||||
:class="cn(
|
||||
'file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
|
||||
'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',
|
||||
'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3',
|
||||
'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',
|
||||
props.class,
|
||||
)"
|
||||
|
||||
@@ -109,7 +109,7 @@ function handleJump() {
|
||||
<PaginationFirst size="icon-sm" class="size-8 rtl:rotate-180" />
|
||||
<PaginationPrevious size="icon-sm" class="size-8 rtl:rotate-180" />
|
||||
<template v-for="(item, index) in items" :key="index">
|
||||
<PaginationItem v-if="item.type === 'page'" :value="item.value" :is-active="item.value === currentPage" size="icon-sm" class="size-8">
|
||||
<PaginationItem v-if="item.type === 'page'" :value="item.value" :is-active="item.value === currentPage" size="icon-sm" class="min-w-8 w-auto">
|
||||
{{ item.value }}
|
||||
</PaginationItem>
|
||||
<PaginationEllipsis v-else :key="item.type" :index="index" />
|
||||
|
||||
@@ -23,7 +23,7 @@ const forwardedProps = useForwardProps(delegatedProps)
|
||||
v-bind="forwardedProps"
|
||||
:class="
|
||||
cn(
|
||||
'border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
|
||||
'border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50',
|
||||
props.class,
|
||||
)
|
||||
"
|
||||
|
||||
@@ -55,7 +55,7 @@ defineExpose({
|
||||
<ScrollAreaViewport
|
||||
ref="viewportRef"
|
||||
data-slot="scroll-area-viewport"
|
||||
class="scroll-area-viewport outline-none rounded-[inherit] size-full transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-[3px] focus-visible:ring-ring/50"
|
||||
class="scroll-area-viewport outline-none rounded-[inherit] size-full transition-[color,box-shadow] focus-visible:outline-1 focus-visible:ring-3 focus-visible:ring-ring/50"
|
||||
:class="{
|
||||
'scroll-area-mask-vertical': props.mask && !props.horizontal,
|
||||
'scroll-area-mask-horizontal': props.mask && props.horizontal,
|
||||
|
||||
@@ -21,7 +21,7 @@ const forwardedProps = useForwardProps(delegatedProps)
|
||||
:data-size="size"
|
||||
v-bind="forwardedProps"
|
||||
:class="cn(
|
||||
'border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*=text-])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *: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',
|
||||
'border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*=text-])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *: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',
|
||||
props.class,
|
||||
)"
|
||||
>
|
||||
|
||||
@@ -24,13 +24,13 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
||||
data-slot="switch"
|
||||
v-bind="forwarded"
|
||||
:class="cn(
|
||||
'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
|
||||
'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50',
|
||||
props.class,
|
||||
)"
|
||||
>
|
||||
<SwitchThumb
|
||||
data-slot="switch-thumb"
|
||||
:class="cn('bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none flex-center size-4 rounded-full ring-0 transition-transform data-[state=checked]:ltr:translate-x-[calc(100%-2px)] data-[state=checked]:rtl:-translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0')"
|
||||
:class="cn('bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none flex-center size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=checked]:rtl:-translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0')"
|
||||
>
|
||||
<slot name="thumb" v-bind="slotProps" />
|
||||
</SwitchThumb>
|
||||
|
||||
@@ -16,7 +16,7 @@ const forwardedProps = useForwardProps(delegatedProps)
|
||||
<TabsTrigger
|
||||
data-slot="tabs-trigger"
|
||||
:class="cn(
|
||||
'data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-4',
|
||||
'data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-3 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-4',
|
||||
props.class,
|
||||
)"
|
||||
v-bind="forwardedProps"
|
||||
|
||||
@@ -22,7 +22,7 @@ const props = defineProps<{
|
||||
'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3',
|
||||
|
||||
// Focus state.
|
||||
'has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]',
|
||||
'has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-3',
|
||||
|
||||
// Error state.
|
||||
'has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40',
|
||||
|
||||
@@ -23,6 +23,6 @@ const modelValue = useVModel(props, 'modelValue', emits, {
|
||||
<textarea
|
||||
v-model="modelValue"
|
||||
data-slot="textarea"
|
||||
:class="cn('border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', props.class)"
|
||||
:class="cn('border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', props.class)"
|
||||
/>
|
||||
</template>
|
||||
|
||||
Generated
+3751
-4260
File diff suppressed because it is too large
Load Diff
+59
-59
@@ -10,127 +10,127 @@ packages:
|
||||
- apps/*
|
||||
- packages/*
|
||||
catalog:
|
||||
'@antfu/eslint-config': ^9.1.0
|
||||
'@clack/prompts': ^1.6.0
|
||||
'@faker-js/faker': ^10.5.0
|
||||
'@iconify/json': ^2.2.495
|
||||
'@antfu/eslint-config': ^9.3.0
|
||||
'@clack/prompts': ^1.7.0
|
||||
'@faker-js/faker': ^10.6.0
|
||||
'@iconify/json': ^2.2.521
|
||||
'@iconify/vue': ^5.0.1
|
||||
'@lucide/vue': ^1.23.0
|
||||
'@spiriit/vite-plugin-svg-spritemap': ^7.0.0
|
||||
'@lucide/vue': ^1.34.0
|
||||
'@spiriit/vite-plugin-svg-spritemap': ^7.2.0
|
||||
'@stylistic/stylelint-config': ^5.0.0
|
||||
'@tanstack/vue-table': ^8.21.3
|
||||
'@tinymce/tinymce-vue': ^6.3.0
|
||||
'@types/fs-extra': ^11.0.4
|
||||
'@types/node': ^26.1.0
|
||||
'@types/node': ^26.4.0
|
||||
'@types/nprogress': ^0.2.3
|
||||
'@types/path-browserify': ^1.0.3
|
||||
'@types/qs': ^6.15.1
|
||||
'@types/splitpanes': ^2.2.6
|
||||
'@unocss/core': ^66.7.4
|
||||
'@unocss/eslint-plugin': ^66.7.4
|
||||
'@unocss/core': ^66.8.1
|
||||
'@unocss/eslint-plugin': ^66.8.1
|
||||
'@vee-validate/zod': ^4.15.1
|
||||
'@visactor/vchart': ^2.1.2
|
||||
'@vitejs/plugin-legacy': ^8.1.0
|
||||
'@vitejs/plugin-vue': ^6.0.7
|
||||
'@visactor/vchart': ^2.1.6
|
||||
'@vitejs/plugin-legacy': ^8.2.3
|
||||
'@vitejs/plugin-vue': ^6.0.8
|
||||
'@vitejs/plugin-vue-jsx': ^5.1.6
|
||||
'@vue/tsconfig': ^0.9.1
|
||||
'@vueuse/components': ^14.3.0
|
||||
'@vueuse/core': ^14.3.0
|
||||
'@vueuse/integrations': ^14.3.0
|
||||
'@zumer/snapdom': ^2.15.0
|
||||
'@vueuse/components': ^14.4.0
|
||||
'@vueuse/core': ^14.4.0
|
||||
'@vueuse/integrations': ^14.4.0
|
||||
'@zumer/snapdom': ^2.24.10
|
||||
animate.css: ^4.1.1
|
||||
autoprefixer: ^10.5.2
|
||||
axios: ^1.18.1
|
||||
autoprefixer: ^10.5.4
|
||||
axios: ^1.20.0
|
||||
boxen: ^8.0.1
|
||||
bumpp: ^11.1.0
|
||||
bumpp: ^12.2.2
|
||||
class-variance-authority: ^0.7.1
|
||||
clsx: ^2.1.1
|
||||
cropperjs: 1.6.2
|
||||
cz-git: ^1.13.1
|
||||
dayjs: ^1.11.21
|
||||
cz-git: ^1.14.0
|
||||
dayjs: ^1.11.23
|
||||
defu: ^6.1.7
|
||||
echarts: ^6.1.0
|
||||
eruda: ^3.4.3
|
||||
es-toolkit: ^1.49.0
|
||||
eslint: ^10.6.0
|
||||
filesize: ^11.0.19
|
||||
fs-extra: ^11.3.6
|
||||
hotkeys-js: ^4.0.4
|
||||
es-toolkit: ^1.51.0
|
||||
eslint: ^10.9.1
|
||||
filesize: ^11.0.22
|
||||
fs-extra: ^11.4.0
|
||||
hotkeys-js: ^4.0.5
|
||||
http-server: ^14.1.1
|
||||
lint-staged: ^17.0.8
|
||||
lint-staged: ^17.3.0
|
||||
mitt: ^3.0.1
|
||||
npm-run-all2: ^9.0.2
|
||||
npm-run-all2: ^9.0.3
|
||||
nprogress: ^0.2.0
|
||||
path-browserify: ^1.0.1
|
||||
path-to-regexp: ^8.4.2
|
||||
picocolors: ^1.1.1
|
||||
pinia: ^3.0.4
|
||||
pinia: ^4.0.3
|
||||
pinia-plugin-persistedstate: ^4.7.1
|
||||
pinyin-pro: ^3.28.1
|
||||
postcss: ^8.5.16
|
||||
postcss-nested: ^7.0.2
|
||||
pinyin-pro: ^3.29.3
|
||||
postcss: ^8.5.26
|
||||
postcss-nested: ^8.0.1
|
||||
print-js: ^1.6.0
|
||||
qs: ^6.15.3
|
||||
reka-ui: ^2.10.1
|
||||
sass-embedded: ^1.100.0
|
||||
reka-ui: ^2.10.4
|
||||
sass-embedded: ^1.103.1
|
||||
scule: ^1.3.0
|
||||
sign-canvas: 2.0.0
|
||||
simple-git-hooks: ^2.13.1
|
||||
splitpanes: ^4.1.2
|
||||
stylelint: ^17.14.0
|
||||
stylelint-config-recess-order: ^7.7.0
|
||||
stylelint: ^17.14.1
|
||||
stylelint-config-recess-order: ^7.8.0
|
||||
stylelint-config-standard-scss: ^17.0.0
|
||||
stylelint-config-standard-vue: ^1.0.0
|
||||
stylelint-config-standard-vue: ^2.0.0
|
||||
stylelint-scss: ^7.2.0
|
||||
svgo: ^4.0.1
|
||||
swiper: ^14.0.1
|
||||
svgo: ^4.1.0
|
||||
swiper: ^14.2.0
|
||||
tailwind-merge: ^3.6.0
|
||||
taze: ^19.14.1
|
||||
taze: ^21.1.0
|
||||
tinymce: 7.9.3
|
||||
tsx: ^4.23.0
|
||||
type-fest: ^5.7.0
|
||||
tsx: ^4.23.12
|
||||
type-fest: ^5.8.0
|
||||
typescript: ^6.0.3
|
||||
ua-parser-js: ^2.0.10
|
||||
unocss: ^66.7.4
|
||||
unocss: ^66.8.1
|
||||
unocss-preset-animations: ^1.3.0
|
||||
unplugin-auto-import: ^21.0.0
|
||||
unplugin-turbo-console: ^2.3.2
|
||||
unplugin-auto-import: ^21.1.0
|
||||
unplugin-turbo-console: ^2.3.3
|
||||
unplugin-vue-components: ^32.1.0
|
||||
vconsole: ^3.15.1
|
||||
vee-validate: ^4.15.1
|
||||
vite: ^8.1.3
|
||||
vite: ^8.2.2
|
||||
vite-plugin-app-loading: ^0.6.1
|
||||
vite-plugin-archiver: ^0.4.1
|
||||
vite-plugin-banner: ^0.8.1
|
||||
vite-plugin-compression2: ^2.5.3
|
||||
vite-plugin-env-parse: ^1.0.15
|
||||
vite-plugin-fake-server: ^2.2.4
|
||||
vite-plugin-vue-devtools: ^8.1.5
|
||||
vue: ^3.5.39
|
||||
vite-plugin-vue-devtools: ^8.2.1
|
||||
vue: ^3.5.42
|
||||
vue-currency-input: ^3.2.2
|
||||
vue-data-ui: ^3.22.5
|
||||
vue-data-ui: ^3.23.14
|
||||
vue-hooks-plus: ^2.4.3
|
||||
vue-input-otp: ^0.3.2
|
||||
vue-router: ^5.1.0
|
||||
vue-input-otp: ^0.4.0
|
||||
vue-router: ^5.2.0
|
||||
vue-sonner: ^2.0.9
|
||||
vue-tsc: ^3.3.6
|
||||
vxe-pc-ui: ^4.15.23
|
||||
vxe-table: ^4.19.23
|
||||
xe-utils: ^4.0.10
|
||||
vue-tsc: ^3.3.11
|
||||
vxe-pc-ui: ^4.17.19
|
||||
vxe-table: ^4.21.2
|
||||
xe-utils: ^4.0.12
|
||||
zod: ^4.4.3
|
||||
catalogs:
|
||||
ant-design-vue:
|
||||
ant-design-vue: ^4.2.6
|
||||
antdv-next:
|
||||
antdv-next: ^1.4.1
|
||||
antdv-next: ^1.5.2
|
||||
arco-design-vue:
|
||||
'@arco-design/web-vue': ^2.58.0
|
||||
element-plus:
|
||||
element-plus: ^2.14.2
|
||||
element-plus: ^2.14.5
|
||||
naive-ui:
|
||||
naive-ui: ^2.44.1
|
||||
naive-ui: ^2.45.2
|
||||
tdesign:
|
||||
tdesign-vue-next: ^1.20.3
|
||||
tdesign-vue-next: ^1.20.6
|
||||
vexip-ui:
|
||||
vexip-ui: ^2.3.40
|
||||
allowBuilds:
|
||||
|
||||
Reference in New Issue
Block a user