Browse Source

上传新版本服务框架代码

main
liwei1dao 4 months ago
parent
commit
d4daf15ae7
  1. 6
      .gitignore
  2. 21
      apps/admin/.nuxt/app.config.mjs
  3. 68
      apps/admin/.nuxt/components.d.ts
  4. 37
      apps/admin/.nuxt/imports.d.ts
  5. 1
      apps/admin/.nuxt/manifest/meta/69eeaf8b-1851-4f23-9104-41b4cfccebd5.json
  6. 24
      apps/admin/.nuxt/nuxt.d.ts
  7. 15
      apps/admin/.nuxt/nuxt.node.d.ts
  8. 6
      apps/admin/.nuxt/nuxt.shared.d.ts
  9. 17
      apps/admin/.nuxt/schema/nuxt.schema.d.ts
  10. 3
      apps/admin/.nuxt/schema/nuxt.schema.json
  11. 14
      apps/admin/.nuxt/tailwind/postcss.mjs
  12. 208
      apps/admin/.nuxt/tsconfig.app.json
  13. 210
      apps/admin/.nuxt/tsconfig.json
  14. 116
      apps/admin/.nuxt/tsconfig.node.json
  15. 140
      apps/admin/.nuxt/tsconfig.server.json
  16. 149
      apps/admin/.nuxt/tsconfig.shared.json
  17. 35
      apps/admin/.nuxt/types/app.config.d.ts
  18. 24
      apps/admin/.nuxt/types/build.d.ts
  19. 1
      apps/admin/.nuxt/types/builder-env.d.ts
  20. 73
      apps/admin/.nuxt/types/components.d.ts
  21. 416
      apps/admin/.nuxt/types/imports.d.ts
  22. 21
      apps/admin/.nuxt/types/layouts.d.ts
  23. 7
      apps/admin/.nuxt/types/middleware.d.ts
  24. 99
      apps/admin/.nuxt/types/modules.d.ts
  25. 14
      apps/admin/.nuxt/types/nitro-config.d.ts
  26. 149
      apps/admin/.nuxt/types/nitro-imports.d.ts
  27. 17
      apps/admin/.nuxt/types/nitro-layouts.d.ts
  28. 11
      apps/admin/.nuxt/types/nitro-middleware.d.ts
  29. 64
      apps/admin/.nuxt/types/nitro-nuxt.d.ts
  30. 14
      apps/admin/.nuxt/types/nitro-routes.d.ts
  31. 3
      apps/admin/.nuxt/types/nitro.d.ts
  32. 34
      apps/admin/.nuxt/types/plugins.d.ts
  33. 34
      apps/admin/.nuxt/types/runtime-config.d.ts
  34. 10
      apps/admin/.nuxt/types/shared-imports.d.ts
  35. 0
      apps/admin/.nuxt/types/vue-shim.d.ts
  36. 15
      apps/admin/.output/nitro.json
  37. 1
      apps/admin/.output/public/_nuxt/32YvkCVR.js
  38. 1
      apps/admin/.output/public/_nuxt/6DMNcPyq.js
  39. 1
      apps/admin/.output/public/_nuxt/8EvkM1NE.js
  40. 1
      apps/admin/.output/public/_nuxt/BQLsZkMR.js
  41. 1
      apps/admin/.output/public/_nuxt/Bf7wQIBL.js
  42. 1
      apps/admin/.output/public/_nuxt/BkAHROeN.js
  43. 1
      apps/admin/.output/public/_nuxt/BzpN2JeG.js
  44. 1
      apps/admin/.output/public/_nuxt/C6_DfsT-.js
  45. 1
      apps/admin/.output/public/_nuxt/CAJrjOWz.js
  46. 4
      apps/admin/.output/public/_nuxt/CGKG3oBs.js
  47. 1
      apps/admin/.output/public/_nuxt/CIcxEwNZ.js
  48. 1
      apps/admin/.output/public/_nuxt/CQ70mTiW.js
  49. 1
      apps/admin/.output/public/_nuxt/CWcpm1jv.js
  50. 4
      apps/admin/.output/public/_nuxt/CWxjl6OD.js
  51. 1
      apps/admin/.output/public/_nuxt/CvD6yA6H.js
  52. 28
      apps/admin/.output/public/_nuxt/DD_13xZ1.js
  53. 1
      apps/admin/.output/public/_nuxt/DhCGnUi5.js
  54. 1
      apps/admin/.output/public/_nuxt/DogYBohj.js
  55. 1
      apps/admin/.output/public/_nuxt/DrH4uMNH.js
  56. 1
      apps/admin/.output/public/_nuxt/G648dITK.js
  57. 1
      apps/admin/.output/public/_nuxt/accounts.B82323Fi.css
  58. 1
      apps/admin/.output/public/_nuxt/builds/latest.json
  59. 1
      apps/admin/.output/public/_nuxt/builds/meta/045d42c9-2405-4f35-94e4-c42d64239a40.json
  60. 1
      apps/admin/.output/public/_nuxt/calltranslate.D9zILOgL.css
  61. 1
      apps/admin/.output/public/_nuxt/dashboard.DGy90zSJ.css
  62. 1
      apps/admin/.output/public/_nuxt/entry.DS97S_sV.css
  63. 1
      apps/admin/.output/public/_nuxt/error-404.Dm-MYrAh.css
  64. 1
      apps/admin/.output/public/_nuxt/error-500.DM8oqBl3.css
  65. 1
      apps/admin/.output/public/_nuxt/fDZAM7sq.js
  66. 1
      apps/admin/.output/public/_nuxt/index.4nAkFRy2.css
  67. 1
      apps/admin/.output/public/_nuxt/qq1ArTA8.js
  68. 1
      apps/admin/.output/public/_nuxt/serviceconfig.GtXqs6_A.css
  69. 1
      apps/admin/.output/public/_nuxt/statlog.C1q_3yEh.css
  70. 4
      apps/admin/.output/public/_nuxt/ydFS6PsN.js
  71. 1
      apps/admin/.output/public/_nuxt/yy0tqe-M.js
  72. 19
      apps/admin/.output/server/chunks/_/error-500.mjs
  73. 1
      apps/admin/.output/server/chunks/_/error-500.mjs.map
  74. 164
      apps/admin/.output/server/chunks/build/accounts-Bou39dJh.mjs
  75. 1
      apps/admin/.output/server/chunks/build/accounts-Bou39dJh.mjs.map
  76. 8
      apps/admin/.output/server/chunks/build/accounts-styles.DcThijbg.mjs
  77. 1
      apps/admin/.output/server/chunks/build/accounts-styles.DcThijbg.mjs.map
  78. 140
      apps/admin/.output/server/chunks/build/apps-DL1E6wot.mjs
  79. 1
      apps/admin/.output/server/chunks/build/apps-DL1E6wot.mjs.map
  80. 39
      apps/admin/.output/server/chunks/build/auth-C9kTPqOY.mjs
  81. 1
      apps/admin/.output/server/chunks/build/auth-C9kTPqOY.mjs.map
  82. 121
      apps/admin/.output/server/chunks/build/auth-QFkCoU1C.mjs
  83. 1
      apps/admin/.output/server/chunks/build/auth-QFkCoU1C.mjs.map
  84. 204
      apps/admin/.output/server/chunks/build/calltranslate-qCADGfI8.mjs
  85. 1
      apps/admin/.output/server/chunks/build/calltranslate-qCADGfI8.mjs.map
  86. 8
      apps/admin/.output/server/chunks/build/calltranslate-styles.DWMho6ro.mjs
  87. 1
      apps/admin/.output/server/chunks/build/calltranslate-styles.DWMho6ro.mjs.map
  88. 4
      apps/admin/.output/server/chunks/build/client.precomputed.mjs
  89. 1
      apps/admin/.output/server/chunks/build/client.precomputed.mjs.map
  90. 103
      apps/admin/.output/server/chunks/build/code-Bi0p3nMD.mjs
  91. 1
      apps/admin/.output/server/chunks/build/code-Bi0p3nMD.mjs.map
  92. 23
      apps/admin/.output/server/chunks/build/composables-BWlosoMG.mjs
  93. 1
      apps/admin/.output/server/chunks/build/composables-BWlosoMG.mjs.map
  94. 267
      apps/admin/.output/server/chunks/build/dashboard-ClL32CVK.mjs
  95. 1
      apps/admin/.output/server/chunks/build/dashboard-ClL32CVK.mjs.map
  96. 8
      apps/admin/.output/server/chunks/build/dashboard-styles.YHe4qmhV.mjs
  97. 1
      apps/admin/.output/server/chunks/build/dashboard-styles.YHe4qmhV.mjs.map
  98. 196
      apps/admin/.output/server/chunks/build/default-CKIkgZOu.mjs
  99. 1
      apps/admin/.output/server/chunks/build/default-CKIkgZOu.mjs.map
  100. 219
      apps/admin/.output/server/chunks/build/device-BeGbj3n2.mjs

6
.gitignore

@ -24,4 +24,10 @@ go.work.sum
# env file
.env
.env.local
# build artifacts
.build/
.logs/
deploy/console/log/

21
apps/admin/.nuxt/app.config.mjs

@ -0,0 +1,21 @@
import { defuFn } from 'defu'
const inlineConfig = {
"nuxt": {}
}
/** client **/
import { _replaceAppConfig } from '#app/config'
// Vite - webpack is handled directly in #app/config
if (import.meta.dev && !import.meta.nitro && import.meta.hot) {
import.meta.hot.accept((newModule) => {
_replaceAppConfig(newModule.default)
})
}
/** client-end **/
export default /*@__PURE__*/ defuFn(inlineConfig)

68
apps/admin/.nuxt/components.d.ts

@ -0,0 +1,68 @@
import type { DefineComponent, SlotsType } from 'vue'
type IslandComponent<T> = DefineComponent<{}, {refresh: () => Promise<void>}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, SlotsType<{ fallback: { error: unknown } }>> & T
type HydrationStrategies = {
hydrateOnVisible?: IntersectionObserverInit | true
hydrateOnIdle?: number | true
hydrateOnInteraction?: keyof HTMLElementEventMap | Array<keyof HTMLElementEventMap> | true
hydrateOnMediaQuery?: string
hydrateAfter?: number
hydrateWhen?: boolean
hydrateNever?: true
}
type LazyComponent<T> = DefineComponent<HydrationStrategies, {}, {}, {}, {}, {}, {}, { hydrated: () => void }> & T
export const AppToast: typeof import("../app/components/AppToast.vue")['default']
export const NuxtWelcome: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/welcome.vue")['default']
export const NuxtLayout: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-layout")['default']
export const NuxtErrorBoundary: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']
export const ClientOnly: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/client-only")['default']
export const DevOnly: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/dev-only")['default']
export const ServerPlaceholder: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/server-placeholder")['default']
export const NuxtLink: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-link")['default']
export const NuxtLoadingIndicator: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']
export const NuxtTime: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']
export const NuxtRouteAnnouncer: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']
export const NuxtAnnouncer: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-announcer")['default']
export const NuxtImg: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtImg']
export const NuxtPicture: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtPicture']
export const NuxtPage: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/pages/runtime/page")['default']
export const NoScript: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['NoScript']
export const Link: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Link']
export const Base: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Base']
export const Title: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Title']
export const Meta: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Meta']
export const Style: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Style']
export const Head: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Head']
export const Html: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Html']
export const Body: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Body']
export const NuxtIsland: typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-island")['default']
export const LazyAppToast: LazyComponent<typeof import("../app/components/AppToast.vue")['default']>
export const LazyNuxtWelcome: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/welcome.vue")['default']>
export const LazyNuxtLayout: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-layout")['default']>
export const LazyNuxtErrorBoundary: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']>
export const LazyClientOnly: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/client-only")['default']>
export const LazyDevOnly: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/dev-only")['default']>
export const LazyServerPlaceholder: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/server-placeholder")['default']>
export const LazyNuxtLink: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-link")['default']>
export const LazyNuxtLoadingIndicator: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']>
export const LazyNuxtTime: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']>
export const LazyNuxtRouteAnnouncer: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']>
export const LazyNuxtAnnouncer: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-announcer")['default']>
export const LazyNuxtImg: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtImg']>
export const LazyNuxtPicture: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtPicture']>
export const LazyNuxtPage: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/pages/runtime/page")['default']>
export const LazyNoScript: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['NoScript']>
export const LazyLink: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Link']>
export const LazyBase: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Base']>
export const LazyTitle: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Title']>
export const LazyMeta: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Meta']>
export const LazyStyle: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Style']>
export const LazyHead: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Head']>
export const LazyHtml: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Html']>
export const LazyBody: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Body']>
export const LazyNuxtIsland: LazyComponent<typeof import("../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-island")['default']>
export const componentNames: string[]

37
apps/admin/.nuxt/imports.d.ts

@ -0,0 +1,37 @@
export { useScriptTriggerConsent, useScriptEventPage, useScriptTriggerElement, useScript, useScriptGoogleAnalytics, useScriptPlausibleAnalytics, useScriptCrisp, useScriptClarity, useScriptCloudflareWebAnalytics, useScriptVercelAnalytics, useScriptPostHog, useScriptFathomAnalytics, useScriptMatomoAnalytics, useScriptMixpanelAnalytics, useScriptBingUet, useScriptGoogleTagManager, useScriptGoogleAdsense, useScriptGoogleRecaptcha, useScriptGoogleSignIn, useScriptSegment, useScriptMetaPixel, useScriptXPixel, useScriptTikTokPixel, useScriptIntercom, useScriptHotjar, useScriptStripe, useScriptLemonSqueezy, useScriptVimeoPlayer, useScriptYouTubePlayer, useScriptGoogleMaps, useScriptNpm, useScriptUmamiAnalytics, useScriptSnapchatPixel, useScriptRybbitAnalytics, useScriptDatabuddyAnalytics, useScriptRedditPixel, useScriptPayPal, useScriptGravatar, useScriptAhrefsAnalytics, useScriptLinkedInInsight, useScriptCalendly, useScriptUsercentrics, useScriptSpeedCurve } from '#app/composables/script-stubs';
export { isVue2, isVue3 } from 'vue-demi';
export { defineNuxtLink } from '#app/components/nuxt-link';
export { useNuxtApp, tryUseNuxtApp, defineNuxtPlugin, definePayloadPlugin, useRuntimeConfig, defineAppConfig } from '#app/nuxt';
export { useAppConfig, updateAppConfig } from '#app/config';
export { defineNuxtComponent } from '#app/composables/component';
export { useAsyncData, useLazyAsyncData, useNuxtData, refreshNuxtData, clearNuxtData, createUseAsyncData } from '#app/composables/asyncData';
export { useHydration } from '#app/composables/hydrate';
export { callOnce } from '#app/composables/once';
export { useState, clearNuxtState } from '#app/composables/state';
export { clearError, createError, isNuxtError, showError, useError } from '#app/composables/error';
export { useFetch, useLazyFetch, createUseFetch } from '#app/composables/fetch';
export { useCookie, refreshCookie } from '#app/composables/cookie';
export { onPrehydrate, prerenderRoutes, useRequestHeader, useRequestHeaders, useResponseHeader, useRequestEvent, useRequestFetch, setResponseStatus } from '#app/composables/ssr';
export { onNuxtReady } from '#app/composables/ready';
export { preloadComponents, prefetchComponents, preloadRouteComponents } from '#app/composables/preload';
export { abortNavigation, addRouteMiddleware, defineNuxtRouteMiddleware, setPageLayout, navigateTo, useRoute, useRouter } from '#app/composables/router';
export { isPrerendered, loadPayload, preloadPayload, definePayloadReducer, definePayloadReviver } from '#app/composables/payload';
export { useLoadingIndicator } from '#app/composables/loading-indicator';
export { getAppManifest, getRouteRules } from '#app/composables/manifest';
export { reloadNuxtApp } from '#app/composables/chunk';
export { useRequestURL } from '#app/composables/url';
export { usePreviewMode } from '#app/composables/preview';
export { useRouteAnnouncer } from '#app/composables/route-announcer';
export { useAnnouncer } from '#app/composables/announcer';
export { useRuntimeHook } from '#app/composables/runtime-hook';
export { useHead, useHeadSafe, useServerHeadSafe, useServerHead, useSeoMeta, useServerSeoMeta, injectHead } from '#app/composables/head';
export { onBeforeRouteLeave, onBeforeRouteUpdate, useLink } from 'vue-router';
export { withCtx, withDirectives, withKeys, withMemo, withModifiers, withScopeId, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, computed, customRef, isProxy, isReactive, isReadonly, isRef, markRaw, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, watch, watchEffect, watchPostEffect, watchSyncEffect, onWatcherCleanup, isShallow, effect, effectScope, getCurrentScope, onScopeDispose, defineComponent, defineAsyncComponent, resolveComponent, getCurrentInstance, h, inject, hasInjectionContext, nextTick, provide, toValue, useModel, useAttrs, useCssModule, useSlots, useTransitionState, useId, useTemplateRef, useShadowRoot, useCssVars, Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue';
export { requestIdleCallback, cancelIdleCallback } from '#app/compat/idle-callback';
export { setInterval } from '#app/compat/interval';
export { definePageMeta, PageMeta } from '#app/composables/pages';
export { defineLazyHydrationComponent } from '#app/composables/lazy-hydration';
export { useApi } from '../app/composables/useApi';
export { useToast, ToastType, Toast } from '../app/composables/useToast';
export { IDENTITY_LABELS, useAuthStore } from '../app/stores/auth';
export { defineStore, acceptHMRUpdate, usePinia, storeToRefs } from '../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables';

1
apps/admin/.nuxt/manifest/meta/69eeaf8b-1851-4f23-9104-41b4cfccebd5.json

@ -0,0 +1 @@
{}

24
apps/admin/.nuxt/nuxt.d.ts

@ -0,0 +1,24 @@
/// <reference types="@nuxtjs/tailwindcss" />
/// <reference types="@nuxt/telemetry" />
/// <reference types="@nuxt/devtools" />
/// <reference types="@pinia/nuxt" />
/// <reference path="types/nitro-layouts.d.ts" />
/// <reference path="types/builder-env.d.ts" />
/// <reference path="types/plugins.d.ts" />
/// <reference path="types/build.d.ts" />
/// <reference path="types/app.config.d.ts" />
/// <reference path="types/runtime-config.d.ts" />
/// <reference types="nuxt/app" />
/// <reference path="../node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/index.d.mts" />
/// <reference types="@pinia/nuxt" />
/// <reference types="vue-router" />
/// <reference path="types/middleware.d.ts" />
/// <reference path="types/nitro-middleware.d.ts" />
/// <reference path="types/layouts.d.ts" />
/// <reference path="types/components.d.ts" />
/// <reference path="imports.d.ts" />
/// <reference path="types/imports.d.ts" />
/// <reference path="schema/nuxt.schema.d.ts" />
/// <reference path="types/nitro.d.ts" />
export {}

15
apps/admin/.nuxt/nuxt.node.d.ts

@ -0,0 +1,15 @@
/// <reference types="@nuxtjs/tailwindcss" />
/// <reference types="@nuxt/telemetry" />
/// <reference types="@nuxt/devtools" />
/// <reference types="@pinia/nuxt" />
/// <reference path="types/nitro-layouts.d.ts" />
/// <reference path="types/modules.d.ts" />
/// <reference path="types/runtime-config.d.ts" />
/// <reference path="types/app.config.d.ts" />
/// <reference types="nuxt" />
/// <reference path="../node_modules/.pnpm/@nuxt+vite-builder@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__magicast@0_b3eceb086616bd95e9bad3803348d7ce/node_modules/@nuxt/vite-builder/dist/index.d.mts" />
/// <reference path="../node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/index.d.mts" />
/// <reference path="types/nitro-middleware.d.ts" />
/// <reference path="schema/nuxt.schema.d.ts" />
export {}

6
apps/admin/.nuxt/nuxt.shared.d.ts

@ -0,0 +1,6 @@
/// <reference path="types/runtime-config.d.ts" />
/// <reference path="types/app.config.d.ts" />
/// <reference path="types/shared-imports.d.ts" />
/// <reference path="schema/nuxt.schema.d.ts" />
export {}

17
apps/admin/.nuxt/schema/nuxt.schema.d.ts

@ -0,0 +1,17 @@
export interface NuxtCustomSchema {
}
export type CustomAppConfig = Exclude<NuxtCustomSchema['appConfig'], undefined>
type _CustomAppConfig = CustomAppConfig
declare module '@nuxt/schema' {
interface NuxtConfig extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface NuxtOptions extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface CustomAppConfig extends _CustomAppConfig {}
}
declare module 'nuxt/schema' {
interface NuxtConfig extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface NuxtOptions extends Omit<NuxtCustomSchema, 'appConfig'> {}
interface CustomAppConfig extends _CustomAppConfig {}
}

3
apps/admin/.nuxt/schema/nuxt.schema.json

@ -0,0 +1,3 @@
{
"id": "#"
}

14
apps/admin/.nuxt/tailwind/postcss.mjs

@ -0,0 +1,14 @@
// generated by the @nuxtjs/tailwindcss <https://github.com/nuxt-modules/tailwindcss> module at 6/24/2026, 4:45:28 PM
import "@nuxtjs/tailwindcss/config-ctx"
import configMerger from "@nuxtjs/tailwindcss/merger";
import cfg2 from "./../../tailwind.config.ts";
const config = [
{"content":{"files":["/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/plugins/**/*.{js,ts,mjs}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/composables/**/*.{js,ts,mjs}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/utils/**/*.{js,ts,mjs}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/app.config.{js,ts,mjs}"]}},
{},
cfg2
].reduce((acc, curr) => configMerger(acc, curr), {});
const resolvedConfig = config;
export default resolvedConfig;

208
apps/admin/.nuxt/tsconfig.app.json

@ -0,0 +1,208 @@
{
"compilerOptions": {
"paths": {
"vue-router": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router"
],
"nuxt": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt"
],
"@unhead/vue": [
"../node_modules/.pnpm/@unhead+vue@2.1.15_vue@3.5.38_typescript@5.9.3_/node_modules/@unhead/vue"
],
"@nuxt/devtools": [
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools"
],
"@vue/runtime-core": [
"../node_modules/.pnpm/@vue+runtime-core@3.5.38/node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/.pnpm/@vue+compiler-sfc@3.5.38/node_modules/@vue/compiler-sfc"
],
"@nuxt/schema": [
"../node_modules/.pnpm/@nuxt+schema@4.4.8/node_modules/@nuxt/schema"
],
"defu": [
"../node_modules/.pnpm/defu@6.1.7/node_modules/defu"
],
"h3": [
"../node_modules/.pnpm/h3@1.15.11/node_modules/h3"
],
"consola": [
"../node_modules/.pnpm/consola@3.4.2/node_modules/consola"
],
"ofetch": [
"../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch"
],
"crossws": [
"../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws"
],
"nitropack": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack"
],
"vite/client": [
"../node_modules/.pnpm/vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0/node_modules/vite/client"
],
"nitropack/types": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/types"
],
"nitropack/runtime": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/runtime"
],
"vue-router/auto-routes": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router/vue-router-auto-routes.d.mts"
],
"~": [
"../app"
],
"~/*": [
"../app/*"
],
"@": [
"../app"
],
"@/*": [
"../app/*"
],
"~~": [
".."
],
"~~/*": [
"../*"
],
"@@": [
".."
],
"@@/*": [
"../*"
],
"#shared": [
"../shared"
],
"#shared/*": [
"../shared/*"
],
"#server": [
"../server"
],
"#server/*": [
"../server/*"
],
"#app": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app"
],
"#app/*": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/*"
],
"vue-demi": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/vue-demi"
],
"#vue-router": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router"
],
"#unhead/composables": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/composables"
],
"#imports": [
"./imports"
],
"#app-manifest": [
"./manifest/meta/69eeaf8b-1851-4f23-9104-41b4cfccebd5.json"
],
"#components": [
"./components"
],
"#build": [
"."
],
"#build/*": [
"./*"
]
},
"esModuleInterop": true,
"skipLibCheck": true,
"target": "ESNext",
"allowJs": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
"allowArbitraryExtensions": true,
"strict": true,
"noUncheckedIndexedAccess": true,
"forceConsistentCasingInFileNames": true,
"noImplicitOverride": true,
"module": "preserve",
"noEmit": true,
"lib": [
"ESNext",
"dom",
"dom.iterable",
"webworker"
],
"jsx": "preserve",
"jsxImportSource": "vue",
"types": [],
"moduleResolution": "Bundler",
"useDefineForClassFields": true,
"noImplicitThis": true,
"allowSyntheticDefaultImports": true
},
"include": [
"./nuxt.d.ts",
"../app/**/*",
"../modules/*/runtime/**/*",
"../test/nuxt/**/*",
"../tests/nuxt/**/*",
"../layers/*/app/**/*",
"../layers/*/modules/*/runtime/**/*",
"../shared/**/*.d.ts",
"../modules/*/shared/**/*.d.ts",
"../layers/*/shared/**/*.d.ts",
"../*.d.ts",
"../layers/*/*.d.ts"
],
"exclude": [
"../node_modules",
"../../../node_modules",
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/node_modules",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/@nuxtjs/tailwindcss/node_modules",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/node_modules",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools/node_modules",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/@nuxt/telemetry/node_modules",
"../dist",
"../.data",
"../modules/*/runtime/server/**/*",
"../layers/*/server/**/*",
"../layers/*/modules/*/runtime/server/**/*",
"../modules/*.*",
"../nuxt.config.*",
"../.config/nuxt.*",
"../layers/*/nuxt.config.*",
"../layers/*/.config/nuxt.*",
"../layers/*/modules/**/*",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/runtime/server",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/dist/runtime/server",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/*.*",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/dist/*.*",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/runtime/server",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/dist/runtime/server",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/*.*",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/dist/*.*",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/runtime/server",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/dist/runtime/server",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/*.*",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/dist/*.*",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/runtime/server",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/dist/runtime/server",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/*.*",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/dist/*.*",
"../.output",
"../server"
],
"vueCompilerOptions": {
"plugins": [
"vue-router/volar/sfc-route-blocks"
]
}
}

210
apps/admin/.nuxt/tsconfig.json

@ -0,0 +1,210 @@
{
"compilerOptions": {
"paths": {
"vue-router": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router"
],
"nuxt": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt"
],
"@unhead/vue": [
"../node_modules/.pnpm/@unhead+vue@2.1.15_vue@3.5.38_typescript@5.9.3_/node_modules/@unhead/vue"
],
"@nuxt/devtools": [
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools"
],
"@vue/runtime-core": [
"../node_modules/.pnpm/@vue+runtime-core@3.5.38/node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/.pnpm/@vue+compiler-sfc@3.5.38/node_modules/@vue/compiler-sfc"
],
"@nuxt/schema": [
"../node_modules/.pnpm/@nuxt+schema@4.4.8/node_modules/@nuxt/schema"
],
"defu": [
"../node_modules/.pnpm/defu@6.1.7/node_modules/defu"
],
"h3": [
"../node_modules/.pnpm/h3@1.15.11/node_modules/h3"
],
"consola": [
"../node_modules/.pnpm/consola@3.4.2/node_modules/consola"
],
"ofetch": [
"../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch"
],
"crossws": [
"../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws"
],
"nitropack": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack"
],
"vite/client": [
"../node_modules/.pnpm/vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0/node_modules/vite/client"
],
"nitropack/types": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/types"
],
"nitropack/runtime": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/runtime"
],
"vue-router/auto-routes": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router/vue-router-auto-routes.d.mts"
],
"~": [
"../app"
],
"~/*": [
"../app/*"
],
"@": [
"../app"
],
"@/*": [
"../app/*"
],
"~~": [
".."
],
"~~/*": [
"../*"
],
"@@": [
".."
],
"@@/*": [
"../*"
],
"#shared": [
"../shared"
],
"#shared/*": [
"../shared/*"
],
"#server": [
"../server"
],
"#server/*": [
"../server/*"
],
"#app": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app"
],
"#app/*": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/*"
],
"vue-demi": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/vue-demi"
],
"#vue-router": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router"
],
"#unhead/composables": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/composables"
],
"#imports": [
"./imports"
],
"#app-manifest": [
"./manifest/meta/69eeaf8b-1851-4f23-9104-41b4cfccebd5.json"
],
"#components": [
"./components"
],
"#build": [
"."
],
"#build/*": [
"./*"
]
},
"esModuleInterop": true,
"skipLibCheck": true,
"target": "ESNext",
"allowJs": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
"allowArbitraryExtensions": true,
"strict": true,
"noUncheckedIndexedAccess": true,
"forceConsistentCasingInFileNames": true,
"noImplicitOverride": true,
"module": "preserve",
"noEmit": true,
"lib": [
"ESNext",
"dom",
"dom.iterable",
"webworker"
],
"jsx": "preserve",
"jsxImportSource": "vue",
"types": [],
"moduleResolution": "Bundler",
"useDefineForClassFields": true,
"noImplicitThis": true,
"allowSyntheticDefaultImports": true
},
"include": [
"./nuxt.d.ts",
"../app/**/*",
"../modules/*/runtime/**/*",
"../test/nuxt/**/*",
"../tests/nuxt/**/*",
"../layers/*/app/**/*",
"../layers/*/modules/*/runtime/**/*",
"../shared/**/*.d.ts",
"../modules/*/shared/**/*.d.ts",
"../layers/*/shared/**/*.d.ts",
"../*.d.ts",
"../layers/*/*.d.ts",
"./nuxt.node.d.ts",
"../modules/*.*",
"../nuxt.config.*",
"../.config/nuxt.*",
"../layers/*/nuxt.config.*",
"../layers/*/.config/nuxt.*",
"../layers/*/modules/**/*",
"../shared/**/*",
"../modules/*/shared/**/*",
"../layers/*/shared/**/*",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/runtime",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/dist/runtime",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/runtime",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/dist/runtime",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/runtime",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/dist/runtime",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/runtime",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/dist/runtime"
],
"exclude": [
"../node_modules",
"../../../node_modules",
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/node_modules",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/@nuxtjs/tailwindcss/node_modules",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/node_modules",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools/node_modules",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/@nuxt/telemetry/node_modules",
"../dist",
"../.data",
"../modules/*/runtime/server/**/*",
"../layers/*/server/**/*",
"../layers/*/modules/*/runtime/server/**/*",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/runtime/server",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/dist/runtime/server",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/runtime/server",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/dist/runtime/server",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/runtime/server",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/dist/runtime/server",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/runtime/server",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/dist/runtime/server"
],
"vueCompilerOptions": {
"plugins": [
"vue-router/volar/sfc-route-blocks"
]
}
}

116
apps/admin/.nuxt/tsconfig.node.json

@ -0,0 +1,116 @@
{
"compilerOptions": {
"paths": {
"vue-router": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router"
],
"nuxt": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt"
],
"@unhead/vue": [
"../node_modules/.pnpm/@unhead+vue@2.1.15_vue@3.5.38_typescript@5.9.3_/node_modules/@unhead/vue"
],
"@nuxt/devtools": [
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools"
],
"@vue/runtime-core": [
"../node_modules/.pnpm/@vue+runtime-core@3.5.38/node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/.pnpm/@vue+compiler-sfc@3.5.38/node_modules/@vue/compiler-sfc"
],
"@nuxt/schema": [
"../node_modules/.pnpm/@nuxt+schema@4.4.8/node_modules/@nuxt/schema"
],
"defu": [
"../node_modules/.pnpm/defu@6.1.7/node_modules/defu"
],
"h3": [
"../node_modules/.pnpm/h3@1.15.11/node_modules/h3"
],
"consola": [
"../node_modules/.pnpm/consola@3.4.2/node_modules/consola"
],
"ofetch": [
"../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch"
],
"crossws": [
"../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws"
],
"nitropack": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack"
],
"vite/client": [
"../node_modules/.pnpm/vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0/node_modules/vite/client"
],
"nitropack/types": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/types"
],
"nitropack/runtime": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/runtime"
],
"vue-router/auto-routes": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router/vue-router-auto-routes.d.mts"
]
},
"esModuleInterop": true,
"skipLibCheck": true,
"target": "ESNext",
"allowJs": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
"allowArbitraryExtensions": true,
"strict": true,
"noUncheckedIndexedAccess": true,
"forceConsistentCasingInFileNames": true,
"noImplicitOverride": true,
"module": "preserve",
"noEmit": true,
"types": [],
"moduleResolution": "Bundler",
"useDefineForClassFields": true,
"noImplicitThis": true,
"allowSyntheticDefaultImports": true
},
"include": [
"./nuxt.node.d.ts",
"../modules/*.*",
"../nuxt.config.*",
"../.config/nuxt.*",
"../layers/*/nuxt.config.*",
"../layers/*/.config/nuxt.*",
"../layers/*/modules/**/*",
"../nuxt.schema.*",
"../layers/*/nuxt.schema.*"
],
"exclude": [
"../node_modules",
"../../../node_modules",
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/node_modules",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/@nuxtjs/tailwindcss/node_modules",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/node_modules",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools/node_modules",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/@nuxt/telemetry/node_modules",
"../dist",
"../.data",
"../app/**/*",
"../modules/*/runtime/**/*",
"../test/nuxt/**/*",
"../tests/nuxt/**/*",
"../layers/*/app/**/*",
"../layers/*/modules/*/runtime/**/*",
"../modules/*/runtime/server/**/*",
"../layers/*/server/**/*",
"../layers/*/modules/*/runtime/server/**/*",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/runtime",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/dist/runtime",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/runtime",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/dist/runtime",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/runtime",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/dist/runtime",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/runtime",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/dist/runtime"
]
}

140
apps/admin/.nuxt/tsconfig.server.json

@ -0,0 +1,140 @@
{
"compilerOptions": {
"forceConsistentCasingInFileNames": true,
"strict": true,
"noEmit": true,
"skipLibCheck": true,
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "Bundler",
"allowJs": true,
"resolveJsonModule": true,
"jsx": "preserve",
"allowSyntheticDefaultImports": true,
"jsxFactory": "h",
"jsxFragmentFactory": "Fragment",
"paths": {
"#imports": [
"./types/nitro-imports"
],
"~/*": [
"../app/*"
],
"@/*": [
"../app/*"
],
"~~/*": [
"../*"
],
"@@/*": [
"../*"
],
"vue-router": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router"
],
"nuxt": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt"
],
"@unhead/vue": [
"../node_modules/.pnpm/@unhead+vue@2.1.15_vue@3.5.38_typescript@5.9.3_/node_modules/@unhead/vue"
],
"@nuxt/devtools": [
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools"
],
"@vue/runtime-core": [
"../node_modules/.pnpm/@vue+runtime-core@3.5.38/node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/.pnpm/@vue+compiler-sfc@3.5.38/node_modules/@vue/compiler-sfc"
],
"@nuxt/schema": [
"../node_modules/.pnpm/@nuxt+schema@4.4.8/node_modules/@nuxt/schema"
],
"defu": [
"../node_modules/.pnpm/defu@6.1.7/node_modules/defu"
],
"h3": [
"../node_modules/.pnpm/h3@1.15.11/node_modules/h3"
],
"consola": [
"../node_modules/.pnpm/consola@3.4.2/node_modules/consola"
],
"ofetch": [
"../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch"
],
"crossws": [
"../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws"
],
"nitropack": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack"
],
"vite/client": [
"../node_modules/.pnpm/vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0/node_modules/vite/client"
],
"nitropack/types": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/types"
],
"nitropack/runtime": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/runtime"
],
"vue-router/auto-routes": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router/vue-router-auto-routes.d"
],
"#shared": [
"../shared"
],
"#shared/*": [
"../shared/*"
],
"#server": [
"../server"
],
"#server/*": [
"../server/*"
],
"#build": [
"./"
],
"#build/*": [
"./*"
],
"#internal/nuxt/paths": [
"../node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths"
],
"#unhead/composables": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/composables"
]
},
"lib": [
"esnext",
"webworker",
"dom.iterable"
],
"noUncheckedIndexedAccess": true,
"allowArbitraryExtensions": true
},
"include": [
"./types/nitro-nuxt.d.ts",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/runtime/server",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/dist/runtime/server",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/runtime/server",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/dist/runtime/server",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/runtime/server",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/dist/runtime/server",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/runtime/server",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/dist/runtime/server",
"../server/**/*",
"../shared/**/*.d.ts",
"./types/nitro.d.ts"
],
"exclude": [
"../node_modules",
"../../../node_modules",
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/node_modules",
"../node_modules/.pnpm/@nuxtjs+tailwindcss@6.14.0_magicast@0.5.3_yaml@2.9.0/node_modules/@nuxtjs/tailwindcss/node_modules",
"../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/node_modules",
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools/node_modules",
"../node_modules/.pnpm/@nuxt+telemetry@2.8.0_@nuxt+kit@4.4.8_magicast@0.5.3_/node_modules/@nuxt/telemetry/node_modules",
"../dist"
]
}

149
apps/admin/.nuxt/tsconfig.shared.json

@ -0,0 +1,149 @@
{
"compilerOptions": {
"paths": {
"vue-router": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router"
],
"nuxt": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt"
],
"@unhead/vue": [
"../node_modules/.pnpm/@unhead+vue@2.1.15_vue@3.5.38_typescript@5.9.3_/node_modules/@unhead/vue"
],
"@nuxt/devtools": [
"../node_modules/.pnpm/@nuxt+devtools@3.2.4_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0__vue@3.5.38_typescript@5.9.3_/node_modules/@nuxt/devtools"
],
"@vue/runtime-core": [
"../node_modules/.pnpm/@vue+runtime-core@3.5.38/node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/.pnpm/@vue+compiler-sfc@3.5.38/node_modules/@vue/compiler-sfc"
],
"@nuxt/schema": [
"../node_modules/.pnpm/@nuxt+schema@4.4.8/node_modules/@nuxt/schema"
],
"defu": [
"../node_modules/.pnpm/defu@6.1.7/node_modules/defu"
],
"h3": [
"../node_modules/.pnpm/h3@1.15.11/node_modules/h3"
],
"consola": [
"../node_modules/.pnpm/consola@3.4.2/node_modules/consola"
],
"ofetch": [
"../node_modules/.pnpm/ofetch@1.5.1/node_modules/ofetch"
],
"crossws": [
"../node_modules/.pnpm/crossws@0.3.5/node_modules/crossws"
],
"nitropack": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack"
],
"vite/client": [
"../node_modules/.pnpm/vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0/node_modules/vite/client"
],
"nitropack/types": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/types"
],
"nitropack/runtime": [
"../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/runtime"
],
"vue-router/auto-routes": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router/vue-router-auto-routes.d.mts"
],
"~": [
"../app"
],
"~/*": [
"../app/*"
],
"@": [
"../app"
],
"@/*": [
"../app/*"
],
"~~": [
".."
],
"~~/*": [
"../*"
],
"@@": [
".."
],
"@@/*": [
"../*"
],
"#shared": [
"../shared"
],
"#shared/*": [
"../shared/*"
],
"#server": [
"../server"
],
"#server/*": [
"../server/*"
],
"#app": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app"
],
"#app/*": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/*"
],
"vue-demi": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/vue-demi"
],
"#vue-router": [
"../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router"
],
"#unhead/composables": [
"../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/composables"
],
"#imports": [
"./imports"
],
"#app-manifest": [
"./manifest/meta/69eeaf8b-1851-4f23-9104-41b4cfccebd5.json"
],
"#build": [
"."
],
"#build/*": [
"./*"
]
},
"esModuleInterop": true,
"skipLibCheck": true,
"target": "ESNext",
"allowJs": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
"allowArbitraryExtensions": true,
"strict": true,
"noUncheckedIndexedAccess": true,
"forceConsistentCasingInFileNames": true,
"noImplicitOverride": true,
"module": "preserve",
"noEmit": true,
"types": [],
"moduleResolution": "Bundler",
"useDefineForClassFields": true,
"noImplicitThis": true,
"allowSyntheticDefaultImports": true
},
"include": [
"./nuxt.shared.d.ts",
"../shared/**/*",
"../modules/*/shared/**/*",
"../layers/*/shared/**/*",
"../*.d.ts",
"../layers/*/*.d.ts"
],
"exclude": []
}

35
apps/admin/.nuxt/types/app.config.d.ts

@ -0,0 +1,35 @@
import type { AppConfigInput, CustomAppConfig } from 'nuxt/schema'
import type { Defu } from 'defu'
declare global {
const defineAppConfig: <C extends AppConfigInput> (config: C) => C
}
declare const inlineConfig = {
"nuxt": {}
}
type ResolvedAppConfig = Defu<typeof inlineConfig, []>
type IsAny<T> = 0 extends 1 & T ? true : false
type MergedAppConfig<Resolved extends Record<string, unknown>, Custom extends Record<string, unknown>> = {
[K in keyof (Resolved & Custom)]: K extends keyof Custom
? unknown extends Custom[K]
? Resolved[K]
: IsAny<Custom[K]> extends true
? Resolved[K]
: Custom[K] extends Record<string, any>
? Resolved[K] extends Record<string, any>
? MergedAppConfig<Resolved[K], Custom[K]>
: Exclude<Custom[K], undefined>
: Exclude<Custom[K], undefined>
: Resolved[K]
}
declare module 'nuxt/schema' {
interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { }
}
declare module '@nuxt/schema' {
interface AppConfig extends MergedAppConfig<ResolvedAppConfig, CustomAppConfig> { }
}

24
apps/admin/.nuxt/types/build.d.ts

@ -0,0 +1,24 @@
declare module "#build/app-component.mjs";
declare module "#build/nitro.client.mjs";
declare module "#build/plugins.client.mjs";
declare module "#build/css.mjs";
declare module "#build/fetch.mjs";
declare module "#build/error-component.mjs";
declare module "#build/global-polyfills.mjs";
declare module "#build/layouts.mjs";
declare module "#build/middleware.mjs";
declare module "#build/nuxt.config.mjs";
declare module "#build/paths.mjs";
declare module "#build/root-component.mjs";
declare module "#build/plugins.server.mjs";
declare module "#build/test-component-wrapper.mjs";
declare module "#build/routes.mjs";
declare module "#build/pages.mjs";
declare module "#build/router.options.mjs";
declare module "#build/unhead-options.mjs";
declare module "#build/unhead.config.mjs";
declare module "#build/components.plugin.mjs";
declare module "#build/component-names.mjs";
declare module "#build/components.islands.mjs";
declare module "#build/component-chunk.mjs";
declare module "#build/route-rules.mjs";

1
apps/admin/.nuxt/types/builder-env.d.ts

@ -0,0 +1 @@
import "vite/client";

73
apps/admin/.nuxt/types/components.d.ts

@ -0,0 +1,73 @@
import type { DefineComponent, SlotsType } from 'vue'
type IslandComponent<T> = DefineComponent<{}, {refresh: () => Promise<void>}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, SlotsType<{ fallback: { error: unknown } }>> & T
type HydrationStrategies = {
hydrateOnVisible?: IntersectionObserverInit | true
hydrateOnIdle?: number | true
hydrateOnInteraction?: keyof HTMLElementEventMap | Array<keyof HTMLElementEventMap> | true
hydrateOnMediaQuery?: string
hydrateAfter?: number
hydrateWhen?: boolean
hydrateNever?: true
}
type LazyComponent<T> = DefineComponent<HydrationStrategies, {}, {}, {}, {}, {}, {}, { hydrated: () => void }> & T
interface _GlobalComponents {
AppToast: typeof import("../../app/components/AppToast.vue")['default']
NuxtWelcome: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/welcome.vue")['default']
NuxtLayout: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-layout")['default']
NuxtErrorBoundary: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']
ClientOnly: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/client-only")['default']
DevOnly: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/dev-only")['default']
ServerPlaceholder: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/server-placeholder")['default']
NuxtLink: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-link")['default']
NuxtLoadingIndicator: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']
NuxtTime: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']
NuxtRouteAnnouncer: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']
NuxtAnnouncer: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-announcer")['default']
NuxtImg: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtImg']
NuxtPicture: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtPicture']
NuxtPage: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/pages/runtime/page")['default']
NoScript: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['NoScript']
Link: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Link']
Base: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Base']
Title: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Title']
Meta: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Meta']
Style: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Style']
Head: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Head']
Html: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Html']
Body: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Body']
NuxtIsland: typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-island")['default']
LazyAppToast: LazyComponent<typeof import("../../app/components/AppToast.vue")['default']>
LazyNuxtWelcome: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/welcome.vue")['default']>
LazyNuxtLayout: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-layout")['default']>
LazyNuxtErrorBoundary: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-error-boundary.vue")['default']>
LazyClientOnly: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/client-only")['default']>
LazyDevOnly: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/dev-only")['default']>
LazyServerPlaceholder: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/server-placeholder")['default']>
LazyNuxtLink: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-link")['default']>
LazyNuxtLoadingIndicator: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-loading-indicator")['default']>
LazyNuxtTime: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-time.vue")['default']>
LazyNuxtRouteAnnouncer: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-route-announcer")['default']>
LazyNuxtAnnouncer: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-announcer")['default']>
LazyNuxtImg: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtImg']>
LazyNuxtPicture: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-stubs")['NuxtPicture']>
LazyNuxtPage: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/pages/runtime/page")['default']>
LazyNoScript: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['NoScript']>
LazyLink: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Link']>
LazyBase: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Base']>
LazyTitle: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Title']>
LazyMeta: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Meta']>
LazyStyle: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Style']>
LazyHead: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Head']>
LazyHtml: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Html']>
LazyBody: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/components")['Body']>
LazyNuxtIsland: LazyComponent<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-island")['default']>
}
declare module 'vue' {
export interface GlobalComponents extends _GlobalComponents { }
}
export {}

416
apps/admin/.nuxt/types/imports.d.ts

@ -0,0 +1,416 @@
// Generated by auto imports
export {}
declare global {
const IDENTITY_LABELS: typeof import('../../app/stores/auth').IDENTITY_LABELS
const abortNavigation: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router').abortNavigation
const acceptHMRUpdate: typeof import('../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables').acceptHMRUpdate
const addRouteMiddleware: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router').addRouteMiddleware
const callOnce: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/once').callOnce
const cancelIdleCallback: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/idle-callback').cancelIdleCallback
const clearError: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/error').clearError
const clearNuxtData: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData').clearNuxtData
const clearNuxtState: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/state').clearNuxtState
const computed: typeof import('vue').computed
const createError: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/error').createError
const createUseAsyncData: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData').createUseAsyncData
const createUseFetch: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/fetch').createUseFetch
const customRef: typeof import('vue').customRef
const defineAppConfig: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt').defineAppConfig
const defineAsyncComponent: typeof import('vue').defineAsyncComponent
const defineComponent: typeof import('vue').defineComponent
const defineLazyHydrationComponent: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/lazy-hydration').defineLazyHydrationComponent
const defineNuxtComponent: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/component').defineNuxtComponent
const defineNuxtLink: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-link').defineNuxtLink
const defineNuxtPlugin: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt').defineNuxtPlugin
const defineNuxtRouteMiddleware: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router').defineNuxtRouteMiddleware
const definePageMeta: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/pages').definePageMeta
const definePayloadPlugin: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt').definePayloadPlugin
const definePayloadReducer: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/payload').definePayloadReducer
const definePayloadReviver: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/payload').definePayloadReviver
const defineStore: typeof import('../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables').defineStore
const effect: typeof import('vue').effect
const effectScope: typeof import('vue').effectScope
const getAppManifest: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/manifest').getAppManifest
const getCurrentInstance: typeof import('vue').getCurrentInstance
const getCurrentScope: typeof import('vue').getCurrentScope
const getRouteRules: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/manifest').getRouteRules
const h: typeof import('vue').h
const hasInjectionContext: typeof import('vue').hasInjectionContext
const inject: typeof import('vue').inject
const injectHead: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head').injectHead
const isNuxtError: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/error').isNuxtError
const isPrerendered: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/payload').isPrerendered
const isProxy: typeof import('vue').isProxy
const isReactive: typeof import('vue').isReactive
const isReadonly: typeof import('vue').isReadonly
const isRef: typeof import('vue').isRef
const isShallow: typeof import('vue').isShallow
const isVue2: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/vue-demi').isVue2
const isVue3: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/vue-demi').isVue3
const loadPayload: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/payload').loadPayload
const markRaw: typeof import('vue').markRaw
const navigateTo: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router').navigateTo
const nextTick: typeof import('vue').nextTick
const onActivated: typeof import('vue').onActivated
const onBeforeMount: typeof import('vue').onBeforeMount
const onBeforeRouteLeave: typeof import('../../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router').onBeforeRouteLeave
const onBeforeRouteUpdate: typeof import('../../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router').onBeforeRouteUpdate
const onBeforeUnmount: typeof import('vue').onBeforeUnmount
const onBeforeUpdate: typeof import('vue').onBeforeUpdate
const onDeactivated: typeof import('vue').onDeactivated
const onErrorCaptured: typeof import('vue').onErrorCaptured
const onMounted: typeof import('vue').onMounted
const onNuxtReady: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ready').onNuxtReady
const onPrehydrate: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr').onPrehydrate
const onRenderTracked: typeof import('vue').onRenderTracked
const onRenderTriggered: typeof import('vue').onRenderTriggered
const onScopeDispose: typeof import('vue').onScopeDispose
const onServerPrefetch: typeof import('vue').onServerPrefetch
const onUnmounted: typeof import('vue').onUnmounted
const onUpdated: typeof import('vue').onUpdated
const onWatcherCleanup: typeof import('vue').onWatcherCleanup
const prefetchComponents: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/preload').prefetchComponents
const preloadComponents: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/preload').preloadComponents
const preloadPayload: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/payload').preloadPayload
const preloadRouteComponents: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/preload').preloadRouteComponents
const prerenderRoutes: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr').prerenderRoutes
const provide: typeof import('vue').provide
const proxyRefs: typeof import('vue').proxyRefs
const reactive: typeof import('vue').reactive
const readonly: typeof import('vue').readonly
const ref: typeof import('vue').ref
const refreshCookie: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/cookie').refreshCookie
const refreshNuxtData: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData').refreshNuxtData
const reloadNuxtApp: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/chunk').reloadNuxtApp
const requestIdleCallback: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/idle-callback').requestIdleCallback
const resolveComponent: typeof import('vue').resolveComponent
const setInterval: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/interval').setInterval
const setPageLayout: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router').setPageLayout
const setResponseStatus: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr').setResponseStatus
const shallowReactive: typeof import('vue').shallowReactive
const shallowReadonly: typeof import('vue').shallowReadonly
const shallowRef: typeof import('vue').shallowRef
const showError: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/error').showError
const storeToRefs: typeof import('../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables').storeToRefs
const toRaw: typeof import('vue').toRaw
const toRef: typeof import('vue').toRef
const toRefs: typeof import('vue').toRefs
const toValue: typeof import('vue').toValue
const triggerRef: typeof import('vue').triggerRef
const tryUseNuxtApp: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt').tryUseNuxtApp
const unref: typeof import('vue').unref
const updateAppConfig: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/config').updateAppConfig
const useAnnouncer: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/announcer').useAnnouncer
const useApi: typeof import('../../app/composables/useApi').useApi
const useAppConfig: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/config').useAppConfig
const useAsyncData: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData').useAsyncData
const useAttrs: typeof import('vue').useAttrs
const useAuthStore: typeof import('../../app/stores/auth').useAuthStore
const useCookie: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/cookie').useCookie
const useCssModule: typeof import('vue').useCssModule
const useCssVars: typeof import('vue').useCssVars
const useError: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/error').useError
const useFetch: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/fetch').useFetch
const useHead: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head').useHead
const useHeadSafe: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head').useHeadSafe
const useHydration: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/hydrate').useHydration
const useId: typeof import('vue').useId
const useLazyAsyncData: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData').useLazyAsyncData
const useLazyFetch: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/fetch').useLazyFetch
const useLink: typeof import('../../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router').useLink
const useLoadingIndicator: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/loading-indicator').useLoadingIndicator
const useModel: typeof import('vue').useModel
const useNuxtApp: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt').useNuxtApp
const useNuxtData: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData').useNuxtData
const usePinia: typeof import('../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables').usePinia
const usePreviewMode: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/preview').usePreviewMode
const useRequestEvent: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr').useRequestEvent
const useRequestFetch: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr').useRequestFetch
const useRequestHeader: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr').useRequestHeader
const useRequestHeaders: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr').useRequestHeaders
const useRequestURL: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/url').useRequestURL
const useResponseHeader: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr').useResponseHeader
const useRoute: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router').useRoute
const useRouteAnnouncer: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/route-announcer').useRouteAnnouncer
const useRouter: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router').useRouter
const useRuntimeConfig: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt').useRuntimeConfig
const useRuntimeHook: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/runtime-hook').useRuntimeHook
const useScript: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScript
const useScriptAhrefsAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptAhrefsAnalytics
const useScriptBingUet: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptBingUet
const useScriptCalendly: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptCalendly
const useScriptClarity: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptClarity
const useScriptCloudflareWebAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptCloudflareWebAnalytics
const useScriptCrisp: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptCrisp
const useScriptDatabuddyAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptDatabuddyAnalytics
const useScriptEventPage: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptEventPage
const useScriptFathomAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptFathomAnalytics
const useScriptGoogleAdsense: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleAdsense
const useScriptGoogleAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleAnalytics
const useScriptGoogleMaps: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleMaps
const useScriptGoogleRecaptcha: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleRecaptcha
const useScriptGoogleSignIn: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleSignIn
const useScriptGoogleTagManager: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptGoogleTagManager
const useScriptGravatar: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptGravatar
const useScriptHotjar: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptHotjar
const useScriptIntercom: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptIntercom
const useScriptLemonSqueezy: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptLemonSqueezy
const useScriptLinkedInInsight: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptLinkedInInsight
const useScriptMatomoAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptMatomoAnalytics
const useScriptMetaPixel: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptMetaPixel
const useScriptMixpanelAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptMixpanelAnalytics
const useScriptNpm: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptNpm
const useScriptPayPal: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptPayPal
const useScriptPlausibleAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptPlausibleAnalytics
const useScriptPostHog: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptPostHog
const useScriptRedditPixel: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptRedditPixel
const useScriptRybbitAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptRybbitAnalytics
const useScriptSegment: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptSegment
const useScriptSnapchatPixel: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptSnapchatPixel
const useScriptSpeedCurve: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptSpeedCurve
const useScriptStripe: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptStripe
const useScriptTikTokPixel: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptTikTokPixel
const useScriptTriggerConsent: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptTriggerConsent
const useScriptTriggerElement: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptTriggerElement
const useScriptUmamiAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptUmamiAnalytics
const useScriptUsercentrics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptUsercentrics
const useScriptVercelAnalytics: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptVercelAnalytics
const useScriptVimeoPlayer: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptVimeoPlayer
const useScriptXPixel: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptXPixel
const useScriptYouTubePlayer: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs').useScriptYouTubePlayer
const useSeoMeta: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head').useSeoMeta
const useServerHead: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head').useServerHead
const useServerHeadSafe: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head').useServerHeadSafe
const useServerSeoMeta: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head').useServerSeoMeta
const useShadowRoot: typeof import('vue').useShadowRoot
const useSlots: typeof import('vue').useSlots
const useState: typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/state').useState
const useTemplateRef: typeof import('vue').useTemplateRef
const useToast: typeof import('../../app/composables/useToast').useToast
const useTransitionState: typeof import('vue').useTransitionState
const watch: typeof import('vue').watch
const watchEffect: typeof import('vue').watchEffect
const watchPostEffect: typeof import('vue').watchPostEffect
const watchSyncEffect: typeof import('vue').watchSyncEffect
const withCtx: typeof import('vue').withCtx
const withDirectives: typeof import('vue').withDirectives
const withKeys: typeof import('vue').withKeys
const withMemo: typeof import('vue').withMemo
const withModifiers: typeof import('vue').withModifiers
const withScopeId: typeof import('vue').withScopeId
}
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
import('vue')
// @ts-ignore
export type { PageMeta } from '../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/pages'
import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/pages')
// @ts-ignore
export type { ToastType, Toast } from '../../app/composables/useToast'
import('../../app/composables/useToast')
}
// for vue template auto import
import { UnwrapRef } from 'vue'
declare module 'vue' {
interface ComponentCustomProperties {
readonly IDENTITY_LABELS: UnwrapRef<typeof import('../../app/stores/auth')['IDENTITY_LABELS']>
readonly abortNavigation: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router')['abortNavigation']>
readonly acceptHMRUpdate: UnwrapRef<typeof import('../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables')['acceptHMRUpdate']>
readonly addRouteMiddleware: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router')['addRouteMiddleware']>
readonly callOnce: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/once')['callOnce']>
readonly cancelIdleCallback: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/idle-callback')['cancelIdleCallback']>
readonly clearError: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/error')['clearError']>
readonly clearNuxtData: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData')['clearNuxtData']>
readonly clearNuxtState: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/state')['clearNuxtState']>
readonly computed: UnwrapRef<typeof import('vue')['computed']>
readonly createError: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/error')['createError']>
readonly createUseAsyncData: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData')['createUseAsyncData']>
readonly createUseFetch: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/fetch')['createUseFetch']>
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
readonly defineAppConfig: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt')['defineAppConfig']>
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
readonly defineLazyHydrationComponent: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/lazy-hydration')['defineLazyHydrationComponent']>
readonly defineNuxtComponent: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/component')['defineNuxtComponent']>
readonly defineNuxtLink: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/components/nuxt-link')['defineNuxtLink']>
readonly defineNuxtPlugin: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt')['defineNuxtPlugin']>
readonly defineNuxtRouteMiddleware: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router')['defineNuxtRouteMiddleware']>
readonly definePageMeta: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/pages')['definePageMeta']>
readonly definePayloadPlugin: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt')['definePayloadPlugin']>
readonly definePayloadReducer: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/payload')['definePayloadReducer']>
readonly definePayloadReviver: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/payload')['definePayloadReviver']>
readonly defineStore: UnwrapRef<typeof import('../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables')['defineStore']>
readonly effect: UnwrapRef<typeof import('vue')['effect']>
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
readonly getAppManifest: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/manifest')['getAppManifest']>
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
readonly getRouteRules: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/manifest')['getRouteRules']>
readonly h: UnwrapRef<typeof import('vue')['h']>
readonly hasInjectionContext: UnwrapRef<typeof import('vue')['hasInjectionContext']>
readonly inject: UnwrapRef<typeof import('vue')['inject']>
readonly injectHead: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head')['injectHead']>
readonly isNuxtError: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/error')['isNuxtError']>
readonly isPrerendered: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/payload')['isPrerendered']>
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
readonly isShallow: UnwrapRef<typeof import('vue')['isShallow']>
readonly isVue2: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/vue-demi')['isVue2']>
readonly isVue3: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/vue-demi')['isVue3']>
readonly loadPayload: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/payload')['loadPayload']>
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
readonly navigateTo: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router')['navigateTo']>
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']>
readonly onBeforeRouteLeave: UnwrapRef<typeof import('../../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router')['onBeforeRouteLeave']>
readonly onBeforeRouteUpdate: UnwrapRef<typeof import('../../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router')['onBeforeRouteUpdate']>
readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']>
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']>
readonly onNuxtReady: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ready')['onNuxtReady']>
readonly onPrehydrate: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr')['onPrehydrate']>
readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']>
readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']>
readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']>
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']>
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
readonly onWatcherCleanup: UnwrapRef<typeof import('vue')['onWatcherCleanup']>
readonly prefetchComponents: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/preload')['prefetchComponents']>
readonly preloadComponents: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/preload')['preloadComponents']>
readonly preloadPayload: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/payload')['preloadPayload']>
readonly preloadRouteComponents: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/preload')['preloadRouteComponents']>
readonly prerenderRoutes: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr')['prerenderRoutes']>
readonly provide: UnwrapRef<typeof import('vue')['provide']>
readonly proxyRefs: UnwrapRef<typeof import('vue')['proxyRefs']>
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
readonly readonly: UnwrapRef<typeof import('vue')['readonly']>
readonly ref: UnwrapRef<typeof import('vue')['ref']>
readonly refreshCookie: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/cookie')['refreshCookie']>
readonly refreshNuxtData: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData')['refreshNuxtData']>
readonly reloadNuxtApp: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/chunk')['reloadNuxtApp']>
readonly requestIdleCallback: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/idle-callback')['requestIdleCallback']>
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
readonly setInterval: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/compat/interval')['setInterval']>
readonly setPageLayout: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router')['setPageLayout']>
readonly setResponseStatus: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr')['setResponseStatus']>
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
readonly showError: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/error')['showError']>
readonly storeToRefs: UnwrapRef<typeof import('../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables')['storeToRefs']>
readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']>
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
readonly toValue: UnwrapRef<typeof import('vue')['toValue']>
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
readonly tryUseNuxtApp: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt')['tryUseNuxtApp']>
readonly unref: UnwrapRef<typeof import('vue')['unref']>
readonly updateAppConfig: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/config')['updateAppConfig']>
readonly useAnnouncer: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/announcer')['useAnnouncer']>
readonly useApi: UnwrapRef<typeof import('../../app/composables/useApi')['useApi']>
readonly useAppConfig: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/config')['useAppConfig']>
readonly useAsyncData: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData')['useAsyncData']>
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
readonly useAuthStore: UnwrapRef<typeof import('../../app/stores/auth')['useAuthStore']>
readonly useCookie: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/cookie')['useCookie']>
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
readonly useError: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/error')['useError']>
readonly useFetch: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/fetch')['useFetch']>
readonly useHead: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head')['useHead']>
readonly useHeadSafe: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head')['useHeadSafe']>
readonly useHydration: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/hydrate')['useHydration']>
readonly useId: UnwrapRef<typeof import('vue')['useId']>
readonly useLazyAsyncData: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData')['useLazyAsyncData']>
readonly useLazyFetch: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/fetch')['useLazyFetch']>
readonly useLink: UnwrapRef<typeof import('../../node_modules/.pnpm/vue-router@5.1.0_@vue+compiler-sfc@3.5.38_esbuild@0.28.1_pinia@3.0.4_typescript@5.9.3_v_e9d2979651266ddc95cb9659efaeda1e/node_modules/vue-router')['useLink']>
readonly useLoadingIndicator: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/loading-indicator')['useLoadingIndicator']>
readonly useModel: UnwrapRef<typeof import('vue')['useModel']>
readonly useNuxtApp: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt')['useNuxtApp']>
readonly useNuxtData: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/asyncData')['useNuxtData']>
readonly usePinia: UnwrapRef<typeof import('../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/composables')['usePinia']>
readonly usePreviewMode: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/preview')['usePreviewMode']>
readonly useRequestEvent: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr')['useRequestEvent']>
readonly useRequestFetch: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr')['useRequestFetch']>
readonly useRequestHeader: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr')['useRequestHeader']>
readonly useRequestHeaders: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr')['useRequestHeaders']>
readonly useRequestURL: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/url')['useRequestURL']>
readonly useResponseHeader: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/ssr')['useResponseHeader']>
readonly useRoute: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router')['useRoute']>
readonly useRouteAnnouncer: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/route-announcer')['useRouteAnnouncer']>
readonly useRouter: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/router')['useRouter']>
readonly useRuntimeConfig: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/nuxt')['useRuntimeConfig']>
readonly useRuntimeHook: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/runtime-hook')['useRuntimeHook']>
readonly useScript: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScript']>
readonly useScriptAhrefsAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptAhrefsAnalytics']>
readonly useScriptBingUet: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptBingUet']>
readonly useScriptCalendly: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCalendly']>
readonly useScriptClarity: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptClarity']>
readonly useScriptCloudflareWebAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCloudflareWebAnalytics']>
readonly useScriptCrisp: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptCrisp']>
readonly useScriptDatabuddyAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptDatabuddyAnalytics']>
readonly useScriptEventPage: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptEventPage']>
readonly useScriptFathomAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptFathomAnalytics']>
readonly useScriptGoogleAdsense: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAdsense']>
readonly useScriptGoogleAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleAnalytics']>
readonly useScriptGoogleMaps: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleMaps']>
readonly useScriptGoogleRecaptcha: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleRecaptcha']>
readonly useScriptGoogleSignIn: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleSignIn']>
readonly useScriptGoogleTagManager: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGoogleTagManager']>
readonly useScriptGravatar: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptGravatar']>
readonly useScriptHotjar: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptHotjar']>
readonly useScriptIntercom: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptIntercom']>
readonly useScriptLemonSqueezy: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptLemonSqueezy']>
readonly useScriptLinkedInInsight: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptLinkedInInsight']>
readonly useScriptMatomoAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMatomoAnalytics']>
readonly useScriptMetaPixel: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMetaPixel']>
readonly useScriptMixpanelAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptMixpanelAnalytics']>
readonly useScriptNpm: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptNpm']>
readonly useScriptPayPal: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPayPal']>
readonly useScriptPlausibleAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPlausibleAnalytics']>
readonly useScriptPostHog: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptPostHog']>
readonly useScriptRedditPixel: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptRedditPixel']>
readonly useScriptRybbitAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptRybbitAnalytics']>
readonly useScriptSegment: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSegment']>
readonly useScriptSnapchatPixel: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSnapchatPixel']>
readonly useScriptSpeedCurve: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptSpeedCurve']>
readonly useScriptStripe: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptStripe']>
readonly useScriptTikTokPixel: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTikTokPixel']>
readonly useScriptTriggerConsent: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerConsent']>
readonly useScriptTriggerElement: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptTriggerElement']>
readonly useScriptUmamiAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptUmamiAnalytics']>
readonly useScriptUsercentrics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptUsercentrics']>
readonly useScriptVercelAnalytics: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptVercelAnalytics']>
readonly useScriptVimeoPlayer: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptVimeoPlayer']>
readonly useScriptXPixel: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptXPixel']>
readonly useScriptYouTubePlayer: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/script-stubs')['useScriptYouTubePlayer']>
readonly useSeoMeta: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head')['useSeoMeta']>
readonly useServerHead: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head')['useServerHead']>
readonly useServerHeadSafe: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head')['useServerHeadSafe']>
readonly useServerSeoMeta: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/head')['useServerSeoMeta']>
readonly useShadowRoot: UnwrapRef<typeof import('vue')['useShadowRoot']>
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
readonly useState: UnwrapRef<typeof import('../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/composables/state')['useState']>
readonly useTemplateRef: UnwrapRef<typeof import('vue')['useTemplateRef']>
readonly useToast: UnwrapRef<typeof import('../../app/composables/useToast')['useToast']>
readonly useTransitionState: UnwrapRef<typeof import('vue')['useTransitionState']>
readonly watch: UnwrapRef<typeof import('vue')['watch']>
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
readonly withCtx: UnwrapRef<typeof import('vue')['withCtx']>
readonly withDirectives: UnwrapRef<typeof import('vue')['withDirectives']>
readonly withKeys: UnwrapRef<typeof import('vue')['withKeys']>
readonly withMemo: UnwrapRef<typeof import('vue')['withMemo']>
readonly withModifiers: UnwrapRef<typeof import('vue')['withModifiers']>
readonly withScopeId: UnwrapRef<typeof import('vue')['withScopeId']>
}
}

21
apps/admin/.nuxt/types/layouts.d.ts

@ -0,0 +1,21 @@
import type { ComputedRef, MaybeRef } from 'vue'
type ComponentProps<T> = T extends new(...args: any) => { $props: infer P } ? NonNullable<P>
: T extends (props: infer P, ...args: any) => any ? P
: {}
declare module 'nuxt/app' {
interface NuxtLayouts {
auth: ComponentProps<typeof import("/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/layouts/auth.vue").default>
default: ComponentProps<typeof import("/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/app/layouts/default.vue").default>
}
export type LayoutKey = keyof NuxtLayouts extends never ? string : keyof NuxtLayouts
interface PageMeta {
layout?: MaybeRef<LayoutKey | false> | ComputedRef<LayoutKey | false> | {
[K in LayoutKey]: {
name?: MaybeRef<K | false> | ComputedRef<K | false>
props?: NuxtLayouts[K]
}
}[LayoutKey]
}
}

7
apps/admin/.nuxt/types/middleware.d.ts

@ -0,0 +1,7 @@
import type { NavigationGuard } from 'vue-router'
export type MiddlewareKey = never
declare module 'nuxt/app' {
interface PageMeta {
middleware?: MiddlewareKey | NavigationGuard | Array<MiddlewareKey | NavigationGuard>
}
}

99
apps/admin/.nuxt/types/modules.d.ts

@ -0,0 +1,99 @@
import { NuxtModule, ModuleDependencyMeta } from '@nuxt/schema'
declare module '@nuxt/schema' {
interface ModuleDependencies {
["@nuxtjs/tailwindcss"]?: ModuleDependencyMeta<typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false
["pinia"]?: ModuleDependencyMeta<typeof import("@pinia/nuxt").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false
["@nuxt/devtools"]?: ModuleDependencyMeta<typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false
["@nuxt/telemetry"]?: ModuleDependencyMeta<typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false
}
interface NuxtOptions {
/**
* Configuration for `@nuxtjs/tailwindcss`
*/
["tailwindcss"]: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false
/**
* Configuration for `@pinia/nuxt`
*/
["pinia"]: typeof import("@pinia/nuxt").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false
/**
* Configuration for `@nuxt/devtools`
*/
["devtools"]: typeof import("@nuxt/devtools").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false
/**
* Configuration for `@nuxt/telemetry`
*/
["telemetry"]: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false
}
interface NuxtConfig {
/**
* Configuration for `@nuxtjs/tailwindcss`
*/
["tailwindcss"]?: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false
/**
* Configuration for `@pinia/nuxt`
*/
["pinia"]?: typeof import("@pinia/nuxt").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false
/**
* Configuration for `@nuxt/devtools`
*/
["devtools"]?: typeof import("@nuxt/devtools").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false
/**
* Configuration for `@nuxt/telemetry`
*/
["telemetry"]?: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false
modules?: (undefined | null | false | NuxtModule<any> | string | [NuxtModule | string, Record<string, any>] | ["@nuxtjs/tailwindcss", Exclude<NuxtConfig["tailwindcss"], boolean>] | ["@pinia/nuxt", Exclude<NuxtConfig["pinia"], boolean>] | ["@nuxt/devtools", Exclude<NuxtConfig["devtools"], boolean>] | ["@nuxt/telemetry", Exclude<NuxtConfig["telemetry"], boolean>])[],
}
}
declare module 'nuxt/schema' {
interface ModuleDependencies {
["@nuxtjs/tailwindcss"]?: ModuleDependencyMeta<typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false
["pinia"]?: ModuleDependencyMeta<typeof import("@pinia/nuxt").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false
["@nuxt/devtools"]?: ModuleDependencyMeta<typeof import("@nuxt/devtools").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false
["@nuxt/telemetry"]?: ModuleDependencyMeta<typeof import("@nuxt/telemetry").default extends NuxtModule<infer O> ? O | false : Record<string, unknown>> | false
}
interface NuxtOptions {
/**
* Configuration for `@nuxtjs/tailwindcss`
* @see https://www.npmjs.com/package/@nuxtjs/tailwindcss
*/
["tailwindcss"]: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false
/**
* Configuration for `@pinia/nuxt`
* @see https://www.npmjs.com/package/@pinia/nuxt
*/
["pinia"]: typeof import("@pinia/nuxt").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false
/**
* Configuration for `@nuxt/devtools`
* @see https://www.npmjs.com/package/@nuxt/devtools
*/
["devtools"]: typeof import("@nuxt/devtools").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false
/**
* Configuration for `@nuxt/telemetry`
* @see https://www.npmjs.com/package/@nuxt/telemetry
*/
["telemetry"]: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O, unknown, boolean> ? O | false : Record<string, any> | false
}
interface NuxtConfig {
/**
* Configuration for `@nuxtjs/tailwindcss`
* @see https://www.npmjs.com/package/@nuxtjs/tailwindcss
*/
["tailwindcss"]?: typeof import("@nuxtjs/tailwindcss").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false
/**
* Configuration for `@pinia/nuxt`
* @see https://www.npmjs.com/package/@pinia/nuxt
*/
["pinia"]?: typeof import("@pinia/nuxt").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false
/**
* Configuration for `@nuxt/devtools`
* @see https://www.npmjs.com/package/@nuxt/devtools
*/
["devtools"]?: typeof import("@nuxt/devtools").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false
/**
* Configuration for `@nuxt/telemetry`
* @see https://www.npmjs.com/package/@nuxt/telemetry
*/
["telemetry"]?: typeof import("@nuxt/telemetry").default extends NuxtModule<infer O, unknown, boolean> ? Partial<O> | false : Record<string, any> | false
modules?: (undefined | null | false | NuxtModule<any> | string | [NuxtModule | string, Record<string, any>] | ["@nuxtjs/tailwindcss", Exclude<NuxtConfig["tailwindcss"], boolean>] | ["@pinia/nuxt", Exclude<NuxtConfig["pinia"], boolean>] | ["@nuxt/devtools", Exclude<NuxtConfig["devtools"], boolean>] | ["@nuxt/telemetry", Exclude<NuxtConfig["telemetry"], boolean>])[],
}
}

14
apps/admin/.nuxt/types/nitro-config.d.ts

@ -0,0 +1,14 @@
// Generated by nitro
// App Config
import type { Defu } from 'defu'
type UserAppConfig = Defu<{}, []>
declare module "nitropack/types" {
interface AppConfig extends UserAppConfig {}
}
export {}

149
apps/admin/.nuxt/types/nitro-imports.d.ts

@ -0,0 +1,149 @@
declare global {
const H3Error: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').H3Error
const H3Event: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').H3Event
const __buildAssetsURL: typeof import('../../node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths').buildAssetsURL
const __publicAssetsURL: typeof import('../../node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths').publicAssetsURL
const appendCorsHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').appendCorsHeaders
const appendCorsPreflightHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').appendCorsPreflightHeaders
const appendHeader: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').appendHeader
const appendHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').appendHeaders
const appendResponseHeader: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').appendResponseHeader
const appendResponseHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').appendResponseHeaders
const assertMethod: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').assertMethod
const cachedEventHandler: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/cache').cachedEventHandler
const cachedFunction: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/cache').cachedFunction
const callNodeListener: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').callNodeListener
const clearResponseHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').clearResponseHeaders
const clearSession: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').clearSession
const createApp: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').createApp
const createAppEventHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').createAppEventHandler
const createError: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').createError
const createEvent: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').createEvent
const createEventStream: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').createEventStream
const createRouter: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').createRouter
const defaultContentType: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').defaultContentType
const defineAppConfig: typeof import('../../node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/utils/config').defineAppConfig
const defineCachedEventHandler: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/cache').defineCachedEventHandler
const defineCachedFunction: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/cache').defineCachedFunction
const defineEventHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').defineEventHandler
const defineLazyEventHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').defineLazyEventHandler
const defineNitroErrorHandler: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/error/utils').defineNitroErrorHandler
const defineNitroPlugin: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/plugin').defineNitroPlugin
const defineNodeListener: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').defineNodeListener
const defineNodeMiddleware: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').defineNodeMiddleware
const defineRenderHandler: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/renderer').defineRenderHandler
const defineRequestMiddleware: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').defineRequestMiddleware
const defineResponseMiddleware: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').defineResponseMiddleware
const defineRouteMeta: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/meta').defineRouteMeta
const defineTask: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/task').defineTask
const defineWebSocket: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').defineWebSocket
const defineWebSocketHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').defineWebSocketHandler
const deleteCookie: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').deleteCookie
const dynamicEventHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').dynamicEventHandler
const eventHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').eventHandler
const fetchWithEvent: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').fetchWithEvent
const fromNodeMiddleware: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').fromNodeMiddleware
const fromPlainHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').fromPlainHandler
const fromWebHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').fromWebHandler
const getCookie: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getCookie
const getHeader: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getHeader
const getHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getHeaders
const getMethod: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getMethod
const getProxyRequestHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getProxyRequestHeaders
const getQuery: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getQuery
const getRequestFingerprint: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRequestFingerprint
const getRequestHeader: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRequestHeader
const getRequestHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRequestHeaders
const getRequestHost: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRequestHost
const getRequestIP: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRequestIP
const getRequestPath: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRequestPath
const getRequestProtocol: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRequestProtocol
const getRequestURL: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRequestURL
const getRequestWebStream: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRequestWebStream
const getResponseHeader: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getResponseHeader
const getResponseHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getResponseHeaders
const getResponseStatus: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getResponseStatus
const getResponseStatusText: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getResponseStatusText
const getRouteRules: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/route-rules').getRouteRules
const getRouterParam: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRouterParam
const getRouterParams: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getRouterParams
const getSession: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getSession
const getValidatedQuery: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getValidatedQuery
const getValidatedRouterParams: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').getValidatedRouterParams
const handleCacheHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').handleCacheHeaders
const handleCors: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').handleCors
const isCorsOriginAllowed: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').isCorsOriginAllowed
const isError: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').isError
const isEvent: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').isEvent
const isEventHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').isEventHandler
const isMethod: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').isMethod
const isPreflightRequest: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').isPreflightRequest
const isStream: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').isStream
const isWebResponse: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').isWebResponse
const lazyEventHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').lazyEventHandler
const nitroPlugin: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/plugin').nitroPlugin
const parseCookies: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').parseCookies
const promisifyNodeListener: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').promisifyNodeListener
const proxyRequest: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').proxyRequest
const readBody: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').readBody
const readFormData: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').readFormData
const readMultipartFormData: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').readMultipartFormData
const readRawBody: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').readRawBody
const readValidatedBody: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').readValidatedBody
const removeResponseHeader: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').removeResponseHeader
const runTask: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/task').runTask
const sanitizeStatusCode: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').sanitizeStatusCode
const sanitizeStatusMessage: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').sanitizeStatusMessage
const sealSession: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').sealSession
const send: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').send
const sendError: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').sendError
const sendIterable: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').sendIterable
const sendNoContent: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').sendNoContent
const sendProxy: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').sendProxy
const sendRedirect: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').sendRedirect
const sendStream: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').sendStream
const sendWebResponse: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').sendWebResponse
const serveStatic: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').serveStatic
const setCookie: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').setCookie
const setHeader: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').setHeader
const setHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').setHeaders
const setResponseHeader: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').setResponseHeader
const setResponseHeaders: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').setResponseHeaders
const setResponseStatus: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').setResponseStatus
const splitCookiesString: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').splitCookiesString
const toEventHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').toEventHandler
const toNodeListener: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').toNodeListener
const toPlainHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').toPlainHandler
const toWebHandler: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').toWebHandler
const toWebRequest: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').toWebRequest
const unsealSession: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').unsealSession
const updateSession: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').updateSession
const useAppConfig: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/config').useAppConfig
const useBase: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').useBase
const useEvent: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/context').useEvent
const useNitroApp: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/app').useNitroApp
const useRuntimeConfig: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/config').useRuntimeConfig
const useSession: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').useSession
const useStorage: typeof import('../../node_modules/.pnpm/nitropack@2.13.4_oxc-parser@0.133.0_srvx@0.11.17_vite@7.3.5_jiti@2.7.0_terser@5.48.0_yaml@2.9.0_/node_modules/nitropack/dist/runtime/internal/storage').useStorage
const writeEarlyHints: typeof import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3').writeEarlyHints
}
// for type re-export
declare global {
// @ts-ignore
export type { EventHandler, EventHandlerRequest, EventHandlerResponse, EventHandlerObject, H3EventContext } from '../../node_modules/.pnpm/h3@1.15.11/node_modules/h3'
import('../../node_modules/.pnpm/h3@1.15.11/node_modules/h3')
}
export { H3Event, H3Error, appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, useBase, useSession, writeEarlyHints } from 'h3';
export { useNitroApp } from 'nitropack/runtime/internal/app';
export { useRuntimeConfig, useAppConfig } from 'nitropack/runtime/internal/config';
export { defineNitroPlugin, nitroPlugin } from 'nitropack/runtime/internal/plugin';
export { defineCachedFunction, defineCachedEventHandler, cachedFunction, cachedEventHandler } from 'nitropack/runtime/internal/cache';
export { useStorage } from 'nitropack/runtime/internal/storage';
export { defineRenderHandler } from 'nitropack/runtime/internal/renderer';
export { defineRouteMeta } from 'nitropack/runtime/internal/meta';
export { getRouteRules } from 'nitropack/runtime/internal/route-rules';
export { useEvent } from 'nitropack/runtime/internal/context';
export { defineTask, runTask } from 'nitropack/runtime/internal/task';
export { defineNitroErrorHandler } from 'nitropack/runtime/internal/error/utils';
export { buildAssetsURL as __buildAssetsURL, publicAssetsURL as __publicAssetsURL } from '/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/utils/paths';
export { defineAppConfig } from '/Users/liwei/work/go/yunyan/yunyan-sas/apps/admin/node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/utils/config';

17
apps/admin/.nuxt/types/nitro-layouts.d.ts

@ -0,0 +1,17 @@
export type LayoutKey = "auth" | "default"
declare module 'nitropack' {
interface NitroRouteConfig {
appLayout?: LayoutKey | false
}
interface NitroRouteRules {
appLayout?: LayoutKey | false
}
}
declare module 'nitropack/types' {
interface NitroRouteConfig {
appLayout?: LayoutKey | false
}
interface NitroRouteRules {
appLayout?: LayoutKey | false
}
}

11
apps/admin/.nuxt/types/nitro-middleware.d.ts

@ -0,0 +1,11 @@
export type MiddlewareKey = never
declare module 'nitropack/types' {
interface NitroRouteConfig {
appMiddleware?: MiddlewareKey | MiddlewareKey[] | Record<MiddlewareKey, boolean>
}
}
declare module 'nitropack' {
interface NitroRouteConfig {
appMiddleware?: MiddlewareKey | MiddlewareKey[] | Record<MiddlewareKey, boolean>
}
}

64
apps/admin/.nuxt/types/nitro-nuxt.d.ts

@ -0,0 +1,64 @@
/// <reference path="nitro-layouts.d.ts" />
/// <reference path="app.config.d.ts" />
/// <reference path="runtime-config.d.ts" />
/// <reference path="../../node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/index.d.mts" />
/// <reference path="nitro-middleware.d.ts" />
import type { RuntimeConfig } from 'nuxt/schema'
import type { H3Event } from 'h3'
import type { LogObject } from 'consola'
import type { NuxtIslandContext, NuxtIslandResponse, NuxtRenderHTMLContext } from 'nuxt/app'
declare module 'nitropack' {
interface NitroRuntimeConfigApp {
buildAssetsDir: string
cdnURL: string
}
interface NitroRuntimeConfig extends RuntimeConfig {}
interface NitroRouteConfig {
ssr?: boolean
noScripts?: boolean
/** @deprecated Use `noScripts` instead */
experimentalNoScripts?: boolean
}
interface NitroRouteRules {
ssr?: boolean
noScripts?: boolean
/** @deprecated Use `noScripts` instead */
experimentalNoScripts?: boolean
appMiddleware?: Record<string, boolean>
appLayout?: string | false
}
interface NitroRuntimeHooks {
'dev:ssr-logs': (ctx: { logs: LogObject[], path: string }) => void | Promise<void>
'render:html': (htmlContext: NuxtRenderHTMLContext, context: { event: H3Event }) => void | Promise<void>
'render:island': (islandResponse: NuxtIslandResponse, context: { event: H3Event, islandContext: NuxtIslandContext }) => void | Promise<void>
}
}
declare module 'nitropack/types' {
interface NitroRuntimeConfigApp {
buildAssetsDir: string
cdnURL: string
}
interface NitroRuntimeConfig extends RuntimeConfig {}
interface NitroRouteConfig {
ssr?: boolean
noScripts?: boolean
/** @deprecated Use `noScripts` instead */
experimentalNoScripts?: boolean
}
interface NitroRouteRules {
ssr?: boolean
noScripts?: boolean
/** @deprecated Use `noScripts` instead */
experimentalNoScripts?: boolean
appMiddleware?: Record<string, boolean>
appLayout?: string | false
}
interface NitroRuntimeHooks {
'dev:ssr-logs': (ctx: { logs: LogObject[], path: string }) => void | Promise<void>
'render:html': (htmlContext: NuxtRenderHTMLContext, context: { event: H3Event }) => void | Promise<void>
'render:island': (islandResponse: NuxtIslandResponse, context: { event: H3Event, islandContext: NuxtIslandContext }) => void | Promise<void>
}
}

14
apps/admin/.nuxt/types/nitro-routes.d.ts

@ -0,0 +1,14 @@
// Generated by nitro
import type { Serialize, Simplify } from "nitropack/types";
declare module "nitropack/types" {
type Awaited<T> = T extends PromiseLike<infer U> ? Awaited<U> : T
interface InternalApi {
'/__nuxt_error': {
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/handlers/renderer').default>>>>
}
'/__nuxt_island/**': {
'default': Simplify<Serialize<Awaited<ReturnType<typeof import('../../server/#internal/nuxt/island-renderer').default>>>>
}
}
}
export {}

3
apps/admin/.nuxt/types/nitro.d.ts

@ -0,0 +1,3 @@
/// <reference path="./nitro-routes.d.ts" />
/// <reference path="./nitro-config.d.ts" />
/// <reference path="./nitro-imports.d.ts" />

34
apps/admin/.nuxt/types/plugins.d.ts

@ -0,0 +1,34 @@
// Generated by Nuxt'
import type { Plugin } from '#app'
type Decorate<T extends Record<string, any>> = { [K in keyof T as K extends string ? `$${K}` : never]: T[K] }
type InjectionType<A extends Plugin> = A extends {default: Plugin<infer T>} ? Decorate<T> : unknown
type NuxtAppInjections =
InjectionType<typeof import("../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/payload-plugin.js")> &
InjectionType<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/plugins/revive-payload.client.js")> &
InjectionType<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/head/runtime/plugins/unhead.js")> &
InjectionType<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/pages/runtime/plugins/router.js")> &
InjectionType<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/plugins/payload.client.js")> &
InjectionType<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/plugins/navigation-repaint.client.js")> &
InjectionType<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/plugins/check-outdated-build.client.js")> &
InjectionType<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/plugins/revive-payload.server.js")> &
InjectionType<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/app/plugins/chunk-reload.client.js")> &
InjectionType<typeof import("../../node_modules/.pnpm/@pinia+nuxt@0.11.3_magicast@0.5.3_pinia@3.0.4_typescript@5.9.3_vue@3.5.38_typescript@5.9.3__/node_modules/@pinia/nuxt/dist/runtime/plugin.vue3.js")> &
InjectionType<typeof import("../../node_modules/.pnpm/nuxt@4.4.8_@babel+plugin-syntax-jsx@7.29.7_@babel+core@7.29.7__@babel+plugin-syntax-typ_25b4a4016600149c0331b87503aafc6b/node_modules/nuxt/dist/pages/runtime/plugins/prefetch.client.js")> &
InjectionType<typeof import("../../app/plugins/auth.client")>
declare module '#app' {
interface NuxtApp extends NuxtAppInjections { }
interface NuxtAppLiterals {
pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:payload' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'pinia' | 'nuxt:global-components' | 'nuxt:prefetch'
}
}
declare module 'vue' {
interface ComponentCustomProperties extends NuxtAppInjections { }
}
export { }

34
apps/admin/.nuxt/types/runtime-config.d.ts

@ -0,0 +1,34 @@
import { RuntimeConfig as UserRuntimeConfig, PublicRuntimeConfig as UserPublicRuntimeConfig } from 'nuxt/schema'
interface SharedRuntimeConfig {
app: {
buildId: string,
baseURL: string,
buildAssetsDir: string,
cdnURL: string,
},
nitro: {
envPrefix: string,
},
}
interface SharedPublicRuntimeConfig {
apiBase: string,
appTitle: string,
}
declare module '@nuxt/schema' {
interface RuntimeConfig extends UserRuntimeConfig {}
interface PublicRuntimeConfig extends UserPublicRuntimeConfig {}
}
declare module 'nuxt/schema' {
interface RuntimeConfig extends SharedRuntimeConfig {}
interface PublicRuntimeConfig extends SharedPublicRuntimeConfig {}
}
declare module 'vue' {
interface ComponentCustomProperties {
$config: UserRuntimeConfig
}
}

10
apps/admin/.nuxt/types/shared-imports.d.ts

@ -0,0 +1,10 @@
// Generated by auto imports
export {}
declare global {
const useRuntimeConfig: (event?: import('h3').H3Event) => import('nuxt/schema').RuntimeConfig
const useAppConfig: () => import('nuxt/schema').AppConfig
const defineAppConfig: <C extends import('nuxt/schema').AppConfigInput>(config: C) => C
const createError: typeof import('h3')['createError']
const setResponseStatus: typeof import('h3')['setResponseStatus']
}

0
apps/admin/.nuxt/types/vue-shim.d.ts

15
apps/admin/.output/nitro.json

@ -0,0 +1,15 @@
{
"date": "2026-06-25T01:28:36.201Z",
"preset": "node-server",
"framework": {
"name": "nuxt",
"version": "4.4.8"
},
"versions": {
"nitro": "2.13.4"
},
"commands": {
"preview": "node server/index.mjs"
},
"config": {}
}

1
apps/admin/.output/public/_nuxt/32YvkCVR.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/6DMNcPyq.js

@ -0,0 +1 @@
import{g as h,y as x,z as w,j as y,c as r,a as e,t as d,l as b,A as _,k as v,m as g,n as k,x as A,s as u,o as p,_ as M}from"./ydFS6PsN.js";const z={class:"login-bg flex items-center justify-center px-4"},B={class:"login-card"},C={class:"text-center"},S={style:{"font-size":"22px","font-weight":"700",color:"#0F172A",margin:"0 0 4px"}},T={key:0,class:"login-error show"},V={style:{width:"16px",height:"16px","flex-shrink":"0"},fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},j={style:{"margin-bottom":"16px"}},D={style:{"margin-bottom":"24px"}},q=h({__name:"index",setup(L){const a=x(),c=w(),o=A({account:"",password:""}),l=u(!1),n=u(""),m=u("Admin");y(async()=>{if(a.restore(),a.token){c.push("/dashboard");return}try{const t=(await $fetch("/web/api/api_getsiteinfo",{method:"POST",body:{}}))?.data?.sitename;t&&(m.value=t+" Admin",a.setSiteTitle(t))}catch{}});async function f(){l.value=!0,n.value="";try{const s=await $fetch("/web/api/api_login",{method:"POST",body:{account:o.account,password:o.password}});s.code===0&&s.data?(a.setLoginData(s.data),c.push("/dashboard")):n.value=s.msg||"登录失败"}catch{n.value="网络错误,请检查连接"}finally{l.value=!1}}return(s,t)=>(p(),r("div",z,[e("div",B,[e("div",C,[t[2]||(t[2]=e("div",{class:"logo-icon"},[e("svg",{class:"h-7 w-7 text-white",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor"},[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"})])],-1)),e("h1",S,d(m.value),1),t[3]||(t[3]=e("p",{style:{"font-size":"13px",color:"#94A3B8",margin:"0 0 32px"}},"管理控制台",-1))]),n.value?(p(),r("div",T,[(p(),r("svg",V,[...t[4]||(t[4]=[e("path",{"stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"},null,-1)])])),e("span",null,d(n.value),1)])):b("",!0),e("form",{onSubmit:_(f,["prevent"])},[e("div",j,[t[5]||(t[5]=e("label",{class:"login-label"},"账号",-1)),v(e("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>o.account=i),type:"text",class:"login-input",placeholder:"请输入管理员账号",autocomplete:"username",required:""},null,512),[[g,o.account]])]),e("div",D,[t[6]||(t[6]=e("label",{class:"login-label"},"密码",-1)),v(e("input",{"onUpdate:modelValue":t[1]||(t[1]=i=>o.password=i),type:"password",class:"login-input",placeholder:"请输入密码",autocomplete:"current-password",required:""},null,512),[[g,o.password]])]),e("button",{type:"submit",class:k(["login-btn",{loading:l.value}])},d(l.value?"登录中...":"登 录"),3)],32),t[7]||(t[7]=e("p",{style:{"text-align":"center","font-size":"11px",color:"#94A3B8","margin-top":"24px"}}," © 2025 Admin Console · v1.0.1 ",-1))])]))}}),O=M(q,[["__scopeId","data-v-3a3bca03"]]);export{O as default};

1
apps/admin/.output/public/_nuxt/8EvkM1NE.js

@ -0,0 +1 @@
import{u as a,e as s,h as u,i as r,f as h}from"./ydFS6PsN.js";function i(t){const e=t||s();return e.ssrContext?.head||e.runWithContext(()=>{if(u()){const n=r(h);if(!n)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return n}})}function d(t,e={}){const n=e.head||i(e.nuxt);return a(t,{head:n,...e})}export{d as u};

1
apps/admin/.output/public/_nuxt/BQLsZkMR.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/Bf7wQIBL.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/BkAHROeN.js

@ -0,0 +1 @@
import{_ as t,o,c as s,I as c}from"./ydFS6PsN.js";const r={},a={class:"min-h-screen","data-theme":"corporate"};function n(e,_){return o(),s("div",a,[c(e.$slots,"default")])}const l=t(r,[["render",n]]);export{l as default};

1
apps/admin/.output/public/_nuxt/BzpN2JeG.js

@ -0,0 +1 @@
import{_ as o,o as s,c as a,a as t,t as r}from"./ydFS6PsN.js";import{u as i}from"./8EvkM1NE.js";const u={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},c={class:"max-w-520px text-center"},l=["textContent"],d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:500},statusText:{type:String,default:"Internal server error"},description:{type:String,default:"This page is temporarily unavailable."},refresh:{type:String,default:"Refresh this page"}},setup(e){const n=e;return i({title:`${n.status} - ${n.statusText} | ${n.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(h,m)=>(s(),a("div",u,[t("div",c,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:r(e.status)},null,8,l),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:r(e.statusText)},null,8,d),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:r(e.description)},null,8,p)])]))}},x=o(f,[["__scopeId","data-v-2c2ce9e3"]]);export{x as default};

1
apps/admin/.output/public/_nuxt/C6_DfsT-.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/CAJrjOWz.js

File diff suppressed because one or more lines are too long

4
apps/admin/.output/public/_nuxt/CGKG3oBs.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/CIcxEwNZ.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/CQ70mTiW.js

@ -0,0 +1 @@
import{e as f,a3 as r,a4 as c}from"./ydFS6PsN.js";const p="$s";function l(...o){const n=typeof o[o.length-1]=="string"?o.pop():void 0;typeof o[0]!="string"&&o.unshift(n);const[e,t]=o;if(!e||typeof e!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+e);if(t!==void 0&&typeof t!="function")throw new Error("[nuxt] [useState] init must be a function: "+t);const s=p+e,i=f(),u=r(i.payload.state,s);if(t&&(i._state[s]??={_default:t}),u.value===void 0&&t){const a=t();if(c(a))return i.payload.state[s]=a,a;u.value=a}return u}let y=0;function d(){const o=l("app:toasts",()=>[]);function n(e,t="info",s=3e3){const i=++y;o.value.push({id:i,type:t,msg:e}),s>0&&setTimeout(()=>{o.value=o.value.filter(u=>u.id!==i)},s)}return{toasts:o,toast:n,success:(e,t)=>n(e,"success",t),error:(e,t)=>n(e,"error",t),info:(e,t)=>n(e,"info",t),warn:(e,t)=>n(e,"warning",t)}}export{d as u};

1
apps/admin/.output/public/_nuxt/CWcpm1jv.js

@ -0,0 +1 @@
import{y as p,z as d}from"./ydFS6PsN.js";async function c(s,a,i){const r=p(),n=d(),t={"Content-Type":"application/json"};r.token&&(t.Authorization=r.token),i&&Object.assign(t,i);const o=await fetch(s,{method:"POST",headers:t,body:JSON.stringify(a)});if(!o.ok)throw new Error(`HTTP error: ${o.status}`);const e=await o.json();if(e.code===18)throw r.logout(),n.push("/"),new Error(e.msg||"Unauthorized");if(e.code!==0)throw new Error(e.msg||"Unknown error");return e.data}function h(){const s=p();async function a(n,t){const o={};return s.currentAppId&&(o["X-App-Id"]=String(s.currentAppId)),c(`/web/api/api_${n}`,t??{},o)}async function i(n,t){return c(`/console/api/${n}`,t??{})}async function r(n,t){const o=await a("getcostoken",{path:t}),e=o.upload_url||o.url||"",u=await fetch(e,{method:"PUT",headers:{"Content-Type":n.type||"application/octet-stream"},body:n});if(!u.ok)throw new Error(`Upload failed: ${u.status}`);return e.split("?")[0]}return{webApi:a,consoleApi:i,uploadFile:r}}export{h as u};

4
apps/admin/.output/public/_nuxt/CWxjl6OD.js

@ -0,0 +1,4 @@
import{g as G,j as K,H as P,c as a,a as e,d as u,k as x,p as U,F as f,r as B,m as Y,q as Z,t as n,s as i,C as E,o,n as F,l as I,_ as J}from"./ydFS6PsN.js";import{u as Q}from"./CWcpm1jv.js";import{u as W}from"./CQ70mTiW.js";const X=globalThis.setInterval,$={class:"flex items-center justify-between mb-4 flex-wrap gap-3"},tt={class:"flex items-center gap-2 flex-wrap"},et=["value"],st={class:"flex items-center gap-1 text-xs text-slate-500 cursor-pointer"},lt={class:"flex items-center gap-4 mb-3 text-xs text-slate-500"},nt={class:"text-slate-700"},at={class:"text-slate-700"},ot={class:"text-slate-700"},rt={class:"muted"},ut={class:"panel overflow-hidden"},it={id:"logBody",style:{"max-height":"calc(100vh - 230px)","overflow-y":"auto"}},ct={key:0,class:"text-center text-slate-400 py-10"},dt={key:1,class:"text-center text-red-400 py-10"},vt={key:2,class:"text-center text-slate-400 py-10"},pt={class:"t"},mt={class:"app-name"},ft={key:0,class:"unreg",title:"该应用名未在 console 注册,快照已收到但不会写入统计库"},gt={key:1,class:"muted"},xt={class:"muted"},_t={class:"muted"},yt={class:"muted"},bt={key:0,class:"muted"},ht={class:"t"},wt={key:0,class:"late"},kt=G({__name:"statlog",setup(Ct){const{webApi:A}=Q(),{success:H,error:O}=W(),R={cn:"中国",us:"美国",ea:"东亚",sea:"东南亚",sa:"南亚",me:"中东",eu:"欧洲",ru:"俄罗斯",af:"非洲",sam:"南美",nam:"北美",oc:"大洋洲",br:"巴西",in:"印度"};function D(l){return l?R[l]||l:"-"}const c=i([]),_=i(!1),g=i(""),L=i("-"),N=i("-"),y=i(""),v=i(0),b=i(""),h=i(""),w=i(!1);let d=null;function p(l=0){const s=new Date(Date.now()+l*864e5),t=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(s);return parseInt(t.replace(/-/g,""),10)}function k(l){const s=""+l;return s.length===8?s.slice(0,4)+"-"+s.slice(4,6)+"-"+s.slice(6,8):s}function C(l){if(!l)return"--";const s=new Date(l*1e3),t=r=>r<10?"0"+r:""+r;return t(s.getHours())+":"+t(s.getMinutes())+":"+t(s.getSeconds())}function S(l){return l?"0x"+(l>>>0).toString(16).toUpperCase():"全部"}const V=E(()=>[{value:p(0),label:"今天 "+k(p(0))},{value:p(-1),label:"昨天 "+k(p(-1))}]);function M(l){return l==="error"?{cls:"lv-error",txt:"解析失败"}:l==="warn"?{cls:"lv-warn",txt:"未落库"}:{cls:"lv-info",txt:"已落库"}}function j(l){return!!(l.snap_ts&&l.ts&&l.ts-l.snap_ts>120)}const T=E(()=>{const l=b.value,s=h.value.trim().toLowerCase();return c.value.filter(t=>!(l&&t.level!==l||s&&((t.app||"")+" "+(t.region||"")+" "+D(t.region)+" "+(t.product_id||"")+" "+S(t.product_id)+" "+(t.stat_day||"")).toLowerCase().indexOf(s)<0))});async function m(){_.value=!0,g.value="";try{const l=await A("getstatlogs",{day:v.value||0});c.value=l?.entries||[],L.value=l?.total!=null?l.total:c.value.length,N.value=c.value.length?C(c.value[0].ts):"--"}catch(l){g.value=l?.message||"网络异常"}finally{_.value=!1}}async function q(){const l=v.value||0,s=V.value.find(r=>r.value===l),t=s?s.label:""+l;if(window.confirm("确定清空「"+t+`」的接收流水吗?
只清除本核对面板的记录,不影响已落库的统计数据。
清空后可重新触发埋点,观察是否正常进来。`))try{const r=await A("clearstatlogs",{day:l});H("已清空 "+(r&&r.cleared!=null?r.cleared:0)+" 条"),m()}catch(r){O("清空失败:"+(r?.message||"网络异常"))}}function z(){w.value?(d=X(m,15e3),y.value="· 每 15 秒自动刷新"):(d&&clearInterval(d),d=null,y.value="")}return K(()=>{v.value=p(0),m()}),P(()=>{d&&clearInterval(d)}),(l,s)=>(o(),a("div",null,[e("div",$,[s[6]||(s[6]=e("div",null,[e("h2",{class:"text-lg font-bold text-slate-700"},"统计日志"),e("p",{class:"text-xs text-slate-400 mt-0.5"},[u("console 从 NATS 收到的「当日统计快照」接收流水(最新在前,按接收时间分天存 Redis)。各业务部署每个同步周期/启动时/0点 推送一次当日绝对快照,console 收到后覆盖落库。用于核对每个部署是否在正常汇报;带 "),e("span",{class:"unreg"},"未注册"),u(" 的应用快照已收到但"),e("b",null,"不会落库"),u("(应用名需与 console 注册表完全一致)。")])],-1)),e("div",tt,[x(e("select",{"onUpdate:modelValue":s[0]||(s[0]=t=>v.value=t),class:"select select-bordered select-sm",onChange:m},[(o(!0),a(f,null,B(V.value,t=>(o(),a("option",{key:t.value,value:t.value},n(t.label),9,et))),128))],544),[[U,v.value,void 0,{number:!0}]]),x(e("select",{"onUpdate:modelValue":s[1]||(s[1]=t=>b.value=t),class:"select select-bordered select-sm"},[...s[4]||(s[4]=[e("option",{value:""},"全部级别",-1),e("option",{value:"info"},"已落库",-1),e("option",{value:"warn"},"未落库",-1),e("option",{value:"error"},"解析失败",-1)])],512),[[U,b.value]]),x(e("input",{"onUpdate:modelValue":s[2]||(s[2]=t=>h.value=t),class:"input input-bordered input-sm w-44",placeholder:"筛选 应用/区域/产品"},null,512),[[Y,h.value]]),e("label",st,[x(e("input",{"onUpdate:modelValue":s[3]||(s[3]=t=>w.value=t),type:"checkbox",class:"checkbox checkbox-xs",onChange:z},null,544),[[Z,w.value]]),s[5]||(s[5]=u(" 自动刷新 ",-1))]),e("button",{class:"btn btn-primary btn-sm text-white",onClick:m},"刷新"),e("button",{class:"btn btn-outline btn-error btn-sm",title:"清空本日核对流水(不影响已落库的统计数据),清空后可重新观察埋点是否正常进来",onClick:q},"清空本日")])]),e("div",lt,[e("span",null,[s[7]||(s[7]=u("该日保留 ",-1)),e("b",nt,n(L.value),1),s[8]||(s[8]=u(" 条",-1))]),e("span",null,[s[9]||(s[9]=u("当前显示 ",-1)),e("b",at,n(T.value.length),1),s[10]||(s[10]=u(" 条",-1))]),e("span",null,[s[11]||(s[11]=u("最近接收 ",-1)),e("b",ot,n(N.value),1)]),e("span",rt,n(y.value),1)]),e("div",ut,[s[12]||(s[12]=e("div",{id:"logHead"},[e("div",null,"接收时间"),e("div",null,"级别"),e("div",null,"应用 · 区域 · 产品"),e("div",null,"统计日"),e("div",null,"指标摘要 / 说明"),e("div",null,"快照时间")],-1)),e("div",it,[_.value?(o(),a("div",ct,"加载中...")):g.value?(o(),a("div",dt,"加载失败:"+n(g.value),1)):T.value.length?(o(!0),a(f,{key:3},B(T.value,(t,r)=>(o(),a("div",{key:r,class:"logrow"},[e("div",pt,n(C(t.ts)),1),e("div",null,[e("span",{class:F(["lv",M(t.level).cls])},n(M(t.level).txt),3)]),e("div",null,[t.app?(o(),a(f,{key:0},[e("span",mt,n(t.app),1),t.registered?I("",!0):(o(),a("span",ft,"未注册"))],64)):(o(),a("span",gt,"(无应用名)")),e("span",xt," · "+n(D(t.region)),1),e("span",_t," · "+n(S(t.product_id)),1)]),e("div",yt,n(t.stat_day?k(t.stat_day):"-"),1),e("div",null,[t.msg?(o(),a(f,{key:0},[e("span",{class:F(t.level==="error"?"text-red-600":"text-amber-600")},n(t.msg),3),t.summary?(o(),a("span",bt," · "+n(t.summary),1)):I("",!0)],64)):(o(),a(f,{key:1},[u(n(t.summary||"无增量"),1)],64))]),e("div",ht,[u(n(C(t.snap_ts)),1),j(t)?(o(),a("span",wt,"迟到"+n(t.ts-t.snap_ts)+"s",1)):I("",!0)])]))),128)):(o(),a("div",vt,n(c.value.length?"无匹配记录":"该日暂无接收记录"),1))])])]))}}),Dt=J(kt,[["__scopeId","data-v-742ee359"]]);export{Dt as default};

1
apps/admin/.output/public/_nuxt/CvD6yA6H.js

@ -0,0 +1 @@
import{_ as s}from"./DhCGnUi5.js";import{_ as a,o as i,c as u,a as t,t as n,b as c,w as l,d}from"./ydFS6PsN.js";import{u as f}from"./8EvkM1NE.js";const p={class:"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide"},m={class:"max-w-520px text-center"},h=["textContent"],b=["textContent"],x=["textContent"],g={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},status:{type:Number,default:404},statusText:{type:String,default:"Page not found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(e){const r=e;return f({title:`${r.status} - ${r.statusText} | ${r.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:'*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,_)=>{const o=s;return i(),u("div",p,[t("div",m,[t("h1",{class:"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]",textContent:n(e.status)},null,8,h),t("h2",{class:"font-semibold mb-2 sm:text-3xl text-2xl",textContent:n(e.statusText)},null,8,b),t("p",{class:"mb-4 px-2 text-[#64748B] text-md",textContent:n(e.description)},null,8,x),t("div",g,[c(o,{to:"/",class:"font-medium hover:text-[#00DC82] text-sm underline underline-offset-3"},{default:l(()=>[d(n(e.backHome),1)]),_:1})])])])}}},z=a(y,[["__scopeId","data-v-52418c85"]]);export{z as default};

28
apps/admin/.output/public/_nuxt/DD_13xZ1.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/DhCGnUi5.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/DogYBohj.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/DrH4uMNH.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/G648dITK.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/accounts.B82323Fi.css

@ -0,0 +1 @@
.chk[data-v-eb25cf37]{display:flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid #e2e8f0;border-radius:8px;font-size:12px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chk[data-v-eb25cf37]:hover{background:#f8fafc}.chk input[data-v-eb25cf37]{width:14px;height:14px}

1
apps/admin/.output/public/_nuxt/builds/latest.json

@ -0,0 +1 @@
{"id":"045d42c9-2405-4f35-94e4-c42d64239a40","timestamp":1782350899281}

1
apps/admin/.output/public/_nuxt/builds/meta/045d42c9-2405-4f35-94e4-c42d64239a40.json

@ -0,0 +1 @@
{"id":"045d42c9-2405-4f35-94e4-c42d64239a40","timestamp":1782350899281,"prerendered":[]}

1
apps/admin/.output/public/_nuxt/calltranslate.D9zILOgL.css

@ -0,0 +1 @@
.pair-card[data-v-23837fd5]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;cursor:pointer;transition:all .15s}.pair-card[data-v-23837fd5]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.lang-badge[data-v-23837fd5]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;background:#eef2ff;color:#4338ca}.svc-pill[data-v-23837fd5]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:8px;color:#fff}.mode-badge[data-v-23837fd5]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px}.mode-pipeline[data-v-23837fd5]{background:#dbeafe;color:#1e40af}.mode-e2e[data-v-23837fd5]{background:#fff7ed;color:#c2410c}.editor-panel[data-v-23837fd5]{background:#fff;border-radius:16px;border:1px solid #c7d2fe;box-shadow:0 8px 32px #6366f11a;padding:22px;margin-bottom:16px}.mtab[data-v-23837fd5]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex:1}.mtab.on[data-v-23837fd5]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.sync-overlay[data-v-23837fd5]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-23837fd5]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-23837fd5]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-23837fd5]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-23837fd5]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-23837fd5]{border-color:#6366f1;background:#eef2ff;color:#4338ca}

1
apps/admin/.output/public/_nuxt/dashboard.DGy90zSJ.css

@ -0,0 +1 @@
.panel[data-v-d169bdaa]{background:#fff;border:1px solid #f1f5f9;border-radius:16px;box-shadow:0 1px 2px #0000000a;overflow:hidden}.panel-head[data-v-d169bdaa]{padding:12px 18px;gap:10px;border-bottom:1px solid #f8fafc;flex-wrap:wrap}.panel-dot[data-v-d169bdaa],.panel-head[data-v-d169bdaa]{display:flex;align-items:center}.panel-dot[data-v-d169bdaa]{width:30px;height:30px;border-radius:9px;justify-content:center;flex-shrink:0}.stat-box[data-v-d169bdaa]{padding:10px 12px;border-radius:10px;background:#fafbfc}.stat-label[data-v-d169bdaa]{font-size:11px;color:#94a3b8;margin-bottom:3px}.stat-val[data-v-d169bdaa]{font-size:20px;font-weight:700;color:#1e293b;line-height:1.1;letter-spacing:-.02em}.sec-title[data-v-d169bdaa]{display:flex;align-items:center;gap:10px;margin:0 0 14px}.sec-title .bar[data-v-d169bdaa]{width:4px;height:18px;border-radius:3px}.sec-title h2[data-v-d169bdaa]{font-size:15px;font-weight:700;color:#0f172a;letter-spacing:-.01em}.sec-title .sub[data-v-d169bdaa]{font-size:12px;color:#94a3b8}.sec-title .tag[data-v-d169bdaa]{font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px}.sec-title.muted .bar[data-v-d169bdaa]{height:14px;opacity:.6}.sec-title.muted h2[data-v-d169bdaa]{font-size:13px;font-weight:600;color:#94a3b8}.sec-title.hero .bar[data-v-d169bdaa]{width:5px;height:22px}.sec-title.hero h2[data-v-d169bdaa]{font-size:18px;font-weight:800;color:#0f172a}.cum-card[data-v-d169bdaa]{gap:11px;background:#f8fafc;border:1px solid #eef2f7;border-radius:12px;padding:10px 13px}.cum-card[data-v-d169bdaa],.cum-card .ico[data-v-d169bdaa]{display:flex;align-items:center}.cum-card .ico[data-v-d169bdaa]{width:30px;height:30px;border-radius:9px;justify-content:center;flex-shrink:0;font-size:14px;filter:saturate(.65);opacity:.85}.cum-card .body[data-v-d169bdaa]{min-width:0}.cum-card .lbl[data-v-d169bdaa]{font-size:11.5px;color:#94a3b8;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cum-card .val[data-v-d169bdaa]{font-size:17px;font-weight:700;color:#64748b;line-height:1.3;letter-spacing:-.01em;margin-top:1px}.today-wrap[data-v-d169bdaa]{background:linear-gradient(180deg,#e8f1ff,#f5f9ff);border:1px solid #d6e4ff;border-radius:22px;padding:20px;box-shadow:0 1px 3px #0d6efd0d}.today-card[data-v-d169bdaa]{position:relative;background:#fff;border:1px solid #e6eefb;border-radius:18px;padding:17px 19px;box-shadow:0 6px 18px #0d6efd14;transition:transform .18s ease,box-shadow .18s ease;overflow:hidden}.today-card[data-v-d169bdaa]:hover{transform:translateY(-3px);box-shadow:0 14px 32px #0d6efd26}.today-card .accent[data-v-d169bdaa]{position:absolute;left:0;top:0;bottom:0;width:5px}.today-card-top[data-v-d169bdaa]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.today-card .lbl[data-v-d169bdaa]{font-size:13px;color:#475569;font-weight:600}.today-card .ico[data-v-d169bdaa]{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px}.today-card .val[data-v-d169bdaa]{font-size:31px;font-weight:800;color:#0f172a;line-height:1.05;letter-spacing:-.02em}.today-card .foot[data-v-d169bdaa]{margin-top:9px;font-size:12px;color:#94a3b8;display:flex;align-items:center;gap:6px}.delta[data-v-d169bdaa]{display:inline-flex;align-items:center;gap:2px;font-weight:700;padding:2px 7px;border-radius:7px;font-size:11.5px}.delta.up[data-v-d169bdaa]{color:#059669;background:#ecfdf5}.delta.down[data-v-d169bdaa]{color:#dc2626;background:#fef2f2}.delta.flat[data-v-d169bdaa],.tbtn[data-v-d169bdaa]{color:#64748b;background:#f1f5f9}.tbtn[data-v-d169bdaa]{font-size:11px;padding:3px 9px;border-radius:7px;line-height:1.4}.tbtn[data-v-d169bdaa]:hover{background:#e2e8f0}.tbtn-on[data-v-d169bdaa]{background:#1e293b;color:#fff}

1
apps/admin/.output/public/_nuxt/entry.DS97S_sV.css

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/error-404.Dm-MYrAh.css

@ -0,0 +1 @@
.grid[data-v-52418c85]{display:grid}.mb-2[data-v-52418c85]{margin-bottom:.5rem}.mb-4[data-v-52418c85]{margin-bottom:1rem}.max-w-520px[data-v-52418c85]{max-width:520px}.min-h-screen[data-v-52418c85]{min-height:100vh}.w-full[data-v-52418c85]{width:100%}.flex[data-v-52418c85]{display:flex}.place-content-center[data-v-52418c85]{place-content:center}.items-center[data-v-52418c85]{align-items:center}.justify-center[data-v-52418c85]{justify-content:center}.overflow-hidden[data-v-52418c85]{overflow:hidden}.bg-white[data-v-52418c85]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-52418c85]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-52418c85]{text-align:center}.text-\[80px\][data-v-52418c85]{font-size:80px}.text-2xl[data-v-52418c85]{font-size:1.5rem;line-height:2rem}.text-sm[data-v-52418c85]{font-size:.875rem;line-height:1.25rem}.text-\[\#020420\][data-v-52418c85]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\][data-v-52418c85]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.hover\:text-\[\#00DC82\][data-v-52418c85]:hover{--un-text-opacity:1;color:rgb(0 220 130/var(--un-text-opacity))}.font-medium[data-v-52418c85]{font-weight:500}.font-semibold[data-v-52418c85]{font-weight:600}.leading-none[data-v-52418c85]{line-height:1}.tracking-wide[data-v-52418c85]{letter-spacing:.025em}.font-sans[data-v-52418c85]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-52418c85]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.underline[data-v-52418c85]{text-decoration-line:underline}.underline-offset-3[data-v-52418c85]{text-underline-offset:3px}.antialiased[data-v-52418c85]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-\[\#020420\][data-v-52418c85]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\:text-white[data-v-52418c85]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:text-\[110px\][data-v-52418c85]{font-size:110px}.sm\:text-3xl[data-v-52418c85]{font-size:1.875rem;line-height:2.25rem}}

1
apps/admin/.output/public/_nuxt/error-500.DM8oqBl3.css

@ -0,0 +1 @@
.grid[data-v-2c2ce9e3]{display:grid}.mb-2[data-v-2c2ce9e3]{margin-bottom:.5rem}.mb-4[data-v-2c2ce9e3]{margin-bottom:1rem}.max-w-520px[data-v-2c2ce9e3]{max-width:520px}.min-h-screen[data-v-2c2ce9e3]{min-height:100vh}.place-content-center[data-v-2c2ce9e3]{place-content:center}.overflow-hidden[data-v-2c2ce9e3]{overflow:hidden}.bg-white[data-v-2c2ce9e3]{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2[data-v-2c2ce9e3]{padding-left:.5rem;padding-right:.5rem}.text-center[data-v-2c2ce9e3]{text-align:center}.text-\[80px\][data-v-2c2ce9e3]{font-size:80px}.text-2xl[data-v-2c2ce9e3]{font-size:1.5rem;line-height:2rem}.text-\[\#020420\][data-v-2c2ce9e3]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\[\#64748B\][data-v-2c2ce9e3]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.font-semibold[data-v-2c2ce9e3]{font-weight:600}.leading-none[data-v-2c2ce9e3]{line-height:1}.tracking-wide[data-v-2c2ce9e3]{letter-spacing:.025em}.font-sans[data-v-2c2ce9e3]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums[data-v-2c2ce9e3]{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.antialiased[data-v-2c2ce9e3]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\:bg-\[\#020420\][data-v-2c2ce9e3]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\:text-white[data-v-2c2ce9e3]{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\:text-\[110px\][data-v-2c2ce9e3]{font-size:110px}.sm\:text-3xl[data-v-2c2ce9e3]{font-size:1.875rem;line-height:2.25rem}}

1
apps/admin/.output/public/_nuxt/fDZAM7sq.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/index.4nAkFRy2.css

@ -0,0 +1 @@
.login-bg[data-v-3a3bca03]{min-height:100vh;background:linear-gradient(135deg,#0f172a,#1e293b 50%,#0f172a);position:relative;overflow:hidden}.login-bg[data-v-3a3bca03]:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(ellipse at 30% 20%,rgba(99,102,241,.15) 0,transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(139,92,246,.1) 0,transparent 50%);animation:bgFloat-3a3bca03 20s ease-in-out infinite}@keyframes bgFloat-3a3bca03{0%,to{transform:translate(0)}50%{transform:translate(-2%,2%)}}.login-card[data-v-3a3bca03]{background:#fffffff2;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid hsla(0,0%,100%,.2);border-radius:20px;box-shadow:0 25px 80px #0000004d,0 8px 32px #00000026;padding:40px;width:100%;max-width:420px;animation:cardIn-3a3bca03 .6s cubic-bezier(.16,1,.3,1)}@keyframes cardIn-3a3bca03{0%{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.logo-icon[data-v-3a3bca03]{width:56px;height:56px;background:linear-gradient(135deg,#4f46e5,#7c3aed);border-radius:16px;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;box-shadow:0 8px 24px #4f46e559}.login-input[data-v-3a3bca03]{width:100%;padding:12px 16px;border:1.5px solid #e2e8f0;border-radius:10px;font-size:14px;color:#334155;background:#f8fafc;transition:all .2s;outline:none}.login-input[data-v-3a3bca03]:focus{border-color:#6366f1;background:#fff;box-shadow:0 0 0 3px #6366f11a}.login-input[data-v-3a3bca03]::-moz-placeholder{color:#cbd5e1}.login-input[data-v-3a3bca03]::placeholder{color:#cbd5e1}.login-btn[data-v-3a3bca03]{width:100%;padding:12px;border:none;border-radius:10px;background:linear-gradient(135deg,#4f46e5,#6366f1);color:#fff;font-size:15px;font-weight:600;cursor:pointer;transition:all .3s;box-shadow:0 4px 16px #4f46e54d}.login-btn[data-v-3a3bca03]:hover{background:linear-gradient(135deg,#4338ca,#4f46e5);transform:translateY(-2px);box-shadow:0 8px 24px #4f46e566}.login-btn[data-v-3a3bca03]:active{transform:translateY(0)}.login-btn.loading[data-v-3a3bca03]{opacity:.7;pointer-events:none}.login-label[data-v-3a3bca03]{display:block;font-size:13px;font-weight:500;color:#64748b;margin-bottom:6px}.login-error[data-v-3a3bca03]{background:#fef2f2;border:1px solid #fecaca;color:#dc2626;padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:16px;display:none}.login-error.show[data-v-3a3bca03]{display:flex;align-items:center;gap:8px}

1
apps/admin/.output/public/_nuxt/qq1ArTA8.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/serviceconfig.GtXqs6_A.css

@ -0,0 +1 @@
.svc-item[data-v-8f55f9ae]{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid #eef2f7;background:#fff;cursor:pointer;transition:all .15s}.svc-item[data-v-8f55f9ae]:hover{border-color:#c7d2fe;background:#f5f3ff}.svc-item.active[data-v-8f55f9ae]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff);box-shadow:0 4px 12px #6366f11f}.svc-logo[data-v-8f55f9ae]{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;color:#fff;font-weight:700}.cat-chip[data-v-8f55f9ae]{font-weight:700;padding:2px 7px}.cat-chip[data-v-8f55f9ae],.lock-badge[data-v-8f55f9ae]{display:inline-flex;font-size:10px;border-radius:6px}.lock-badge[data-v-8f55f9ae]{align-items:center;gap:3px;font-weight:600;padding:1px 7px;background:#fef2f2;color:#dc2626}.inherit-badge[data-v-8f55f9ae]{background:#f1f5f9;color:#94a3b8}.inherit-badge[data-v-8f55f9ae],.override-badge[data-v-8f55f9ae]{font-size:10px;font-weight:600;padding:1px 7px;border-radius:6px}.override-badge[data-v-8f55f9ae]{background:#fef3c7;color:#b45309}.field-input[data-v-8f55f9ae]{border:1px solid #e2e8f0;border-radius:7px;padding:5px 9px;font-size:12.5px;font-family:SF Mono,Menlo,monospace;width:100%}.field-input[data-v-8f55f9ae]:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a;outline:none}.sync-overlay[data-v-8f55f9ae]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-8f55f9ae]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-8f55f9ae]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-8f55f9ae]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-8f55f9ae]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-8f55f9ae]{border-color:#6366f1;background:#eef2ff;color:#4338ca}

1
apps/admin/.output/public/_nuxt/statlog.C1q_3yEh.css

@ -0,0 +1 @@
.panel[data-v-742ee359]{background:#fff;border:1px solid #f1f5f9;border-radius:16px;box-shadow:0 1px 2px #0000000a}.logrow[data-v-742ee359]{display:grid;grid-template-columns:80px 64px 210px 92px 1fr 104px;gap:10px;align-items:start;padding:6px 12px;border-bottom:1px solid #f1f5f9;font-size:12px}.logrow[data-v-742ee359]:hover{background:#f8fafc}.logrow .t[data-v-742ee359]{font-family:ui-monospace,Menlo,monospace;color:#64748b}.lv[data-v-742ee359]{font-size:10px;font-weight:700;padding:1px 6px;border-radius:6px;white-space:nowrap}.lv-info[data-v-742ee359]{background:#dcfce7;color:#15803d}.lv-warn[data-v-742ee359]{background:#fef9c3;color:#a16207}.lv-error[data-v-742ee359]{background:#fee2e2;color:#b91c1c}.late[data-v-742ee359]{font-size:10px;color:#a16207;background:#fef3c7;border-radius:5px;padding:0 4px;margin-left:4px}.muted[data-v-742ee359]{color:#94a3b8}.app-name[data-v-742ee359]{font-weight:600;color:#0f172a}.unreg[data-v-742ee359]{font-size:10px;color:#b45309;background:#fef3c7;border-radius:5px;padding:0 5px;margin-left:5px;white-space:nowrap}#logHead[data-v-742ee359]{display:grid;grid-template-columns:80px 64px 210px 92px 1fr 104px;gap:10px;padding:7px 12px;font-size:11px;color:#94a3b8;border-bottom:1px solid #e2e8f0;background:#f8fafc}

4
apps/admin/.output/public/_nuxt/ydFS6PsN.js

File diff suppressed because one or more lines are too long

1
apps/admin/.output/public/_nuxt/yy0tqe-M.js

File diff suppressed because one or more lines are too long

19
apps/admin/.output/server/chunks/_/error-500.mjs

@ -0,0 +1,19 @@
import { escapeHtml } from '@vue/shared';
const _messages = {
"appName": "Nuxt",
"status": 500,
"statusText": "Internal server error",
"description": "This page is temporarily unavailable.",
"refresh": "Refresh this page"
};
const template = (messages) => {
messages = {
..._messages,
...messages
};
return "<!DOCTYPE html><html lang=\"en\"><head><title>" + escapeHtml(messages.status) + " - " + escapeHtml(messages.statusText) + " | " + escapeHtml(messages.appName) + "</title><meta charset=\"utf-8\"><meta content=\"width=device-width,initial-scale=1.0,minimum-scale=1.0\" name=\"viewport\"><script>!function(){const e=document.createElement(\"link\").relList;if(!(e&&e.supports&&e.supports(\"modulepreload\"))){for(const e of document.querySelectorAll('link[rel=\"modulepreload\"]'))r(e);new MutationObserver(e=>{for(const o of e)if(\"childList\"===o.type)for(const e of o.addedNodes)\"LINK\"===e.tagName&&\"modulepreload\"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),\"use-credentials\"===e.crossOrigin?r.credentials=\"include\":\"anonymous\"===e.crossOrigin?r.credentials=\"omit\":r.credentials=\"same-origin\",r}(e);fetch(e.href,r)}}();<\/script><style>*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color,#e5e7eb)}:after,:before{--un-content:\"\"}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.grid{display:grid}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.max-w-520px{max-width:520px}.min-h-screen{min-height:100vh}.place-content-center{place-content:center}.overflow-hidden{overflow:hidden}.bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-2{padding-left:.5rem;padding-right:.5rem}.text-center{text-align:center}.text-\\[80px\\]{font-size:80px}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\\[\\#020420\\]{--un-text-opacity:1;color:rgb(2 4 32/var(--un-text-opacity))}.text-\\[\\#64748B\\]{--un-text-opacity:1;color:rgb(100 116 139/var(--un-text-opacity))}.font-semibold{font-weight:600}.leading-none{line-height:1}.tracking-wide{letter-spacing:.025em}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.tabular-nums{--un-numeric-spacing:tabular-nums;font-variant-numeric:var(--un-ordinal) var(--un-slashed-zero) var(--un-numeric-figure) var(--un-numeric-spacing) var(--un-numeric-fraction)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(prefers-color-scheme:dark){.dark\\:bg-\\[\\#020420\\]{--un-bg-opacity:1;background-color:rgb(2 4 32/var(--un-bg-opacity))}.dark\\:text-white{--un-text-opacity:1;color:rgb(255 255 255/var(--un-text-opacity))}}@media(min-width:640px){.sm\\:text-\\[110px\\]{font-size:110px}.sm\\:text-3xl{font-size:1.875rem;line-height:2.25rem}}</style></head><body class=\"antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide\"><div class=\"max-w-520px text-center\"><h1 class=\"font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]\">" + escapeHtml(messages.status) + "</h1><h2 class=\"font-semibold mb-2 sm:text-3xl text-2xl\">" + escapeHtml(messages.statusText) + "</h2><p class=\"mb-4 px-2 text-[#64748B] text-md\">" + escapeHtml(messages.description) + "</p></div></body></html>";
};
export { template };
//# sourceMappingURL=error-500.mjs.map

1
apps/admin/.output/server/chunks/_/error-500.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"error-500.mjs","sources":["../../../../node_modules/.pnpm/@nuxt+nitro-server@4.4.8_@babel+plugin-syntax-typescript@7.29.7_@babel+core@7.29.7__db0_5045ebd3802f96c9dd021f3300fcdf4c/node_modules/@nuxt/nitro-server/dist/runtime/templates/error-500.mjs"],"names":[],"mappings":"","x_google_ignoreList":[0]}

164
apps/admin/.output/server/chunks/build/accounts-Bou39dJh.mjs

@ -0,0 +1,164 @@
import { defineComponent, ref, reactive, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderStyle, ssrRenderList, ssrInterpolate, ssrRenderClass, ssrRenderAttr, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual } from 'vue/server-renderer';
import { u as useApi } from './useApi-B7CB0Cnn.mjs';
import { u as useToast } from './useToast-BwtTR9dH.mjs';
import { _ as _export_sfc } from './server.mjs';
import './auth-QFkCoU1C.mjs';
import 'pinia';
import '../nitro/nitro.mjs';
import 'node:http';
import 'node:https';
import 'node:events';
import 'node:buffer';
import 'node:fs';
import 'node:path';
import 'node:crypto';
import 'node:url';
import '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'perfect-debounce';
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "accounts",
__ssrInlineRender: true,
setup(__props) {
useApi();
useToast();
const ROLE = { 1: "超管", 2: "管理员", 3: "代理", 4: "运营" };
const ROLE_CLS = { 1: "badge-error", 2: "badge-primary", 3: "badge-warning", 4: "badge-info" };
const ACCESS_PAGES = [["dashboard", "仪表盘"], ["factory", "厂家管理"], ["product", "产品管理"], ["device", "生产管理"], ["code", "公码管理"], ["user", "用户查询"], ["apps", "应用注册"]];
const REGIONS = [["cn", "中国"], ["us", "美国"], ["ea", "东亚"], ["sea", "东南亚"], ["sa", "南亚"], ["me", "中东"], ["eu", "欧洲"], ["ru", "俄罗斯"], ["af", "非洲"], ["sam", "南美"], ["nam", "北美"], ["oc", "大洋洲"], ["br", "巴西"], ["in", "印度"]];
const view = ref("list");
const rows = ref([]);
const apps = ref([]);
const loading = ref(false);
const submitting = ref(false);
const editId = ref(0);
const form = reactive({
username: "",
password: "",
identity: 2,
enabled: "1",
remark: ""
});
const sel = reactive({
access: [],
apps: [],
regions: [],
products: []
});
const productGroups = ref([]);
const prodLoading = ref(false);
function fromCsv(s) {
return (s || "").split(",").map((x) => x.trim()).filter((x) => x);
}
function scopeParts(a) {
const parts = [];
if (a.apps) parts.push("应用:" + fromCsv(a.apps).length);
if (a.regions) parts.push("区域:" + fromCsv(a.regions).length);
if (a.products) parts.push("产品:" + fromCsv(a.products).length);
if (a.access) parts.push("页面:" + fromCsv(a.access).length);
return parts;
}
ref(null);
ref(0);
const topup = reactive({
name: "",
cur: "",
vipday: 0,
trademin: 0,
meetmin: 0
});
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(_attrs)} data-v-eb25cf37><div style="${ssrRenderStyle(view.value === "list" ? null : { display: "none" })}" data-v-eb25cf37><div class="flex items-center justify-between mb-4" data-v-eb25cf37><div data-v-eb25cf37><h2 class="text-lg font-bold text-slate-700" data-v-eb25cf37>后台账号</h2><p class="text-xs text-slate-400 mt-0.5" data-v-eb25cf37>超管 / 管理员 / 代理 / 运营。代理·运营可绑定应用·区域·产品,登录后仪表盘按绑定限制。</p></div><button class="btn btn-primary btn-sm text-white" data-v-eb25cf37>+ 新建账号</button></div><div class="bg-white rounded-xl shadow-sm border border-slate-100 overflow-hidden" data-v-eb25cf37><table class="table table-sm" data-v-eb25cf37><thead data-v-eb25cf37><tr class="text-slate-500" data-v-eb25cf37><th data-v-eb25cf37>ID</th><th data-v-eb25cf37>用户名</th><th data-v-eb25cf37>角色</th><th data-v-eb25cf37>状态</th><th data-v-eb25cf37>绑定作用域</th><th data-v-eb25cf37>备注</th><th class="text-right" data-v-eb25cf37>操作</th></tr></thead><tbody data-v-eb25cf37>`);
if (loading.value) {
_push(`<tr data-v-eb25cf37><td colspan="7" class="text-center text-slate-400 py-8" data-v-eb25cf37>加载中...</td></tr>`);
} else if (!rows.value.length) {
_push(`<tr data-v-eb25cf37><td colspan="7" class="text-center text-slate-400 py-8" data-v-eb25cf37>暂无账号(引导超管不在此列)</td></tr>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(rows.value, (a) => {
_push(`<tr data-v-eb25cf37><td class="font-mono" data-v-eb25cf37>${ssrInterpolate(a.id)}</td><td class="font-medium" data-v-eb25cf37>${ssrInterpolate(a.username || "")}</td><td data-v-eb25cf37><span class="${ssrRenderClass([ROLE_CLS[a.identity] || "", "badge badge-sm"])}" data-v-eb25cf37>${ssrInterpolate(ROLE[a.identity] || a.identity)}</span></td><td data-v-eb25cf37>`);
if (a.enabled) {
_push(`<span class="text-green-600 text-xs" data-v-eb25cf37>启用</span>`);
} else {
_push(`<span class="text-slate-400 text-xs" data-v-eb25cf37>停用</span>`);
}
_push(`</td><td data-v-eb25cf37>`);
if (a.identity === 3 || a.identity === 4) {
_push(`<!--[-->`);
if (scopeParts(a).length) {
_push(`<span class="text-xs text-slate-500" data-v-eb25cf37>${ssrInterpolate(scopeParts(a).join(" · "))}</span>`);
} else {
_push(`<span class="text-xs text-slate-300" data-v-eb25cf37>未绑定(不限)</span>`);
}
_push(`<!--]-->`);
} else {
_push(`<span class="text-xs text-slate-300" data-v-eb25cf37>全部权限</span>`);
}
if (a.identity === 3) {
_push(`<div class="text-[11px] text-emerald-600 mt-0.5" data-v-eb25cf37> 余额 VIP${ssrInterpolate(a.balance_vipday || 0)}天 · 翻译${ssrInterpolate(a.balance_trademin || 0)}分 · 会议${ssrInterpolate(a.balance_meetmin || 0)}分 </div>`);
} else {
_push(`<!---->`);
}
_push(`</td><td class="text-xs text-slate-500" data-v-eb25cf37>${ssrInterpolate(a.remark || "")}</td><td data-v-eb25cf37><div class="flex gap-1 justify-end" data-v-eb25cf37>`);
if (a.identity === 3) {
_push(`<button class="btn btn-ghost btn-xs text-emerald-600" data-v-eb25cf37>充值</button>`);
} else {
_push(`<!---->`);
}
_push(`<button class="btn btn-ghost btn-xs" data-v-eb25cf37>编辑</button><button class="btn btn-ghost btn-xs text-amber-600" data-v-eb25cf37>改密</button><button class="btn btn-ghost btn-xs text-red-500" data-v-eb25cf37>删除</button></div></td></tr>`);
});
_push(`<!--]--></tbody></table></div></div><div style="${ssrRenderStyle(view.value === "form" ? null : { display: "none" })}" data-v-eb25cf37><div class="flex items-center gap-3 mb-5" data-v-eb25cf37><button class="btn btn-ghost btn-sm" data-v-eb25cf37>← 返回列表</button><h2 class="text-lg font-semibold text-slate-800" data-v-eb25cf37>${ssrInterpolate(editId.value ? "编辑账号 #" + editId.value : "新建账号")}</h2></div><div class="bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl" data-v-eb25cf37><div class="grid grid-cols-2 gap-3" data-v-eb25cf37><div data-v-eb25cf37><label class="text-xs text-slate-500" data-v-eb25cf37>用户名</label><input${ssrRenderAttr("value", form.username)}${ssrIncludeBooleanAttr(!!editId.value) ? " disabled" : ""} class="input input-bordered input-sm w-full" placeholder="登录用户名" data-v-eb25cf37></div><div style="${ssrRenderStyle(!editId.value ? null : { display: "none" })}" data-v-eb25cf37><label class="text-xs text-slate-500" data-v-eb25cf37>密码</label><input${ssrRenderAttr("value", form.password)} type="password" class="input input-bordered input-sm w-full" placeholder="登录密码" data-v-eb25cf37></div><div data-v-eb25cf37><label class="text-xs text-slate-500" data-v-eb25cf37>角色</label><select class="select select-bordered select-sm w-full" data-v-eb25cf37><option${ssrRenderAttr("value", 2)} data-v-eb25cf37${ssrIncludeBooleanAttr(Array.isArray(form.identity) ? ssrLooseContain(form.identity, 2) : ssrLooseEqual(form.identity, 2)) ? " selected" : ""}>管理员(除账号管理外全部)</option><option${ssrRenderAttr("value", 3)} data-v-eb25cf37${ssrIncludeBooleanAttr(Array.isArray(form.identity) ? ssrLooseContain(form.identity, 3) : ssrLooseEqual(form.identity, 3)) ? " selected" : ""}>代理(外部,按绑定限制)</option><option${ssrRenderAttr("value", 4)} data-v-eb25cf37${ssrIncludeBooleanAttr(Array.isArray(form.identity) ? ssrLooseContain(form.identity, 4) : ssrLooseEqual(form.identity, 4)) ? " selected" : ""}>运营(内部,按绑定限制)</option><option${ssrRenderAttr("value", 1)} data-v-eb25cf37${ssrIncludeBooleanAttr(Array.isArray(form.identity) ? ssrLooseContain(form.identity, 1) : ssrLooseEqual(form.identity, 1)) ? " selected" : ""}>超管(全部权限)</option></select></div><div data-v-eb25cf37><label class="text-xs text-slate-500" data-v-eb25cf37>状态</label><select class="select select-bordered select-sm w-full" data-v-eb25cf37><option value="1" data-v-eb25cf37${ssrIncludeBooleanAttr(Array.isArray(form.enabled) ? ssrLooseContain(form.enabled, "1") : ssrLooseEqual(form.enabled, "1")) ? " selected" : ""}>启用</option><option value="0" data-v-eb25cf37${ssrIncludeBooleanAttr(Array.isArray(form.enabled) ? ssrLooseContain(form.enabled, "0") : ssrLooseEqual(form.enabled, "0")) ? " selected" : ""}>停用</option></select></div><div class="col-span-2" data-v-eb25cf37><label class="text-xs text-slate-500" data-v-eb25cf37>备注</label><input${ssrRenderAttr("value", form.remark)} class="input input-bordered input-sm w-full" placeholder="可选" data-v-eb25cf37></div></div><div class="mt-4 border-t border-slate-100 pt-4" style="${ssrRenderStyle(form.identity === 3 || form.identity === 4 ? null : { display: "none" })}" data-v-eb25cf37><div class="text-sm font-semibold text-slate-600 mb-2" data-v-eb25cf37>作用域绑定 <span class="text-xs text-slate-400 font-normal" data-v-eb25cf37>(代理/运营生效;勾选可访问页面,并限制仪表盘数据范围)</span></div><div class="mb-3" data-v-eb25cf37><div class="text-xs text-slate-500 mb-1.5" data-v-eb25cf37>可访问页面</div><div class="flex flex-wrap gap-2" data-v-eb25cf37><!--[-->`);
ssrRenderList(ACCESS_PAGES, (p) => {
_push(`<label class="chk" data-v-eb25cf37><input${ssrIncludeBooleanAttr(Array.isArray(sel.access) ? ssrLooseContain(sel.access, p[0]) : sel.access) ? " checked" : ""} type="checkbox"${ssrRenderAttr("value", p[0])} data-v-eb25cf37>${ssrInterpolate(p[1])}</label>`);
});
_push(`<!--]--></div></div><div class="mb-3" data-v-eb25cf37><div class="text-xs text-slate-500 mb-1.5" data-v-eb25cf37>绑定应用 <span class="text-slate-300" data-v-eb25cf37>(仪表盘只显示这些应用数据;不勾=不限)</span></div><div class="flex flex-wrap gap-2" data-v-eb25cf37>`);
if (apps.value.length) {
_push(`<!--[-->`);
ssrRenderList(apps.value, (a) => {
_push(`<label class="chk" data-v-eb25cf37><input${ssrIncludeBooleanAttr(Array.isArray(sel.apps) ? ssrLooseContain(sel.apps, a.name) : sel.apps) ? " checked" : ""} type="checkbox"${ssrRenderAttr("value", a.name)} data-v-eb25cf37>${ssrInterpolate(a.name || "应用#" + a.id)}</label>`);
});
_push(`<!--]-->`);
} else {
_push(`<span class="text-xs text-slate-300" data-v-eb25cf37>无注册应用</span>`);
}
_push(`</div></div><div class="mb-3" data-v-eb25cf37><div class="text-xs text-slate-500 mb-1.5" data-v-eb25cf37>绑定区域 <span class="text-slate-300" data-v-eb25cf37>(不勾=不限)</span></div><div class="flex flex-wrap gap-2" data-v-eb25cf37><!--[-->`);
ssrRenderList(REGIONS, (r) => {
_push(`<label class="chk" data-v-eb25cf37><input${ssrIncludeBooleanAttr(Array.isArray(sel.regions) ? ssrLooseContain(sel.regions, r[0]) : sel.regions) ? " checked" : ""} type="checkbox"${ssrRenderAttr("value", r[0])} data-v-eb25cf37>${ssrInterpolate(r[1])}</label>`);
});
_push(`<!--]--></div></div><div data-v-eb25cf37><div class="text-xs text-slate-500 mb-1.5" data-v-eb25cf37>绑定产品 <span class="text-slate-300" data-v-eb25cf37>(按厂家分组;仪表盘只显示这些产品数据;不勾=不限)</span></div><div class="max-h-56 overflow-y-auto pr-1 border border-slate-100 rounded-lg p-2" data-v-eb25cf37>`);
if (prodLoading.value) {
_push(`<span class="text-xs text-slate-300" data-v-eb25cf37>加载产品中...</span>`);
} else if (!productGroups.value.length) {
_push(`<span class="text-xs text-slate-300" data-v-eb25cf37>无产品</span>`);
} else {
_push(`<!--[-->`);
ssrRenderList(productGroups.value, (g) => {
_push(`<div class="mb-2 last:mb-0" data-v-eb25cf37><div class="text-[11px] font-semibold text-slate-500 mb-1 sticky top-0 bg-white py-0.5" data-v-eb25cf37>🏭 ${ssrInterpolate(g.label)}</div><div class="flex flex-wrap gap-2" data-v-eb25cf37><!--[-->`);
ssrRenderList(g.products, (p) => {
_push(`<label class="chk" data-v-eb25cf37><input${ssrIncludeBooleanAttr(Array.isArray(sel.products) ? ssrLooseContain(sel.products, String(p.id)) : sel.products) ? " checked" : ""} type="checkbox"${ssrRenderAttr("value", String(p.id))} data-v-eb25cf37>${ssrInterpolate((p.devicename || "产品") + " #" + p.id)}</label>`);
});
_push(`<!--]--></div></div>`);
});
_push(`<!--]-->`);
}
_push(`</div></div></div><div class="flex gap-3 justify-end mt-6" data-v-eb25cf37><button class="btn btn-ghost btn-sm" data-v-eb25cf37>取消</button><button class="btn btn-primary btn-sm text-white"${ssrIncludeBooleanAttr(submitting.value) ? " disabled" : ""} data-v-eb25cf37>保存</button></div></div></div><dialog class="modal" data-v-eb25cf37><div class="modal-box max-w-md" data-v-eb25cf37><h3 class="font-bold text-lg mb-1" data-v-eb25cf37>充值 / 调整资源点</h3><p class="text-xs text-slate-400 mb-3" data-v-eb25cf37>代理:<span class="font-medium text-slate-600" data-v-eb25cf37>${ssrInterpolate(topup.name)}</span>。填增量(可填负数下调),当前余额:<span class="text-emerald-600" data-v-eb25cf37>${ssrInterpolate(topup.cur)}</span></p><div class="grid grid-cols-3 gap-3" data-v-eb25cf37><div data-v-eb25cf37><label class="text-xs text-slate-500" data-v-eb25cf37>VIP天数</label><input${ssrRenderAttr("value", topup.vipday)} type="number" class="input input-bordered input-sm w-full" data-v-eb25cf37></div><div data-v-eb25cf37><label class="text-xs text-slate-500" data-v-eb25cf37>翻译分钟</label><input${ssrRenderAttr("value", topup.trademin)} type="number" class="input input-bordered input-sm w-full" data-v-eb25cf37></div><div data-v-eb25cf37><label class="text-xs text-slate-500" data-v-eb25cf37>会议分钟</label><input${ssrRenderAttr("value", topup.meetmin)} type="number" class="input input-bordered input-sm w-full" data-v-eb25cf37></div></div><div class="modal-action" data-v-eb25cf37><button class="btn btn-ghost btn-sm" data-v-eb25cf37>取消</button><button class="btn btn-primary btn-sm text-white" data-v-eb25cf37>确认</button></div></div><form method="dialog" class="modal-backdrop" data-v-eb25cf37><button data-v-eb25cf37>close</button></form></dialog></div>`);
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/accounts.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const accounts = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-eb25cf37"]]);
export { accounts as default };
//# sourceMappingURL=accounts-Bou39dJh.mjs.map

1
apps/admin/.output/server/chunks/build/accounts-Bou39dJh.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"accounts-Bou39dJh.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-Bou39dJh.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

8
apps/admin/.output/server/chunks/build/accounts-styles.DcThijbg.mjs

@ -0,0 +1,8 @@
const accounts_vue_vue_type_style_index_0_scoped_eb25cf37_lang = ".chk[data-v-eb25cf37]{display:flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid #e2e8f0;border-radius:8px;font-size:12px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chk[data-v-eb25cf37]:hover{background:#f8fafc}.chk input[data-v-eb25cf37]{width:14px;height:14px}";
const accountsStyles_DcThijbg = [
accounts_vue_vue_type_style_index_0_scoped_eb25cf37_lang
];
export { accountsStyles_DcThijbg as default };
//# sourceMappingURL=accounts-styles.DcThijbg.mjs.map

1
apps/admin/.output/server/chunks/build/accounts-styles.DcThijbg.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"accounts-styles.DcThijbg.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles-1.mjs-u86cirh-.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/accounts-styles.DcThijbg.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}

140
apps/admin/.output/server/chunks/build/apps-DL1E6wot.mjs

File diff suppressed because one or more lines are too long

1
apps/admin/.output/server/chunks/build/apps-DL1E6wot.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"apps-DL1E6wot.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/apps-DL1E6wot.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

39
apps/admin/.output/server/chunks/build/auth-C9kTPqOY.mjs

@ -0,0 +1,39 @@
import { mergeProps, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderSlot } from 'vue/server-renderer';
import { _ as _export_sfc } from './server.mjs';
import '../nitro/nitro.mjs';
import 'node:http';
import 'node:https';
import 'node:events';
import 'node:buffer';
import 'node:fs';
import 'node:path';
import 'node:crypto';
import 'node:url';
import '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'pinia';
import 'perfect-debounce';
const _sfc_main = {};
function _sfc_ssrRender(_ctx, _push, _parent, _attrs) {
_push(`<div${ssrRenderAttrs(mergeProps({
class: "min-h-screen",
"data-theme": "corporate"
}, _attrs))}>`);
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
_push(`</div>`);
}
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("layouts/auth.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const auth = /* @__PURE__ */ _export_sfc(_sfc_main, [["ssrRender", _sfc_ssrRender]]);
export { auth as default };
//# sourceMappingURL=auth-C9kTPqOY.mjs.map

1
apps/admin/.output/server/chunks/build/auth-C9kTPqOY.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"auth-C9kTPqOY.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/auth-C9kTPqOY.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

121
apps/admin/.output/server/chunks/build/auth-QFkCoU1C.mjs

@ -0,0 +1,121 @@
import { defineStore } from 'pinia';
const IDENTITY_LABELS = {
1: "超管",
2: "管理员",
3: "代理",
4: "运营"
};
function parseComma(val) {
if (!val) return [];
return val.split(",").map((s) => s.trim()).filter(Boolean);
}
function saveToStorage(data) {
}
const useAuthStore = defineStore("auth", {
state: () => ({
token: "",
account: "",
identity: 0,
access: [],
apps: [],
regions: [],
products: [],
appbinds: [],
currentAppId: 0,
siteTitle: ""
}),
getters: {
isSuperAdmin() {
return this.identity === 1;
},
isAdmin() {
return this.identity === 1 || this.identity === 2;
},
identityLabel() {
return IDENTITY_LABELS[this.identity] ?? "";
},
isLoggedIn() {
return !!this.token;
}
},
actions: {
setLoginData(data) {
this.token = data.token;
this.account = data.account;
this.identity = data.identity;
this.access = parseComma(data.access);
this.apps = parseComma(data.apps);
this.regions = parseComma(data.regions);
this.products = parseComma(data.products);
this.appbinds = data.appbinds ?? [];
if (this.appbinds.length > 0 && !this.currentAppId) {
this.currentAppId = this.appbinds[0].id;
}
saveToStorage({
token: this.token,
account: this.account,
identity: this.identity,
access: this.access,
apps: this.apps,
regions: this.regions,
products: this.products,
appbinds: this.appbinds,
currentAppId: this.currentAppId,
siteTitle: this.siteTitle
});
},
setCurrentApp(id) {
this.currentAppId = id;
saveToStorage({
token: this.token,
account: this.account,
identity: this.identity,
access: this.access,
apps: this.apps,
regions: this.regions,
products: this.products,
appbinds: this.appbinds,
currentAppId: this.currentAppId,
siteTitle: this.siteTitle
});
},
setSiteTitle(title) {
this.siteTitle = title;
saveToStorage({
token: this.token,
account: this.account,
identity: this.identity,
access: this.access,
apps: this.apps,
regions: this.regions,
products: this.products,
appbinds: this.appbinds,
currentAppId: this.currentAppId,
siteTitle: this.siteTitle
});
},
logout() {
this.token = "";
this.account = "";
this.identity = 0;
this.access = [];
this.apps = [];
this.regions = [];
this.products = [];
this.appbinds = [];
this.currentAppId = 0;
this.siteTitle = "";
},
restore() {
return;
},
hasAccess(pageId) {
if (this.identity === 1) return true;
return this.access.includes(pageId);
}
}
});
export { useAuthStore as u };
//# sourceMappingURL=auth-QFkCoU1C.mjs.map

1
apps/admin/.output/server/chunks/build/auth-QFkCoU1C.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"auth-QFkCoU1C.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/auth-QFkCoU1C.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

204
apps/admin/.output/server/chunks/build/calltranslate-qCADGfI8.mjs

@ -0,0 +1,204 @@
import { defineComponent, ref, reactive, computed, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderList, ssrRenderAttr, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrInterpolate, ssrRenderStyle, ssrRenderClass } from 'vue/server-renderer';
import { u as useApi } from './useApi-B7CB0Cnn.mjs';
import { u as useToast } from './useToast-BwtTR9dH.mjs';
import { _ as _export_sfc } from './server.mjs';
import './auth-QFkCoU1C.mjs';
import 'pinia';
import '../nitro/nitro.mjs';
import 'node:http';
import 'node:https';
import 'node:events';
import 'node:buffer';
import 'node:fs';
import 'node:path';
import 'node:crypto';
import 'node:url';
import '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'perfect-debounce';
const SCAT_STT = 1;
const SCAT_TTS = 2;
const SCAT_MT = 3;
const SCAT_AST = 4;
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "calltranslate",
__ssrInlineRender: true,
setup(__props) {
const LANGS = [
{ c: "zh", n: "中文" },
{ c: "en", n: "英文" },
{ c: "ja", n: "日语" },
{ c: "ko", n: "韩语" },
{ c: "fr", n: "法语" },
{ c: "de", n: "德语" },
{ c: "es", n: "西班牙语" },
{ c: "pt", n: "葡萄牙语" },
{ c: "ru", n: "俄语" },
{ c: "ar", n: "阿拉伯语" },
{ c: "th", n: "泰语" },
{ c: "vi", n: "越南语" },
{ c: "id", n: "印尼语" },
{ c: "ms", n: "马来语" },
{ c: "hi", n: "印地语" }
];
function langName(c) {
const x = LANGS.find((l) => l.c === c);
return x ? x.n : c || "";
}
const REGIONS = [
{ value: 1, label: "中国" },
{ value: 2, label: "美国" },
{ value: 3, label: "东亚" },
{ value: 4, label: "东南亚" },
{ value: 5, label: "南亚" },
{ value: 6, label: "中东" },
{ value: 7, label: "欧洲" },
{ value: 8, label: "俄罗斯" },
{ value: 9, label: "非洲" },
{ value: 10, label: "南美" },
{ value: 11, label: "北美" },
{ value: 12, label: "大洋洲" },
{ value: 13, label: "巴西" },
{ value: 14, label: "印度" }
];
useApi();
useToast();
const allSvcs = ref([]);
const pairs = ref([]);
const curRegion = ref(REGIONS.length ? REGIONS[0].value : 1);
const editorOpen = ref(false);
const editingPair = ref(null);
ref(0);
const ed = reactive({
src: "zh",
dst: "en",
bidir: false,
mode: 0,
asr: "",
mt: "",
tts: "",
ast: "",
enable: true
});
function svcsByCat(cat) {
return allSvcs.value.filter(
(s) => s.enable && (s.categories || "").split(",").map(Number).indexOf(cat) >= 0
);
}
function svcName(id) {
const s = allSvcs.value.find((x) => x.id === id);
return s ? s.name : id || "未配置";
}
const syncOpen = ref(false);
const syncDesc = ref("");
const syncTargets = ref([]);
const syncRegions = computed(() => REGIONS.filter((r) => r.value !== curRegion.value));
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(_attrs)} data-v-23837fd5><div class="flex items-center justify-between mb-5" data-v-23837fd5><div data-v-23837fd5><h2 class="text-lg font-semibold text-slate-800" data-v-23837fd5>通话翻译配置</h2><p class="text-xs text-slate-400 mt-1" data-v-23837fd5>按区域和语言对配置翻译服务。支持三段式(ASR→MT→TTS)和端到端 AST 两种模式。</p></div><div class="flex items-center gap-3" data-v-23837fd5><span class="text-sm text-slate-500" data-v-23837fd5>区域</span><select class="select select-bordered select-sm" data-v-23837fd5><!--[-->`);
ssrRenderList(REGIONS, (r) => {
_push(`<option${ssrRenderAttr("value", r.value)} data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(curRegion.value) ? ssrLooseContain(curRegion.value, r.value) : ssrLooseEqual(curRegion.value, r.value)) ? " selected" : ""}>${ssrInterpolate(r.label)}</option>`);
});
_push(`<!--]--></select><button class="btn btn-primary btn-sm text-white" data-v-23837fd5>+ 新增语言对</button></div></div><div class="editor-panel" style="${ssrRenderStyle(editorOpen.value ? null : { display: "none" })}" data-v-23837fd5><div class="flex items-center justify-between mb-4" data-v-23837fd5><h3 class="font-semibold text-slate-800 text-sm" data-v-23837fd5>${ssrInterpolate(editingPair.value ? "编辑语言对" : "新增语言对")}</h3><button class="btn btn-ghost btn-xs" data-v-23837fd5>✕ 关闭</button></div><div class="grid grid-cols-3 gap-4 mb-4" data-v-23837fd5><div class="form-control" data-v-23837fd5><label class="label py-1" data-v-23837fd5><span class="label-text text-xs" data-v-23837fd5>源语言 *</span></label><select class="select select-bordered select-sm" data-v-23837fd5><!--[-->`);
ssrRenderList(LANGS, (l) => {
_push(`<option${ssrRenderAttr("value", l.c)} data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(ed.src) ? ssrLooseContain(ed.src, l.c) : ssrLooseEqual(ed.src, l.c)) ? " selected" : ""}>${ssrInterpolate(l.n)}</option>`);
});
_push(`<!--]--></select></div><div class="form-control" data-v-23837fd5><label class="label py-1" data-v-23837fd5><span class="label-text text-xs" data-v-23837fd5>目标语言 *</span></label><select class="select select-bordered select-sm" data-v-23837fd5><!--[-->`);
ssrRenderList(LANGS, (l) => {
_push(`<option${ssrRenderAttr("value", l.c)} data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(ed.dst) ? ssrLooseContain(ed.dst, l.c) : ssrLooseEqual(ed.dst, l.c)) ? " selected" : ""}>${ssrInterpolate(l.n)}</option>`);
});
_push(`<!--]--></select></div><div class="form-control" data-v-23837fd5><label class="label py-1" data-v-23837fd5><span class="label-text text-xs" data-v-23837fd5>双向</span></label><input${ssrIncludeBooleanAttr(Array.isArray(ed.bidir) ? ssrLooseContain(ed.bidir, null) : ed.bidir) ? " checked" : ""} type="checkbox" class="toggle toggle-primary mt-1" data-v-23837fd5></div></div><div class="flex gap-3 mb-4" data-v-23837fd5><div class="${ssrRenderClass([{ on: ed.mode === 0 }, "mtab"])}" data-v-23837fd5><div data-v-23837fd5><div class="font-bold text-sm" data-v-23837fd5>🧩 三段式拼接</div><div class="text-xs text-slate-400 mt-0.5" data-v-23837fd5>ASR → MT → TTS</div></div></div><div class="${ssrRenderClass([{ on: ed.mode === 1 }, "mtab"])}" data-v-23837fd5><div data-v-23837fd5><div class="font-bold text-sm" data-v-23837fd5>⚡ 端到端 AST</div><div class="text-xs text-slate-400 mt-0.5" data-v-23837fd5>单服务直接完成语音翻译</div></div></div></div><div data-v-23837fd5>`);
if (ed.mode === 0) {
_push(`<div class="grid grid-cols-3 gap-4" data-v-23837fd5><div class="form-control" data-v-23837fd5><label class="label py-1" data-v-23837fd5><span class="label-text text-xs" data-v-23837fd5>语音识别(ASR)</span></label><select class="select select-bordered select-sm" data-v-23837fd5>`);
if (!svcsByCat(SCAT_STT).length) {
_push(`<option value="" data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(ed.asr) ? ssrLooseContain(ed.asr, "") : ssrLooseEqual(ed.asr, "")) ? " selected" : ""}>(无可用服务)</option>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(svcsByCat(SCAT_STT), (s) => {
_push(`<option${ssrRenderAttr("value", s.id)} data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(ed.asr) ? ssrLooseContain(ed.asr, s.id) : ssrLooseEqual(ed.asr, s.id)) ? " selected" : ""}>${ssrInterpolate(s.name)}</option>`);
});
_push(`<!--]--></select></div><div class="form-control" data-v-23837fd5><label class="label py-1" data-v-23837fd5><span class="label-text text-xs" data-v-23837fd5>机器翻译(MT)</span></label><select class="select select-bordered select-sm" data-v-23837fd5>`);
if (!svcsByCat(SCAT_MT).length) {
_push(`<option value="" data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(ed.mt) ? ssrLooseContain(ed.mt, "") : ssrLooseEqual(ed.mt, "")) ? " selected" : ""}>(无可用服务)</option>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(svcsByCat(SCAT_MT), (s) => {
_push(`<option${ssrRenderAttr("value", s.id)} data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(ed.mt) ? ssrLooseContain(ed.mt, s.id) : ssrLooseEqual(ed.mt, s.id)) ? " selected" : ""}>${ssrInterpolate(s.name)}</option>`);
});
_push(`<!--]--></select></div><div class="form-control" data-v-23837fd5><label class="label py-1" data-v-23837fd5><span class="label-text text-xs" data-v-23837fd5>语音合成(TTS)</span></label><select class="select select-bordered select-sm" data-v-23837fd5>`);
if (!svcsByCat(SCAT_TTS).length) {
_push(`<option value="" data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(ed.tts) ? ssrLooseContain(ed.tts, "") : ssrLooseEqual(ed.tts, "")) ? " selected" : ""}>(无可用服务)</option>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(svcsByCat(SCAT_TTS), (s) => {
_push(`<option${ssrRenderAttr("value", s.id)} data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(ed.tts) ? ssrLooseContain(ed.tts, s.id) : ssrLooseEqual(ed.tts, s.id)) ? " selected" : ""}>${ssrInterpolate(s.name)}</option>`);
});
_push(`<!--]--></select></div></div>`);
} else {
_push(`<div class="form-control max-w-xs" data-v-23837fd5><label class="label py-1" data-v-23837fd5><span class="label-text text-xs" data-v-23837fd5>端到端语音翻译服务(AST)</span></label><select class="select select-bordered select-sm" data-v-23837fd5>`);
if (!svcsByCat(SCAT_AST).length) {
_push(`<option value="" data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(ed.ast) ? ssrLooseContain(ed.ast, "") : ssrLooseEqual(ed.ast, "")) ? " selected" : ""}>(无可用服务)</option>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(svcsByCat(SCAT_AST), (s) => {
_push(`<option${ssrRenderAttr("value", s.id)} data-v-23837fd5${ssrIncludeBooleanAttr(Array.isArray(ed.ast) ? ssrLooseContain(ed.ast, s.id) : ssrLooseEqual(ed.ast, s.id)) ? " selected" : ""}>${ssrInterpolate(s.name)}</option>`);
});
_push(`<!--]--></select></div>`);
}
_push(`</div><div class="flex items-center justify-between pt-4 border-t border-slate-100 mt-4" data-v-23837fd5><label class="flex items-center gap-2 text-sm" data-v-23837fd5><input${ssrIncludeBooleanAttr(Array.isArray(ed.enable) ? ssrLooseContain(ed.enable, null) : ed.enable) ? " checked" : ""} type="checkbox" class="checkbox checkbox-sm checkbox-primary" data-v-23837fd5> 启用 </label><div class="flex gap-2" data-v-23837fd5><button class="btn btn-ghost btn-sm" data-v-23837fd5>取消</button><button class="btn btn-primary btn-sm text-white" data-v-23837fd5>保存</button></div></div></div><div class="grid grid-cols-1 gap-4" style="${ssrRenderStyle({ "grid-template-columns": "repeat(auto-fill,minmax(360px,1fr))" })}" data-v-23837fd5>`);
if (!pairs.value.length) {
_push(`<div class="col-span-full text-center py-20 text-slate-300" data-v-23837fd5><div class="text-5xl mb-3" data-v-23837fd5>🌐</div><p class="text-sm" data-v-23837fd5>当前区域暂无语言对配置</p></div>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(pairs.value, (p) => {
_push(`<div class="pair-card" data-v-23837fd5><div class="flex items-center justify-between" data-v-23837fd5><div class="flex items-center gap-2" data-v-23837fd5><span class="lang-badge" data-v-23837fd5>${ssrInterpolate(langName(p.src_lang))}</span><span class="text-slate-400 font-bold text-lg" data-v-23837fd5>${ssrInterpolate(p.bidir ? "⇄" : "→")}</span><span class="lang-badge" data-v-23837fd5>${ssrInterpolate(langName(p.dst_lang))}</span></div><div class="flex items-center gap-2" data-v-23837fd5>`);
if (p.mode === 0) {
_push(`<span class="mode-badge mode-pipeline" data-v-23837fd5>三段式拼接</span>`);
} else {
_push(`<span class="mode-badge mode-e2e" data-v-23837fd5>端到端 AST</span>`);
}
if (p.enable) {
_push(`<span class="badge badge-success badge-xs" data-v-23837fd5>启用</span>`);
} else {
_push(`<span class="badge badge-ghost badge-xs" data-v-23837fd5>停用</span>`);
}
_push(`<button class="btn btn-ghost btn-xs text-error" data-v-23837fd5>删除</button></div></div>`);
if (p.mode === 0) {
_push(`<div class="flex flex-wrap items-center gap-2 mt-3" data-v-23837fd5><span class="svc-pill" style="${ssrRenderStyle({ "background": "#1664ff" })}" data-v-23837fd5>ASR: ${ssrInterpolate(svcName(p.asr_svc_id))}</span><span class="text-slate-300 text-sm" data-v-23837fd5>→</span><span class="svc-pill" style="${ssrRenderStyle({ "background": "#059669" })}" data-v-23837fd5>MT: ${ssrInterpolate(svcName(p.mt_svc_id))}</span><span class="text-slate-300 text-sm" data-v-23837fd5>→</span><span class="svc-pill" style="${ssrRenderStyle({ "background": "#7c3aed" })}" data-v-23837fd5>TTS: ${ssrInterpolate(svcName(p.tts_svc_id))}</span></div>`);
} else {
_push(`<div class="flex items-center gap-2 mt-3" data-v-23837fd5><span class="svc-pill" style="${ssrRenderStyle({ "background": "#f97316" })}" data-v-23837fd5>AST: ${ssrInterpolate(svcName(p.ast_svc_id))}</span></div>`);
}
_push(`</div>`);
});
_push(`<!--]--></div><div class="sync-overlay" style="${ssrRenderStyle(syncOpen.value ? null : { display: "none" })}" data-v-23837fd5><div class="sync-box" data-v-23837fd5><div class="flex items-start gap-3 mb-4" data-v-23837fd5><div style="${ssrRenderStyle({ "width": "42px", "height": "42px", "background": "linear-gradient(135deg,#4f46e5,#7c3aed)", "border-radius": "13px", "display": "flex", "align-items": "center", "justify-content": "center", "flex-shrink": "0" })}" data-v-23837fd5><svg style="${ssrRenderStyle({ "width": "20px", "height": "20px", "color": "#fff" })}" fill="none" viewBox="0 0 24 24" stroke="currentColor" data-v-23837fd5><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" data-v-23837fd5></path></svg></div><div data-v-23837fd5><h3 class="text-base font-semibold text-slate-800" data-v-23837fd5>同步到其他区域</h3><p class="text-xs text-slate-400 mt-1" data-v-23837fd5>${ssrInterpolate(syncDesc.value)}</p></div></div><div class="text-xs px-3 py-2 rounded-lg mb-3" style="${ssrRenderStyle({ "background": "#f0fdf4", "border": "1px solid #bbf7d0", "color": "#15803d" })}" data-v-23837fd5> ✦ 同步内容:服务组合(模式 + 各段服务)将被复制到目标区域。 </div><div class="flex items-center justify-between mb-1" data-v-23837fd5><span class="text-xs font-semibold text-slate-500" data-v-23837fd5>选择目标区域</span><div class="flex gap-2" data-v-23837fd5><button class="btn btn-ghost btn-xs" data-v-23837fd5>全选</button><button class="btn btn-ghost btn-xs" data-v-23837fd5>清空</button></div></div><div class="sync-region-grid" data-v-23837fd5><!--[-->`);
ssrRenderList(syncRegions.value, (r) => {
_push(`<label class="${ssrRenderClass([{ checked: syncTargets.value.includes(r.value) }, "sync-region-item"])}" data-v-23837fd5><input type="checkbox" class="checkbox checkbox-xs checkbox-primary"${ssrIncludeBooleanAttr(syncTargets.value.includes(r.value)) ? " checked" : ""} data-v-23837fd5><span data-v-23837fd5>${ssrInterpolate(r.label)}</span></label>`);
});
_push(`<!--]--></div><p class="text-[11px] text-slate-400 mb-5" data-v-23837fd5>⚠ 目标区域相同语言对已存在则覆盖,否则新建。</p><div class="flex gap-3 justify-end" data-v-23837fd5><button class="btn btn-ghost" data-v-23837fd5>仅保存当前区域</button><button class="btn btn-primary text-white" data-v-23837fd5>保存并同步</button></div></div></div></div>`);
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/calltranslate.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const calltranslate = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-23837fd5"]]);
export { calltranslate as default };
//# sourceMappingURL=calltranslate-qCADGfI8.mjs.map

1
apps/admin/.output/server/chunks/build/calltranslate-qCADGfI8.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"calltranslate-qCADGfI8.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-qCADGfI8.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

8
apps/admin/.output/server/chunks/build/calltranslate-styles.DWMho6ro.mjs

@ -0,0 +1,8 @@
const calltranslate_vue_vue_type_style_index_0_scoped_23837fd5_lang = ".pair-card[data-v-23837fd5]{background:#fff;border:1px solid #eef2f7;border-radius:14px;padding:16px;cursor:pointer;transition:all .15s}.pair-card[data-v-23837fd5]:hover{border-color:#c7d2fe;box-shadow:0 4px 14px #6366f114}.lang-badge[data-v-23837fd5]{font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px;background:#eef2ff;color:#4338ca}.svc-pill[data-v-23837fd5]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:8px;color:#fff}.mode-badge[data-v-23837fd5]{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px}.mode-pipeline[data-v-23837fd5]{background:#dbeafe;color:#1e40af}.mode-e2e[data-v-23837fd5]{background:#fff7ed;color:#c2410c}.editor-panel[data-v-23837fd5]{background:#fff;border-radius:16px;border:1px solid #c7d2fe;box-shadow:0 8px 32px #6366f11a;padding:22px;margin-bottom:16px}.mtab[data-v-23837fd5]{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:all .15s;flex:1}.mtab.on[data-v-23837fd5]{border-color:#6366f1;background:linear-gradient(135deg,#eef2ff,#f5f3ff)}.sync-overlay[data-v-23837fd5]{position:fixed;inset:0;background:#0f172a73;z-index:100;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sync-box[data-v-23837fd5]{background:#fff;border-radius:20px;padding:28px;width:520px;max-width:95vw;box-shadow:0 24px 80px #0000002e}.sync-region-grid[data-v-23837fd5]{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.sync-region-item[data-v-23837fd5]{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;border:1.5px solid #e2e8f0;cursor:pointer;transition:all .15s;font-size:13px;font-weight:500;color:#475569}.sync-region-item[data-v-23837fd5]:hover{border-color:#c7d2fe;background:#f5f3ff}.sync-region-item.checked[data-v-23837fd5]{border-color:#6366f1;background:#eef2ff;color:#4338ca}";
const calltranslateStyles_DWMho6ro = [
calltranslate_vue_vue_type_style_index_0_scoped_23837fd5_lang
];
export { calltranslateStyles_DWMho6ro as default };
//# sourceMappingURL=calltranslate-styles.DWMho6ro.mjs.map

1
apps/admin/.output/server/chunks/build/calltranslate-styles.DWMho6ro.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"calltranslate-styles.DWMho6ro.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles-1.mjs-Dn-xJ4XY.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/calltranslate-styles.DWMho6ro.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}

4
apps/admin/.output/server/chunks/build/client.precomputed.mjs

File diff suppressed because one or more lines are too long

1
apps/admin/.output/server/chunks/build/client.precomputed.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"client.precomputed.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/client.precomputed.mjs"],"names":[],"mappings":"","x_google_ignoreList":[0]}

103
apps/admin/.output/server/chunks/build/code-Bi0p3nMD.mjs

@ -0,0 +1,103 @@
import { defineComponent, ref, reactive, mergeProps, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderStyle, ssrRenderAttr, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderList, ssrInterpolate } from 'vue/server-renderer';
import { u as useApi } from './useApi-B7CB0Cnn.mjs';
import { u as useToast } from './useToast-BwtTR9dH.mjs';
import './auth-QFkCoU1C.mjs';
import 'pinia';
import './server.mjs';
import '../nitro/nitro.mjs';
import 'node:http';
import 'node:https';
import 'node:events';
import 'node:buffer';
import 'node:fs';
import 'node:path';
import 'node:crypto';
import 'node:url';
import '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'perfect-debounce';
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "code",
__ssrInlineRender: true,
setup(__props) {
useApi();
useToast();
const view = ref("list");
const loading = ref(false);
const isEditing = ref(false);
const currentFactoryId = ref(0);
const filterStatus = ref(-1);
const codes = ref([]);
const factories = ref([]);
const allProducts = ref([]);
const factoryMap = reactive({});
const form = reactive({
code: "",
productid: 0,
remark: "",
bindrewardvpitime: 0,
bindrewardtranslate: 0,
bindrewardmeeting: 0,
maxuses: 0,
expire: "",
disabled: false
});
function formatTs(ts) {
if (!ts) return "永久";
return new Date(ts * 1e3).toLocaleString();
}
function facName(c) {
return factoryMap[c.factoryid] || (c.factoryid ? "厂家#" + c.factoryid : "-");
}
function prodName(c) {
const prod = allProducts.value.find((p) => p.id === c.productid);
return prod ? prod.devicename || "#" + c.productid : c.productid ? "#" + c.productid : "-";
}
ref(null);
ref(null);
const currentQrCode = ref("");
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "space-y-6" }, _attrs))}><div class="bg-white rounded-xl shadow-sm border border-slate-100 p-4"><div class="flex items-end gap-3 flex-wrap"><div class="form-control"><label class="label py-1"><span class="label-text text-xs">厂家</span></label><select class="select select-bordered select-sm" style="${ssrRenderStyle({ "min-width": "200px" })}"><option${ssrRenderAttr("value", 0)}${ssrIncludeBooleanAttr(Array.isArray(currentFactoryId.value) ? ssrLooseContain(currentFactoryId.value, 0) : ssrLooseEqual(currentFactoryId.value, 0)) ? " selected" : ""}>全部厂家</option><!--[-->`);
ssrRenderList(factories.value, (f) => {
_push(`<option${ssrRenderAttr("value", f.id)}${ssrIncludeBooleanAttr(Array.isArray(currentFactoryId.value) ? ssrLooseContain(currentFactoryId.value, f.id) : ssrLooseEqual(currentFactoryId.value, f.id)) ? " selected" : ""}>${ssrInterpolate(factoryMap[f.id])}</option>`);
});
_push(`<!--]--></select></div><div class="form-control"><label class="label py-1"><span class="label-text text-xs">状态</span></label><select class="select select-bordered select-sm"><option${ssrRenderAttr("value", -1)}${ssrIncludeBooleanAttr(Array.isArray(filterStatus.value) ? ssrLooseContain(filterStatus.value, -1) : ssrLooseEqual(filterStatus.value, -1)) ? " selected" : ""}>全部</option><option${ssrRenderAttr("value", 0)}${ssrIncludeBooleanAttr(Array.isArray(filterStatus.value) ? ssrLooseContain(filterStatus.value, 0) : ssrLooseEqual(filterStatus.value, 0)) ? " selected" : ""}>启用</option><option${ssrRenderAttr("value", 1)}${ssrIncludeBooleanAttr(Array.isArray(filterStatus.value) ? ssrLooseContain(filterStatus.value, 1) : ssrLooseEqual(filterStatus.value, 1)) ? " selected" : ""}>停用</option></select></div><button class="btn btn-primary btn-sm text-white" title="新增公码需先选择具体厂家"${ssrIncludeBooleanAttr(currentFactoryId.value === 0) ? " disabled" : ""}>+ 新增公码</button></div></div><div style="${ssrRenderStyle(view.value === "list" ? null : { display: "none" })}"><div class="bg-white rounded-xl shadow-sm border border-slate-100"><div class="overflow-x-auto"><table class="table table-zebra"><thead><tr><th>公码</th><th>厂家</th><th>关联产品</th><th>备注</th><th>VIP天/翻译分/会议分</th><th>核销/上限</th><th>失效时间</th><th>状态</th><th>操作</th></tr></thead><tbody>`);
if (loading.value) {
_push(`<tr><td colspan="9" class="text-center text-slate-400 py-8">加载中…</td></tr>`);
} else if (!codes.value.length) {
_push(`<tr><td colspan="9" class="text-center text-slate-400 py-8">${ssrInterpolate(currentFactoryId.value ? "暂无公码,点击右上角“新增公码”创建" : "暂无公码")}</td></tr>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(codes.value, (c) => {
_push(`<tr><td class="font-mono text-base font-bold text-indigo-700">${ssrInterpolate(c.code || "")}</td><td class="text-sm">${ssrInterpolate(facName(c))}</td><td class="text-sm">${ssrInterpolate(prodName(c))}</td><td class="text-sm text-slate-500">${ssrInterpolate(c.remark || "-")}</td><td class="text-sm">${ssrInterpolate(c.bindrewardvpitime || 0)} / ${ssrInterpolate(c.bindrewardtranslate || 0)} / ${ssrInterpolate(c.bindrewardmeeting || 0)}</td><td class="text-sm">${ssrInterpolate(c.useduses || 0)} / ${ssrInterpolate(c.maxuses ? c.maxuses : "∞")}</td><td class="text-sm">${ssrInterpolate(formatTs(c.expiretime))}</td><td>`);
if (c.status === 0) {
_push(`<span class="badge badge-success badge-sm text-white">启用</span>`);
} else {
_push(`<span class="badge badge-ghost badge-sm">停用</span>`);
}
_push(`</td><td><div class="flex gap-1"><button class="btn btn-ghost btn-xs text-indigo-600">二维码</button><button class="btn btn-ghost btn-xs">编辑</button><button class="btn btn-ghost btn-xs text-amber-600">${ssrInterpolate(c.status === 0 ? "停用" : "启用")}</button><button class="btn btn-ghost btn-xs text-red-500">删除</button></div></td></tr>`);
});
_push(`<!--]--></tbody></table></div></div></div><div style="${ssrRenderStyle(view.value === "form" ? null : { display: "none" })}"><div class="flex items-center gap-3 mb-5"><button class="btn btn-ghost btn-sm">← 返回公码列表</button><h2 class="text-lg font-semibold text-slate-800">${ssrInterpolate(isEditing.value ? `编辑公码 ${form.code}` : "新增公码")}</h2></div><div class="bg-white rounded-xl shadow-sm border border-slate-100 p-6 max-w-2xl"><form><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">关联产品(选填,仅作分类)</span></label><select class="select select-bordered w-full"><option${ssrRenderAttr("value", 0)}${ssrIncludeBooleanAttr(Array.isArray(form.productid) ? ssrLooseContain(form.productid, 0) : ssrLooseEqual(form.productid, 0)) ? " selected" : ""}>不关联</option><!--[-->`);
ssrRenderList(allProducts.value, (p) => {
_push(`<option${ssrRenderAttr("value", p.id)}${ssrIncludeBooleanAttr(Array.isArray(form.productid) ? ssrLooseContain(form.productid, p.id) : ssrLooseEqual(form.productid, p.id)) ? " selected" : ""}>${ssrInterpolate(p.devicename || "#" + p.id)}</option>`);
});
_push(`<!--]--></select></div><div class="form-control mb-4"><label class="label"><span class="label-text font-medium">备注</span></label><input${ssrRenderAttr("value", form.remark)} type="text" class="input input-bordered w-full" placeholder="例如:包装海报-2026春季"></div><div class="grid grid-cols-3 gap-3 mb-4"><div class="form-control"><label class="label"><span class="label-text font-medium">奖励VIP天数</span></label><input${ssrRenderAttr("value", form.bindrewardvpitime)} type="number" min="0" class="input input-bordered"></div><div class="form-control"><label class="label"><span class="label-text font-medium">奖励翻译分钟</span></label><input${ssrRenderAttr("value", form.bindrewardtranslate)} type="number" min="0" class="input input-bordered"></div><div class="form-control"><label class="label"><span class="label-text font-medium">奖励会议分钟</span></label><input${ssrRenderAttr("value", form.bindrewardmeeting)} type="number" min="0" class="input input-bordered"></div></div><div class="grid grid-cols-2 gap-3 mb-4"><div class="form-control"><label class="label"><span class="label-text font-medium">最大核销人数(0=不限)</span></label><input${ssrRenderAttr("value", form.maxuses)} type="number" min="0" class="input input-bordered"></div><div class="form-control"><label class="label"><span class="label-text font-medium">失效时间(留空=永久)</span></label><input${ssrRenderAttr("value", form.expire)} type="datetime-local" class="input input-bordered"></div></div><div class="form-control mb-6" style="${ssrRenderStyle(isEditing.value ? null : { display: "none" })}"><label class="label cursor-pointer justify-start gap-3"><input${ssrIncludeBooleanAttr(Array.isArray(form.disabled) ? ssrLooseContain(form.disabled, null) : form.disabled) ? " checked" : ""} type="checkbox" class="checkbox"><span class="label-text font-medium">停用</span></label></div><div class="flex gap-3"><button type="button" class="btn btn-ghost">取消</button><button type="submit" class="btn btn-primary text-white">保存</button></div></form></div></div><dialog class="modal"><div class="modal-box max-w-md"><h3 class="font-bold text-lg mb-4 text-slate-800">公码二维码</h3><div class="flex flex-col items-center gap-4"><div class="p-3 bg-white border border-slate-200 rounded-lg"></div><div class="text-center"><div class="text-xs text-slate-500 mb-1">公码</div><div class="font-mono text-2xl font-bold text-indigo-700 tracking-widest">${ssrInterpolate(currentQrCode.value)}</div></div><div class="text-xs text-slate-400 text-center"> 新用户使用 App 扫描即可领取奖励,每人仅可领取 1 次 </div></div><div class="modal-action"><button type="button" class="btn btn-outline btn-sm">下载图片</button><button type="button" class="btn btn-outline btn-sm">打印</button><form method="dialog"><button class="btn btn-sm">关闭</button></form></div></div><form method="dialog" class="modal-backdrop"><button>close</button></form></dialog></div>`);
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/code.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=code-Bi0p3nMD.mjs.map

1
apps/admin/.output/server/chunks/build/code-Bi0p3nMD.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"code-Bi0p3nMD.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/code-Bi0p3nMD.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

23
apps/admin/.output/server/chunks/build/composables-BWlosoMG.mjs

@ -0,0 +1,23 @@
import { hasInjectionContext, inject } from 'vue';
import { u as useNuxtApp } from './server.mjs';
import { u as useHead$1, h as headSymbol } from '../routes/renderer.mjs';
function injectHead(nuxtApp) {
const nuxt = nuxtApp || useNuxtApp();
return nuxt.ssrContext?.head || nuxt.runWithContext(() => {
if (hasInjectionContext()) {
const head = inject(headSymbol);
if (!head) {
throw new Error("[nuxt] [unhead] Missing Unhead instance.");
}
return head;
}
});
}
function useHead(input, options = {}) {
const head = options.head || injectHead(options.nuxt);
return useHead$1(input, { head, ...options });
}
export { useHead as u };
//# sourceMappingURL=composables-BWlosoMG.mjs.map

1
apps/admin/.output/server/chunks/build/composables-BWlosoMG.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"composables-BWlosoMG.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/composables-BWlosoMG.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

267
apps/admin/.output/server/chunks/build/dashboard-ClL32CVK.mjs

@ -0,0 +1,267 @@
import { defineComponent, computed, reactive, ref, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrIncludeBooleanAttr, ssrLooseContain, ssrLooseEqual, ssrRenderList, ssrRenderAttr, ssrInterpolate, ssrRenderStyle, ssrRenderClass } from 'vue/server-renderer';
import { u as useAuthStore } from './auth-QFkCoU1C.mjs';
import { u as useApi } from './useApi-B7CB0Cnn.mjs';
import { _ as _export_sfc } from './server.mjs';
import 'pinia';
import '../nitro/nitro.mjs';
import 'node:http';
import 'node:https';
import 'node:events';
import 'node:buffer';
import 'node:fs';
import 'node:path';
import 'node:crypto';
import 'node:url';
import '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'perfect-debounce';
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "dashboard",
__ssrInlineRender: true,
setup(__props) {
const auth = useAuthStore();
useApi();
const REGIONS = [
["cn", "中国"],
["us", "美国"],
["ea", "东亚"],
["sea", "东南亚"],
["sa", "南亚"],
["me", "中东"],
["eu", "欧洲"],
["ru", "俄罗斯"],
["af", "非洲"],
["sam", "南美"],
["nam", "北美"],
["oc", "大洋洲"],
["br", "巴西"],
["in", "印度"]
];
const CARD_STYLE = {
new_user_count: ["👥", "#EEF2FF", "#6366F1"],
active_user_count: ["🟢", "#ECFDF5", "#10B981"],
bind_device_count: ["📱", "#E0F2FE", "#0EA5E9"],
qr_active_count: ["🔳", "#FCE7F3", "#EC4899"],
order_paid_count: ["🧾", "#FEF3C7", "#F59E0B"],
order_paid_amount: ["💰", "#FEE2E2", "#EF4444"],
pay_user_count: ["⭐", "#FFF7ED", "#F97316"],
meet_second: ["🎙️", "#CFFAFE", "#22D3EE"],
trade_second: ["🌐", "#F3E8FF", "#8B5CF6"]
};
const GLOBAL_CARDS_ALL = [
["new_user_count", "累计用户", false],
["bind_device_count", "累计绑定设备", false],
["qr_active_count", "累计二维码激活", false],
["order_paid_count", "累计支付订单", false],
["order_paid_amount", "累计支付金额", true],
["meet_second", "累计会议时长", false],
["trade_second", "累计翻译时长", false]
];
const TODAY_CARDS_ALL = [
["new_user_count", "新增用户", false],
["active_user_count", "活跃用户", false],
["qr_active_count", "二维码激活", false],
["order_paid_count", "支付订单", false],
["order_paid_amount", "支付金额", true],
["pay_user_count", "付费用户", false],
["meet_second", "会议时长", false, true],
["trade_second", "翻译时长", false, true]
];
const PANELS_ALL = [
{
key: "user",
title: "用户增长",
color: "#6366F1",
tint: "#EEF2FF",
icon: "M17 20h5v-2a4 4 0 00-3-3.87M9 20H4v-2a4 4 0 013-3.87m6-1.13a4 4 0 10-4-4 4 4 0 004 4z",
stats: [["new_user_count", "新增用户"], ["active_user_count", "活跃用户"], ["login_user_count", "登录用户"], ["login_count", "登录次数"]],
lines: [["new_user_count", "新增用户", "#6366F1"], ["active_user_count", "活跃用户", "#34D399"]]
},
{
key: "device",
title: "设备激活绑定",
color: "#0EA5E9",
tint: "#E0F2FE",
icon: "M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z",
stats: [["active_device_count", "已激活"], ["bind_device_count", "已绑定"]],
lines: [["active_device_count", "已激活", "#0EA5E9"], ["bind_device_count", "已绑定", "#818CF8"]]
},
{
key: "qrcode",
title: "二维码激活",
color: "#EC4899",
tint: "#FCE7F3",
icon: "M12 4v1m6 11h2m-6 0h-1v4m-6-4H5m14 0h-2m-6-7H5m0 0V5m0 4v6m14-6V5h-4M5 5h4M5 19h4m6 0h4v-4M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6z",
stats: [["qr_active_count", "二维码激活次数"]],
lines: [["qr_active_count", "二维码激活", "#EC4899"]]
},
{
key: "order",
title: "订单支付",
color: "#F59E0B",
tint: "#FEF3C7",
icon: "M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z",
stats: [["order_create_count", "创建订单"], ["order_paid_count", "支付订单"], ["order_failed_count", "失败订单"], ["pay_user_count", "付费用户"], ["order_paid_amount", "支付金额", true], ["order_create_amount", "创建金额", true]],
lines: [["order_paid_count", "支付订单", "#F59E0B"], ["order_create_count", "创建订单", "#FCD34D"]]
},
{
key: "meeting",
title: "会议",
color: "#22D3EE",
tint: "#CFFAFE",
icon: "M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z",
stats: [["meet_count", "会议次数"], ["meet_second", "会议时长", false, true], ["grant_meet_second", "发放会议时长", false, true]],
lines: [["meet_count", "会议次数", "#22D3EE"], ["meet_second", "会议时长(秒)", "#0EA5E9"]]
},
{
key: "translate",
title: "翻译",
color: "#8B5CF6",
tint: "#F3E8FF",
icon: "M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129",
stats: [["trade_count", "翻译次数"], ["trade_second", "翻译时长", false, true], ["trade_words", "翻译字数"], ["grant_trade_second", "发放翻译时长", false, true]],
lines: [["trade_count", "翻译次数", "#8B5CF6"], ["trade_second", "翻译时长(秒)", "#A78BFA"]]
}
];
const IS_AGENT = computed(() => auth.identity === 3);
computed(() => auth.apps);
const BOUND_REGIONS = computed(() => auth.regions);
computed(() => auth.products.map((p) => parseInt(p)).filter((n) => !isNaN(n)));
const HIDE_FOR_AGENT = ["new_user_count", "active_user_count", "qr_active_count"];
const globalCards = computed(() => IS_AGENT.value ? GLOBAL_CARDS_ALL.filter((c) => !HIDE_FOR_AGENT.includes(c[0])) : GLOBAL_CARDS_ALL);
const todayCards = computed(() => IS_AGENT.value ? TODAY_CARDS_ALL.filter((c) => !HIDE_FOR_AGENT.includes(c[0])) : TODAY_CARDS_ALL);
const panels = computed(() => IS_AGENT.value ? PANELS_ALL.filter((p) => p.key !== "user" && p.key !== "qrcode") : PANELS_ALL);
const rangeBtns = [[7, "7天"], [30, "30天"], [90, "90天"], [0, "全部"]];
const filters = reactive({ app: "", region: "", product: "" });
const appOptions = ref([]);
const productOptions = ref([]);
const regionOptions = computed(() => {
if (IS_AGENT.value && BOUND_REGIONS.value.length) {
return REGIONS.filter((r) => BOUND_REGIONS.value.includes(r[0])).map((r) => ({ value: r[0], label: r[1] }));
}
return REGIONS.map((r) => ({ value: r[0], label: r[1] }));
});
const globalData = ref({});
const deviceData = ref({});
const todayData = ref({});
const yestData = ref({});
const todayTag = ref("实时");
const panelStats = ref({});
const panelDays = reactive({});
PANELS_ALL.forEach((p) => {
panelDays[p.key] = 30;
});
function fmt(n, isAmount) {
n = Number(n) || 0;
return isAmount ? "¥" + (n / 100).toLocaleString(void 0, { minimumFractionDigits: 2, maximumFractionDigits: 2 }) : n.toLocaleString();
}
function fmtSecs(sec) {
sec = Math.max(0, Math.floor(Number(sec) || 0));
const h = Math.floor(sec / 3600), m = Math.floor(sec % 3600 / 60), s = sec % 60;
if (h > 0) return h + "时" + m + "分";
if (m > 0) return m + "分" + s + "秒";
return s + "秒";
}
function fmtStat(v, isAmount, isSecs) {
if (isSecs) return fmtSecs(v);
return fmt(v, isAmount);
}
function pctDelta(cur, prev) {
cur = Number(cur) || 0;
prev = Number(prev) || 0;
if (prev === 0) return cur > 0 ? null : 0;
return (cur - prev) / prev * 100;
}
function cardStyle(field) {
return CARD_STYLE[field] || ["📊", "#f1f5f9", "#94a3b8"];
}
function globalVal(c) {
const src = c[0] === "bind_device_count" || c[0] === "active_device_count" ? deviceData.value : globalData.value;
const isSecs = c[0] === "meet_second" || c[0] === "trade_second";
return fmtStat(src[c[0]], c[2], isSecs);
}
function todayVal(c) {
return fmtStat(todayData.value[c[0]], c[2], !!c[3]);
}
function todayDelta(c) {
const pct = pctDelta(todayData.value[c[0]], yestData.value[c[0]]);
if (pct === null) return { type: "new", arrow: "", abs: "" };
const type = pct > 0 ? "up" : pct < 0 ? "down" : "flat";
const arrow = pct > 0 ? "▲" : pct < 0 ? "▼" : "—";
return { type, arrow, abs: Math.abs(pct).toFixed(1) };
}
function panelStatVal(p, s) {
return fmtStat((panelStats.value[p.key] || {})[s[0]], s[2], s[3]);
}
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(_attrs)} data-v-d169bdaa><div class="panel p-4 mb-5" data-v-d169bdaa><div class="flex flex-wrap items-end gap-3" data-v-d169bdaa><div class="form-control" data-v-d169bdaa><label class="label py-1" data-v-d169bdaa><span class="label-text text-xs text-slate-500" data-v-d169bdaa>应用</span></label><select class="select select-bordered select-sm w-40" data-v-d169bdaa><option value="" data-v-d169bdaa${ssrIncludeBooleanAttr(Array.isArray(filters.app) ? ssrLooseContain(filters.app, "") : ssrLooseEqual(filters.app, "")) ? " selected" : ""}>全部应用</option><!--[-->`);
ssrRenderList(appOptions.value, (a) => {
_push(`<option${ssrRenderAttr("value", a.value)} data-v-d169bdaa${ssrIncludeBooleanAttr(Array.isArray(filters.app) ? ssrLooseContain(filters.app, a.value) : ssrLooseEqual(filters.app, a.value)) ? " selected" : ""}>${ssrInterpolate(a.label)}</option>`);
});
_push(`<!--]--></select></div><div class="form-control" data-v-d169bdaa><label class="label py-1" data-v-d169bdaa><span class="label-text text-xs text-slate-500" data-v-d169bdaa>区域</span></label><select class="select select-bordered select-sm w-32" data-v-d169bdaa><option value="" data-v-d169bdaa${ssrIncludeBooleanAttr(Array.isArray(filters.region) ? ssrLooseContain(filters.region, "") : ssrLooseEqual(filters.region, "")) ? " selected" : ""}>全部区域</option><!--[-->`);
ssrRenderList(regionOptions.value, (r) => {
_push(`<option${ssrRenderAttr("value", r.value)} data-v-d169bdaa${ssrIncludeBooleanAttr(Array.isArray(filters.region) ? ssrLooseContain(filters.region, r.value) : ssrLooseEqual(filters.region, r.value)) ? " selected" : ""}>${ssrInterpolate(r.label)}</option>`);
});
_push(`<!--]--></select></div><div class="form-control" data-v-d169bdaa><label class="label py-1" data-v-d169bdaa><span class="label-text text-xs text-slate-500" data-v-d169bdaa>产品</span></label><select class="select select-bordered select-sm w-48" data-v-d169bdaa><option value="" data-v-d169bdaa${ssrIncludeBooleanAttr(Array.isArray(filters.product) ? ssrLooseContain(filters.product, "") : ssrLooseEqual(filters.product, "")) ? " selected" : ""}>全部产品</option><!--[-->`);
ssrRenderList(productOptions.value, (p) => {
_push(`<option${ssrRenderAttr("value", p.value)} data-v-d169bdaa${ssrIncludeBooleanAttr(Array.isArray(filters.product) ? ssrLooseContain(filters.product, p.value) : ssrLooseEqual(filters.product, p.value)) ? " selected" : ""}>${ssrInterpolate(p.label)}</option>`);
});
_push(`<!--]--></select></div><button class="btn btn-primary btn-sm text-white" data-v-d169bdaa>查询</button><span class="text-xs text-slate-400 ml-auto self-center" data-v-d169bdaa>顶部为全量总览;各版面右上角可单独选时间周期</span></div></div><div class="sec-title muted" data-v-d169bdaa><span class="bar" style="${ssrRenderStyle({ "background": "#cbd5e1" })}" data-v-d169bdaa></span><h2 data-v-d169bdaa>累计数据</h2><span class="sub" data-v-d169bdaa>全量累计 · 随筛选条件变化</span></div><div class="grid grid-cols-2 md:grid-cols-4 gap-3 mb-8" data-v-d169bdaa><!--[-->`);
ssrRenderList(globalCards.value, (c) => {
_push(`<div class="cum-card" data-v-d169bdaa><span class="ico" style="${ssrRenderStyle({ background: cardStyle(c[0])[1] })}" data-v-d169bdaa>${ssrInterpolate(cardStyle(c[0])[0])}</span><div class="body" data-v-d169bdaa><div class="lbl" data-v-d169bdaa>${ssrInterpolate(c[1])}</div><div class="val" data-v-d169bdaa>${ssrInterpolate(globalVal(c))}</div></div></div>`);
});
_push(`<!--]--></div><div class="today-wrap mb-8" data-v-d169bdaa><div class="sec-title hero" style="${ssrRenderStyle({ "margin-bottom": "16px" })}" data-v-d169bdaa><span class="bar" style="${ssrRenderStyle({ "background": "linear-gradient(180deg,#0EA5E9,#22D3EE)" })}" data-v-d169bdaa></span><h2 data-v-d169bdaa>今日数据</h2><span class="tag" style="${ssrRenderStyle({ "color": "#0369a1", "background": "#dbeafe" })}" data-v-d169bdaa>${ssrInterpolate(todayTag.value)}</span><span class="sub" data-v-d169bdaa>今日 0 点至现在 · 含较昨日同比(设备类无日期维度,仅见累计)</span></div><div class="grid grid-cols-2 md:grid-cols-4 gap-4" data-v-d169bdaa><!--[-->`);
ssrRenderList(todayCards.value, (c) => {
_push(`<div class="today-card" data-v-d169bdaa><span class="accent" style="${ssrRenderStyle({ background: cardStyle(c[0])[2] })}" data-v-d169bdaa></span><div class="today-card-top" data-v-d169bdaa><span class="lbl" data-v-d169bdaa>${ssrInterpolate(c[1])}</span><span class="ico" style="${ssrRenderStyle({ background: cardStyle(c[0])[1] })}" data-v-d169bdaa>${ssrInterpolate(cardStyle(c[0])[0])}</span></div><div class="val" data-v-d169bdaa>${ssrInterpolate(todayVal(c))}</div><div class="foot" data-v-d169bdaa>`);
if (todayDelta(c).type === "new") {
_push(`<span class="delta up" data-v-d169bdaa>新</span>`);
} else if (todayDelta(c).type !== "none") {
_push(`<span class="${ssrRenderClass([todayDelta(c).type, "delta"])}" data-v-d169bdaa>${ssrInterpolate(todayDelta(c).arrow)} ${ssrInterpolate(todayDelta(c).abs)}%</span>`);
} else {
_push(`<!---->`);
}
_push(`<span data-v-d169bdaa>较昨日</span></div></div>`);
});
_push(`<!--]--></div></div><div class="sec-title" data-v-d169bdaa><span class="bar" style="${ssrRenderStyle({ "background": "linear-gradient(180deg,#10B981,#22D3EE)" })}" data-v-d169bdaa></span><h2 data-v-d169bdaa>趋势分析</h2><span class="sub" data-v-d169bdaa>各版面右上角可独立选择时间周期</span></div><div class="grid grid-cols-1 xl:grid-cols-2 gap-6" data-v-d169bdaa><!--[-->`);
ssrRenderList(panels.value, (p) => {
_push(`<div class="panel" data-v-d169bdaa><div class="panel-head" data-v-d169bdaa><span class="panel-dot" style="${ssrRenderStyle({ background: p.tint })}" data-v-d169bdaa><svg width="17" height="17" fill="none" viewBox="0 0 24 24"${ssrRenderAttr("stroke", p.color)} data-v-d169bdaa><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"${ssrRenderAttr("d", p.icon)} data-v-d169bdaa></path></svg></span><span class="font-semibold text-slate-700 text-sm" data-v-d169bdaa>${ssrInterpolate(p.title)}</span>`);
if (p.key === "device") {
_push(`<span class="ml-auto text-xs text-slate-400" data-v-d169bdaa>当前累计 · 无日期维度</span>`);
} else {
_push(`<div class="ml-auto flex items-center gap-1" data-v-d169bdaa><!--[-->`);
ssrRenderList(rangeBtns, (d) => {
_push(`<button class="${ssrRenderClass([{ "tbtn-on": d[0] === panelDays[p.key] }, "tbtn"])}" data-v-d169bdaa>${ssrInterpolate(d[1])}</button>`);
});
_push(`<!--]--></div>`);
}
_push(`</div><div class="px-5 py-4" data-v-d169bdaa><div class="grid grid-cols-2 sm:grid-cols-3 gap-2.5" data-v-d169bdaa><!--[-->`);
ssrRenderList(p.stats, (s) => {
_push(`<div class="stat-box" data-v-d169bdaa><div class="stat-label" data-v-d169bdaa>${ssrInterpolate(s[1])}</div><div class="stat-val" data-v-d169bdaa>${ssrInterpolate(panelStatVal(p, s))}</div></div>`);
});
_push(`<!--]--></div>`);
if (p.key !== "device") {
_push(`<div style="${ssrRenderStyle({ "height": "170px", "margin-top": "1rem" })}" data-v-d169bdaa><canvas data-v-d169bdaa></canvas></div>`);
} else {
_push(`<!---->`);
}
_push(`</div></div>`);
});
_push(`<!--]--></div></div>`);
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/dashboard.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
const dashboard = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-d169bdaa"]]);
export { dashboard as default };
//# sourceMappingURL=dashboard-ClL32CVK.mjs.map

1
apps/admin/.output/server/chunks/build/dashboard-ClL32CVK.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"dashboard-ClL32CVK.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-ClL32CVK.js"],"names":[],"mappings":"","x_google_ignoreList":[0]}

8
apps/admin/.output/server/chunks/build/dashboard-styles.YHe4qmhV.mjs

@ -0,0 +1,8 @@
const dashboard_vue_vue_type_style_index_0_scoped_d169bdaa_lang = ".panel[data-v-d169bdaa]{background:#fff;border:1px solid #f1f5f9;border-radius:16px;box-shadow:0 1px 2px #0000000a;overflow:hidden}.panel-head[data-v-d169bdaa]{padding:12px 18px;gap:10px;border-bottom:1px solid #f8fafc;flex-wrap:wrap}.panel-dot[data-v-d169bdaa],.panel-head[data-v-d169bdaa]{display:flex;align-items:center}.panel-dot[data-v-d169bdaa]{width:30px;height:30px;border-radius:9px;justify-content:center;flex-shrink:0}.stat-box[data-v-d169bdaa]{padding:10px 12px;border-radius:10px;background:#fafbfc}.stat-label[data-v-d169bdaa]{font-size:11px;color:#94a3b8;margin-bottom:3px}.stat-val[data-v-d169bdaa]{font-size:20px;font-weight:700;color:#1e293b;line-height:1.1;letter-spacing:-.02em}.sec-title[data-v-d169bdaa]{display:flex;align-items:center;gap:10px;margin:0 0 14px}.sec-title .bar[data-v-d169bdaa]{width:4px;height:18px;border-radius:3px}.sec-title h2[data-v-d169bdaa]{font-size:15px;font-weight:700;color:#0f172a;letter-spacing:-.01em}.sec-title .sub[data-v-d169bdaa]{font-size:12px;color:#94a3b8}.sec-title .tag[data-v-d169bdaa]{font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px}.sec-title.muted .bar[data-v-d169bdaa]{height:14px;opacity:.6}.sec-title.muted h2[data-v-d169bdaa]{font-size:13px;font-weight:600;color:#94a3b8}.sec-title.hero .bar[data-v-d169bdaa]{width:5px;height:22px}.sec-title.hero h2[data-v-d169bdaa]{font-size:18px;font-weight:800;color:#0f172a}.cum-card[data-v-d169bdaa]{gap:11px;background:#f8fafc;border:1px solid #eef2f7;border-radius:12px;padding:10px 13px}.cum-card[data-v-d169bdaa],.cum-card .ico[data-v-d169bdaa]{display:flex;align-items:center}.cum-card .ico[data-v-d169bdaa]{width:30px;height:30px;border-radius:9px;justify-content:center;flex-shrink:0;font-size:14px;filter:saturate(.65);opacity:.85}.cum-card .body[data-v-d169bdaa]{min-width:0}.cum-card .lbl[data-v-d169bdaa]{font-size:11.5px;color:#94a3b8;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cum-card .val[data-v-d169bdaa]{font-size:17px;font-weight:700;color:#64748b;line-height:1.3;letter-spacing:-.01em;margin-top:1px}.today-wrap[data-v-d169bdaa]{background:linear-gradient(180deg,#e8f1ff,#f5f9ff);border:1px solid #d6e4ff;border-radius:22px;padding:20px;box-shadow:0 1px 3px #0d6efd0d}.today-card[data-v-d169bdaa]{position:relative;background:#fff;border:1px solid #e6eefb;border-radius:18px;padding:17px 19px;box-shadow:0 6px 18px #0d6efd14;transition:transform .18s ease,box-shadow .18s ease;overflow:hidden}.today-card[data-v-d169bdaa]:hover{transform:translateY(-3px);box-shadow:0 14px 32px #0d6efd26}.today-card .accent[data-v-d169bdaa]{position:absolute;left:0;top:0;bottom:0;width:5px}.today-card-top[data-v-d169bdaa]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.today-card .lbl[data-v-d169bdaa]{font-size:13px;color:#475569;font-weight:600}.today-card .ico[data-v-d169bdaa]{width:42px;height:42px;border-radius:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px}.today-card .val[data-v-d169bdaa]{font-size:31px;font-weight:800;color:#0f172a;line-height:1.05;letter-spacing:-.02em}.today-card .foot[data-v-d169bdaa]{margin-top:9px;font-size:12px;color:#94a3b8;display:flex;align-items:center;gap:6px}.delta[data-v-d169bdaa]{display:inline-flex;align-items:center;gap:2px;font-weight:700;padding:2px 7px;border-radius:7px;font-size:11.5px}.delta.up[data-v-d169bdaa]{color:#059669;background:#ecfdf5}.delta.down[data-v-d169bdaa]{color:#dc2626;background:#fef2f2}.delta.flat[data-v-d169bdaa],.tbtn[data-v-d169bdaa]{color:#64748b;background:#f1f5f9}.tbtn[data-v-d169bdaa]{font-size:11px;padding:3px 9px;border-radius:7px;line-height:1.4}.tbtn[data-v-d169bdaa]:hover{background:#e2e8f0}.tbtn-on[data-v-d169bdaa]{background:#1e293b;color:#fff}";
const dashboardStyles_YHe4qmhV = [
dashboard_vue_vue_type_style_index_0_scoped_d169bdaa_lang
];
export { dashboardStyles_YHe4qmhV as default };
//# sourceMappingURL=dashboard-styles.YHe4qmhV.mjs.map

1
apps/admin/.output/server/chunks/build/dashboard-styles.YHe4qmhV.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"dashboard-styles.YHe4qmhV.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles-1.mjs-BJ6WqDaB.js","../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/dashboard-styles.YHe4qmhV.mjs"],"names":["style_0"],"mappings":"","x_google_ignoreList":[0,1]}

196
apps/admin/.output/server/chunks/build/default-CKIkgZOu.mjs

@ -0,0 +1,196 @@
import { _ as __nuxt_component_0 } from './nuxt-link-BpF9-8DI.mjs';
import { defineComponent, computed, mergeProps, unref, withCtx, openBlock, createBlock, createVNode, createTextVNode, toDisplayString, useSSRContext } from 'vue';
import { ssrRenderAttrs, ssrRenderStyle, ssrInterpolate, ssrRenderList, ssrRenderComponent, ssrRenderAttr, ssrRenderSlot, ssrRenderClass } from 'vue/server-renderer';
import { u as useToast } from './useToast-BwtTR9dH.mjs';
import { u as useAuthStore } from './auth-QFkCoU1C.mjs';
import { a as useRouter, b as useRoute$1 } from './server.mjs';
import '../nitro/nitro.mjs';
import 'node:http';
import 'node:https';
import 'node:events';
import 'node:buffer';
import 'node:fs';
import 'node:path';
import 'node:crypto';
import 'node:url';
import 'pinia';
import '../routes/renderer.mjs';
import 'vue-bundle-renderer/runtime';
import 'unhead/server';
import 'devalue';
import 'unhead/utils';
import 'perfect-debounce';
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
__name: "AppToast",
__ssrInlineRender: true,
setup(__props) {
const { toasts } = useToast();
function alertClass(type) {
switch (type) {
case "success":
return "alert-success";
case "error":
return "alert-error";
case "warning":
return "alert-warning";
case "info":
default:
return "alert-info";
}
}
return (_ctx, _push, _parent, _attrs) => {
_push(`<div${ssrRenderAttrs(mergeProps({ class: "toast toast-bottom toast-end z-50" }, _attrs))}><!--[-->`);
ssrRenderList(unref(toasts), (t) => {
_push(`<div class="${ssrRenderClass(["alert", alertClass(t.type)])}"><span>${ssrInterpolate(t.msg)}</span></div>`);
});
_push(`<!--]--></div>`);
};
}
});
const _sfc_setup$1 = _sfc_main$1.setup;
_sfc_main$1.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/AppToast.vue");
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
};
const __nuxt_component_1 = Object.assign(_sfc_main$1, { __name: "AppToast" });
const _sfc_main = /* @__PURE__ */ defineComponent({
__name: "default",
__ssrInlineRender: true,
setup(__props) {
const auth = useAuthStore();
useRouter();
const route = useRoute$1();
const identityLabel = computed(() => {
const map = { 1: "超级管理员", 2: "管理员", 3: "代理", 4: "运营" };
return map[auth.identity] ?? "";
});
const identityLabelShort = computed(() => {
const map = { 1: "超管", 2: "管理员", 3: "代理", 4: "运营" };
return map[auth.identity] ?? "";
});
const avatarChar = computed(() => (auth.account || "A").charAt(0).toUpperCase());
const menuGroups = [
{
label: "数据概览",
items: [
{ id: "dashboard", label: "仪表盘", to: "/dashboard", icon: "M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" }
]
},
{
label: "生产管理",
items: [
{ id: "factory", label: "厂家管理", to: "/factory", icon: "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" },
{ id: "product", label: "产品管理", to: "/product", icon: "M20 7l-8-4-8 4m16 0l-8 4m8-4v10l-8 4m0-10L4 7m8 4v10M4 7v10l8 4" },
{ id: "code", label: "公码管理", to: "/code", icon: "M4 4h6v6H4V4zm10 0h6v6h-6V4zM4 14h6v6H4v-6zm10 2h2m-2 4h6m-4-4v4m4-8h2m-2 0v4" },
{ id: "device", label: "生产管理", to: "/device", icon: "M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z" }
]
},
{
label: "用户管理",
items: [
{ id: "user", label: "用户查询", to: "/users", icon: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" }
]
},
{
label: "服务配置",
items: [
{ id: "globalconfig", label: "全局环境配置", to: "/globalconfig", icon: "M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9a9 9 0 01-9-9m9 9c1.657 0 3-4.03 3-9s-1.343-9-3-9m0 18c-1.657 0-3-4.03-3-9s1.343-9 3-9m-9 9a9 9 0 019-9" },
{ id: "mcpconfig", label: "MCP配置", to: "/mcpconfig", icon: "M5 12h14M5 12a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v4a2 2 0 01-2 2M5 12a2 2 0 00-2 2v4a2 2 0 002 2h14a2 2 0 002-2v-4a2 2 0 00-2-2m-3-4h.01M16 16h.01" },
{ id: "meettemplate", label: "会议模板", to: "/meettemplates", icon: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" },
{ id: "svcconfig", label: "依赖服务配置", to: "/serviceconfig", icon: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z M15 12a3 3 0 11-6 0 3 3 0 016 0z" },
{ id: "calltranslate", label: "通话翻译配置", to: "/calltranslate", icon: "M3 5h12M9 3v2m1.048 9.5A18.022 18.022 0 016.412 9m6.088 9h7M11 21l5-10 5 10M12.751 5C11.783 10.77 8.07 15.61 3 18.129" }
]
},
{
label: "系统管理",
items: [
{ id: "apps", label: "应用注册", to: "/apps", icon: "M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" },
{ id: "statlog", label: "统计日志", to: "/statlog", icon: "M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4" },
{ id: "admin", label: "后台账号", to: "/accounts", icon: "M12 4.354a4 4 0 110 5.292M15 21H3v-1a6 6 0 0112 0v1zm0 0h6v-1a6 6 0 00-9-5.197M13 7a4 4 0 11-8 0 4 4 0 018 0z" }
]
}
];
function hasVisibleItems(group) {
return group.items.some((item) => auth.hasAccess(item.id));
}
const pageTitle = computed(() => {
if (route.meta?.title) return route.meta.title;
for (const g of menuGroups) {
const item = g.items.find((m) => route.path.startsWith(m.to));
if (item) return item.label;
}
return "Console";
});
return (_ctx, _push, _parent, _attrs) => {
const _component_NuxtLink = __nuxt_component_0;
const _component_AppToast = __nuxt_component_1;
_push(`<div${ssrRenderAttrs(mergeProps({ class: "flex min-h-screen" }, _attrs))}><aside class="fixed top-0 left-0 bottom-0 z-30 overflow-y-auto flex flex-col" style="${ssrRenderStyle({ "width": "256px", "background": "#1E293B" })}"><div style="${ssrRenderStyle({ "padding": "20px 20px 16px", "border-bottom": "1px solid rgba(255,255,255,0.06)" })}"><div style="${ssrRenderStyle({ "display": "flex", "align-items": "center", "gap": "12px" })}"><div style="${ssrRenderStyle({ "width": "40px", "height": "40px", "background": "linear-gradient(135deg,#4F46E5,#7C3AED)", "border-radius": "12px", "display": "flex", "align-items": "center", "justify-content": "center", "box-shadow": "0 6px 20px rgba(79,70,229,0.35)", "flex-shrink": "0" })}"><svg style="${ssrRenderStyle({ "width": "22px", "height": "22px", "color": "#fff" })}" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.75 17L9 20l-1 1h8l-1-1-.75-3M3 13h18M5 17h14a2 2 0 002-2V5a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"></path></svg></div><div><div style="${ssrRenderStyle({ "color": "#fff", "font-weight": "700", "font-size": "15px", "letter-spacing": "-0.02em" })}">${ssrInterpolate(unref(auth).siteTitle || "Admin")}</div><div style="${ssrRenderStyle({ "color": "#64748B", "font-size": "11px", "font-weight": "500" })}">Admin Console · v1.0.1</div></div></div></div><nav style="${ssrRenderStyle({ "padding": "12px 0", "flex": "1" })}"><!--[-->`);
ssrRenderList(menuGroups, (group) => {
_push(`<!--[-->`);
if (hasVisibleItems(group)) {
_push(`<div class="group-title">${ssrInterpolate(group.label)}</div>`);
} else {
_push(`<!---->`);
}
_push(`<!--[-->`);
ssrRenderList(group.items, (item) => {
_push(`<!--[-->`);
if (unref(auth).hasAccess(item.id)) {
_push(ssrRenderComponent(_component_NuxtLink, {
key: item.id,
to: item.to,
class: "sidebar-link",
"active-class": "active"
}, {
default: withCtx((_, _push2, _parent2, _scopeId) => {
if (_push2) {
_push2(`<svg class="icon" width="18" height="18" fill="none" viewBox="0 0 24 24" stroke="currentColor"${_scopeId}><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"${ssrRenderAttr("d", item.icon)}${_scopeId}></path></svg> ${ssrInterpolate(item.label)}`);
} else {
return [
(openBlock(), createBlock("svg", {
class: "icon",
width: "18",
height: "18",
fill: "none",
viewBox: "0 0 24 24",
stroke: "currentColor"
}, [
createVNode("path", {
"stroke-linecap": "round",
"stroke-linejoin": "round",
"stroke-width": "2",
d: item.icon
}, null, 8, ["d"])
])),
createTextVNode(" " + toDisplayString(item.label), 1)
];
}
}),
_: 2
}, _parent));
} else {
_push(`<!---->`);
}
_push(`<!--]-->`);
});
_push(`<!--]--><!--]-->`);
});
_push(`<!--]--></nav><div style="${ssrRenderStyle({ "margin-top": "auto", "padding": "14px 18px", "border-top": "1px solid rgba(255,255,255,0.06)" })}"><div style="${ssrRenderStyle({ "display": "flex", "align-items": "center", "gap": "10px" })}"><div style="${ssrRenderStyle({ "width": "32px", "height": "32px", "border-radius": "9px", "background": "linear-gradient(135deg,#4F46E5,#7C3AED)", "color": "#fff", "display": "flex", "align-items": "center", "justify-content": "center", "font-weight": "700", "flex-shrink": "0" })}">${ssrInterpolate(avatarChar.value)}</div><div style="${ssrRenderStyle({ "min-width": "0" })}"><div style="${ssrRenderStyle({ "color": "#E2E8F0", "font-size": "13px", "font-weight": "600", "line-height": "1.2", "overflow": "hidden", "text-overflow": "ellipsis", "white-space": "nowrap" })}">${ssrInterpolate(unref(auth).account || "-")}</div><div style="${ssrRenderStyle({ "color": "#64748B", "font-size": "11px", "margin-top": "2px" })}">${ssrInterpolate(identityLabel.value)}</div></div></div></div></aside><main class="flex-1" style="${ssrRenderStyle({ "margin-left": "256px" })}"><header class="bg-white shadow-sm sticky top-0 z-20 h-16 flex items-center justify-between px-6"><div class="flex items-center gap-2 text-sm"><span class="text-slate-400">首页</span><span class="text-slate-300">/</span><span class="text-slate-700 font-medium">${ssrInterpolate(pageTitle.value)}</span></div><div class="flex items-center gap-2"><div class="dropdown dropdown-end"><div tabindex="0" class="btn btn-ghost btn-sm btn-circle relative"><svg class="h-5 w-5 text-slate-500" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path></svg></div><div tabindex="0" class="dropdown-content z-[2] shadow-xl bg-white rounded-xl w-80 border" style="${ssrRenderStyle({ "max-height": "400px" })}"><div class="flex items-center justify-between px-4 py-3 border-b"><span class="text-sm font-semibold text-slate-700">系统通知</span></div><div class="px-3 py-6 text-center text-slate-400 text-xs">暂无新通知</div></div></div><div class="dropdown dropdown-end"><div tabindex="0" class="flex items-center gap-2 cursor-pointer hover:bg-slate-50 rounded-lg px-3 py-1.5"><div class="avatar placeholder"><div class="bg-indigo-600 text-white rounded-full w-8"><span class="text-sm">${ssrInterpolate(avatarChar.value)}</span></div></div><div><div class="text-sm text-slate-700 leading-tight">${ssrInterpolate(unref(auth).account)}</div><div class="text-[10px] text-slate-400">${ssrInterpolate(identityLabelShort.value)}</div></div></div><ul tabindex="0" class="dropdown-content z-[1] menu p-2 shadow-lg bg-white rounded-lg w-44 border"><li><a class="text-sm text-red-500 cursor-pointer">退出登录</a></li></ul></div></div></header>`);
_push(ssrRenderComponent(_component_AppToast, null, null, _parent));
_push(`<div class="p-6">`);
ssrRenderSlot(_ctx.$slots, "default", {}, null, _push, _parent);
_push(`</div></main></div>`);
};
}
});
const _sfc_setup = _sfc_main.setup;
_sfc_main.setup = (props, ctx) => {
const ssrContext = useSSRContext();
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("layouts/default.vue");
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
};
export { _sfc_main as default };
//# sourceMappingURL=default-CKIkgZOu.mjs.map

1
apps/admin/.output/server/chunks/build/default-CKIkgZOu.mjs.map

@ -0,0 +1 @@
{"version":3,"file":"default-CKIkgZOu.mjs","sources":["../../../../node_modules/.cache/nuxt/.nuxt/dist/server/_nuxt/default-CKIkgZOu.js"],"names":["useRoute"],"mappings":"","x_google_ignoreList":[0]}

219
apps/admin/.output/server/chunks/build/device-BeGbj3n2.mjs

File diff suppressed because one or more lines are too long

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save