├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.yml │ ├── documentation.yml │ ├── feature-suggestion.yml │ └── help-wanted.yml └── workflows │ ├── autofix.yml │ ├── ci.yml │ └── release.yml ├── .gitignore ├── .npmrc ├── .nuxtrc ├── .vscode ├── extensions.json └── settings.json ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── docs ├── .env.example ├── .gitignore ├── .npmrc ├── README.md ├── app.config.ts ├── app.vue ├── components │ ├── Illustration.vue │ ├── Logo.vue │ └── OgImage │ │ └── OgImageDocs.vue ├── content │ ├── 1.guide │ │ ├── 0.getting-started.md │ │ ├── 1.features.md │ │ └── 2.composables.md │ ├── 2.module │ │ ├── 0.guide.md │ │ ├── 1.utils-kit.md │ │ └── 2.ui-kit.md │ ├── 3.development │ │ └── 0.contributing.md │ ├── home │ │ └── get-started.md │ └── index.yml ├── layouts │ ├── default.vue │ └── docs.vue ├── nuxt.config.ts ├── package.json ├── pages │ ├── [...slug].vue │ ├── index.vue │ └── playground.vue ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── public │ ├── favicon.ico │ ├── images │ │ ├── components.webp │ │ ├── imports.webp │ │ └── pages.webp │ └── social-card.png ├── renovate.json ├── server │ ├── api │ │ └── search.json.get.ts │ └── tsconfig.json ├── tailwind.config.ts └── tsconfig.json ├── eslint.config.mjs ├── local.ts ├── package.json ├── packages ├── devtools-kit │ ├── build.config.ts │ ├── host-client.d.ts │ ├── host-client.mjs │ ├── iframe-client.d.ts │ ├── iframe-client.mjs │ ├── package.json │ ├── src │ │ ├── _types │ │ │ ├── analyze-build.ts │ │ │ ├── client-api.ts │ │ │ ├── common.ts │ │ │ ├── custom-tabs.ts │ │ │ ├── hooks.ts │ │ │ ├── index.ts │ │ │ ├── integrations.ts │ │ │ ├── options.ts │ │ │ ├── rpc.ts │ │ │ ├── server-ctx.ts │ │ │ ├── terminals.ts │ │ │ ├── timeline-metrics.ts │ │ │ └── wizard.ts │ │ ├── index.ts │ │ ├── runtime │ │ │ ├── host-client.ts │ │ │ └── iframe-client.ts │ │ └── types.ts │ ├── tsconfig.json │ └── types.d.ts ├── devtools-ui-kit │ ├── README.md │ ├── build.config.ts │ ├── module.cjs │ ├── package.json │ ├── playground │ │ ├── app.vue │ │ ├── components │ │ │ └── ShowSource.vue │ │ ├── nuxt.config.ts │ │ ├── pages │ │ │ ├── example-content.vue │ │ │ ├── example.vue │ │ │ └── index.vue │ │ ├── stub │ │ │ └── iframe-client.ts │ │ └── tsconfig.json │ ├── splitpanes.d.ts │ ├── src │ │ ├── assets │ │ │ └── styles.css │ │ ├── components │ │ │ ├── NBadge.vue │ │ │ ├── NBadgeHashed.vue │ │ │ ├── NButton.ts │ │ │ ├── NCard.vue │ │ │ ├── NCheckbox.vue │ │ │ ├── NCodeBlock.vue │ │ │ ├── NDarkToggle.vue │ │ │ ├── NDialog.vue │ │ │ ├── NDrawer.vue │ │ │ ├── NDropdown.vue │ │ │ ├── NIcon.vue │ │ │ ├── NIconTitle.vue │ │ │ ├── NLink.vue │ │ │ ├── NLoading.vue │ │ │ ├── NMarkdown.vue │ │ │ ├── NNavbar.vue │ │ │ ├── NNotification.vue │ │ │ ├── NPanelGrids.vue │ │ │ ├── NRadio.vue │ │ │ ├── NSectionBlock.vue │ │ │ ├── NSelect.vue │ │ │ ├── NSelectTabs.vue │ │ │ ├── NSplitPane.vue │ │ │ ├── NSwitch.vue │ │ │ ├── NTextInput.vue │ │ │ └── NTip.vue │ │ ├── composables │ │ │ ├── color.ts │ │ │ └── notification.ts │ │ ├── module.ts │ │ ├── runtime │ │ │ └── client.ts │ │ └── unocss.ts │ └── tsconfig.json ├── devtools-wizard │ ├── build.config.ts │ ├── cli.mjs │ ├── package.json │ └── src │ │ ├── builtin.ts │ │ └── index.ts └── devtools │ ├── .discoveryrc.cjs │ ├── build.config.ts │ ├── cli.mjs │ ├── client │ ├── .env │ ├── app.config.ts │ ├── app.vue │ ├── components │ │ ├── AssetDetails.vue │ │ ├── AssetDropZone.vue │ │ ├── AssetFontPreview.vue │ │ ├── AssetGridItem.vue │ │ ├── AssetListItem.vue │ │ ├── AssetPreview.vue │ │ ├── AuthConfirmDialog.vue │ │ ├── AuthRequiredPanel.vue │ │ ├── BuildAnalyzeDetails.vue │ │ ├── CodeDiff.vue │ │ ├── CodeSnippets.vue │ │ ├── CommandPalette.vue │ │ ├── ComponentDetails.vue │ │ ├── ComponentItem.vue │ │ ├── ComponentName.vue │ │ ├── ComponentsGraph.vue │ │ ├── ComponentsList.vue │ │ ├── ComposableItem.vue │ │ ├── ComposableTree.vue │ │ ├── CronCollection.vue │ │ ├── CurrentRoute.vue │ │ ├── DataSchemaButton.vue │ │ ├── DataSchemaDrawer.vue │ │ ├── DebugModuleMutationRecords.vue │ │ ├── DisconnectIndicator.vue │ │ ├── DockingPanel.vue │ │ ├── DurationDisplay.vue │ │ ├── FileIcon.vue │ │ ├── FilepathItem.vue │ │ ├── HelpFab.vue │ │ ├── HooksTable.vue │ │ ├── IframeView.vue │ │ ├── LaunchPage.vue │ │ ├── ModuleActionDialog.vue │ │ ├── ModuleInstallList.vue │ │ ├── ModuleItem.vue │ │ ├── ModuleItemBase.vue │ │ ├── ModuleItemInstall.vue │ │ ├── ModuleTreeNode.vue │ │ ├── NpmVersionCheck.vue │ │ ├── NuxtLogo.vue │ │ ├── OpenGraphMissingTabs.vue │ │ ├── PictureInPictureButton.vue │ │ ├── PluginItem.vue │ │ ├── RestartDialogs.vue │ │ ├── RoutePathItem.vue │ │ ├── RoutesTable.vue │ │ ├── ServerRouteDetails.vue │ │ ├── ServerRouteInputs.vue │ │ ├── ServerRouteListItem.vue │ │ ├── ServerTaskDetails.vue │ │ ├── ServerTaskListItem.vue │ │ ├── SideNav.vue │ │ ├── SideNavItem.vue │ │ ├── SplitScreen.vue │ │ ├── StacktraceList.vue │ │ ├── StateEditor.vue │ │ ├── StateGroup.vue │ │ ├── StorageDetails.vue │ │ ├── TabIcon.vue │ │ ├── TabsGrid.vue │ │ ├── TerminalPage.vue │ │ ├── TerminalView.vue │ │ ├── TimelineArgumentView.vue │ │ ├── TimelineDetailsFunction.vue │ │ ├── TimelineDetailsRoute.vue │ │ ├── TimelineItemFunction.vue │ │ ├── TimelineList.vue │ │ ├── TimelineSegment.vue │ │ ├── TimelineTable.vue │ │ ├── TimelineView.vue │ │ ├── docs │ │ │ ├── analyze-build.md │ │ │ ├── components.md │ │ │ ├── hooks.md │ │ │ ├── imports.md │ │ │ ├── modules.md │ │ │ ├── open-graph.md │ │ │ ├── pages.md │ │ │ ├── payload.md │ │ │ ├── plugins.md │ │ │ ├── runtime-configs.md │ │ │ ├── timeline.md │ │ │ └── virtual-files.md │ │ ├── help │ │ │ ├── HelpImportsDirs.vue │ │ │ ├── HelpImportsModules.vue │ │ │ ├── HelpTip.vue │ │ │ └── HelpTipPerformance.vue │ │ └── social │ │ │ ├── SocialFacebook.vue │ │ │ ├── SocialLinkedin.vue │ │ │ ├── SocialPreviewGroup.vue │ │ │ ├── SocialTelegram.vue │ │ │ └── SocialTwitter.vue │ ├── composables │ │ ├── client-services │ │ │ ├── markdown.ts │ │ │ ├── shiki.bundle.ts │ │ │ └── shiki.ts │ │ ├── client.ts │ │ ├── constants.ts │ │ ├── dev-auth.ts │ │ ├── dialog.ts │ │ ├── editor.ts │ │ ├── npm.ts │ │ ├── rpc.ts │ │ ├── state-commands.ts │ │ ├── state-components.ts │ │ ├── state-modules.ts │ │ ├── state-routes.ts │ │ ├── state-schema.ts │ │ ├── state-subprocess.ts │ │ ├── state-tabs.ts │ │ ├── state.ts │ │ ├── storage-options.ts │ │ ├── storage.ts │ │ ├── telemetry.ts │ │ ├── timeline.ts │ │ ├── tree.ts │ │ └── utils.ts │ ├── data │ │ └── open-graph.ts │ ├── layouts │ │ ├── default.vue │ │ ├── full.vue │ │ └── none.vue │ ├── meta.d.ts │ ├── middleware │ │ └── route.global.ts │ ├── modules │ │ └── markdown.ts │ ├── nuxt.config.ts │ ├── pages │ │ ├── __blank.vue │ │ ├── index.vue │ │ ├── modules │ │ │ ├── analyze-build.vue │ │ │ ├── assets.vue │ │ │ ├── components.vue │ │ │ ├── custom-[name].vue │ │ │ ├── debug.vue │ │ │ ├── error.vue │ │ │ ├── hooks.vue │ │ │ ├── imports.vue │ │ │ ├── modules.vue │ │ │ ├── open-graph.vue │ │ │ ├── overview.vue │ │ │ ├── pages.vue │ │ │ ├── payload.vue │ │ │ ├── pinia.vue │ │ │ ├── plugins.vue │ │ │ ├── render-tree.vue │ │ │ ├── runtime-configs.vue │ │ │ ├── server-discovery.vue │ │ │ ├── server-routes.vue │ │ │ ├── server-tasks.vue │ │ │ ├── storage.vue │ │ │ ├── terminals.vue │ │ │ ├── timeline.vue │ │ │ └── virtual-files.vue │ │ └── settings.vue │ ├── plugins │ │ ├── floating-vue.ts │ │ ├── global.ts │ │ └── vue-devtools.ts │ ├── public │ │ └── nuxt.svg │ ├── server │ │ ├── api │ │ │ ├── echo.post.ts │ │ │ └── hello.get.ts │ │ └── tasks │ │ │ ├── collection │ │ │ ├── 1.ts │ │ │ └── 2.ts │ │ │ ├── echo.ts │ │ │ └── ping.ts │ ├── setup │ │ ├── client-rpc.ts │ │ ├── unocss-runtime.ts │ │ └── vue-devtools.ts │ ├── styles │ │ └── global.css │ ├── tests │ │ └── basic.test.ts │ ├── tsconfig.json │ └── uno.config.ts │ ├── package.json │ ├── playground │ ├── .gitignore │ ├── app.vue │ ├── nuxt.config.ts │ └── tsconfig.json │ ├── scripts │ └── prepare.ts │ ├── src │ ├── constant.ts │ ├── dev-auth.ts │ ├── dirs.ts │ ├── integrations │ │ ├── analyze-build.ts │ │ ├── plugin-metrics.ts │ │ ├── timeline.ts │ │ ├── vite-inspect.ts │ │ ├── vscode.ts │ │ ├── vue-devtools.ts │ │ └── vue-tracer.ts │ ├── logger.ts │ ├── module-main.ts │ ├── module.ts │ ├── npm │ │ └── index.ts │ ├── runtime │ │ ├── auth │ │ │ └── index.html │ │ ├── function-metrics-helpers.ts │ │ ├── nitro │ │ │ └── inline.ts │ │ ├── plugins │ │ │ ├── devtools.client.ts │ │ │ ├── devtools.server.ts │ │ │ └── view │ │ │ │ ├── FrameBox.vue │ │ │ │ ├── Main.vue │ │ │ │ ├── client.ts │ │ │ │ ├── state.ts │ │ │ │ └── utils.ts │ │ ├── settings.ts │ │ ├── shared │ │ │ └── hooks.ts │ │ ├── use-nuxt-devtools.ts │ │ └── vue-devtools-client.ts │ ├── server-rpc │ │ ├── analyze-build.ts │ │ ├── assets.ts │ │ ├── custom-tabs.ts │ │ ├── general.ts │ │ ├── index.ts │ │ ├── npm.ts │ │ ├── options.ts │ │ ├── server-data.ts │ │ ├── server-routes.ts │ │ ├── server-tasks.ts │ │ ├── storage.ts │ │ ├── telemetry.ts │ │ ├── terminals.ts │ │ ├── timeline.ts │ │ └── wizard.ts │ ├── types.ts │ ├── types │ │ ├── global.ts │ │ ├── index.ts │ │ ├── tasks.ts │ │ └── ui-state.ts │ ├── utils │ │ ├── fs.ts │ │ ├── local-options.ts │ │ ├── magicast.ts │ │ └── serialize-js-literal.ts │ └── wizard │ │ ├── enable-pages.ts │ │ └── index.ts │ ├── tsconfig.json │ └── types.d.ts ├── playgrounds ├── empty │ ├── .npmrc │ ├── app.vue │ ├── nuxt.config.ts │ ├── package.json │ ├── public │ │ └── empty.txt │ └── tsconfig.json ├── module-starter │ ├── .npmrc │ ├── .nuxtrc │ ├── client │ │ ├── .nuxtrc │ │ ├── app.vue │ │ ├── components │ │ │ └── ModuleAuthorNote.vue │ │ ├── nuxt.config.ts │ │ ├── package.json │ │ └── pages │ │ │ └── index.vue │ ├── package.json │ ├── playground │ │ ├── app.vue │ │ ├── nuxt.config.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── src │ │ ├── devtools.ts │ │ ├── module.ts │ │ └── runtime │ │ │ └── plugin.ts │ ├── test │ │ ├── basic.test.ts │ │ └── fixtures │ │ │ └── basic │ │ │ ├── app.vue │ │ │ ├── nuxt.config.ts │ │ │ └── package.json │ ├── tsconfig.json │ └── types.ts ├── tab-layers │ ├── .npmrc │ ├── app.vue │ ├── nuxt.config.ts │ ├── package.json │ └── tsconfig.json ├── tab-pinia │ ├── .npmrc │ ├── app.vue │ ├── assets │ │ └── main.css │ ├── components │ │ └── PiniaLogo.vue │ ├── directives │ │ └── focus.ts │ ├── layouts │ │ └── default.vue │ ├── modules │ │ └── custom-module │ │ │ ├── index.ts │ │ │ └── runtime │ │ │ └── server │ │ │ └── api │ │ │ └── hello.ts │ ├── nuxt.config.ts │ ├── package.json │ ├── pages │ │ └── index.vue │ ├── stores │ │ └── counter.ts │ └── tsconfig.json ├── tab-seo │ ├── .npmrc │ ├── app.vue │ ├── components │ │ └── GlobalNav.vue │ ├── nuxt.config.ts │ ├── package.json │ ├── pages │ │ ├── dynamic-[name].vue │ │ ├── empty.vue │ │ ├── full.vue │ │ └── index.vue │ └── tsconfig.json ├── tab-server-route │ ├── .npmrc │ ├── app.vue │ ├── modules │ │ └── custom-module │ │ │ ├── index.ts │ │ │ └── runtime │ │ │ └── server │ │ │ └── api │ │ │ └── hello.ts │ ├── nuxt.config.ts │ ├── package.json │ ├── server │ │ ├── api │ │ │ └── hello.get.ts │ │ └── tsconfig.json │ └── tsconfig.json ├── tab-timeline │ ├── .npmrc │ ├── app.vue │ ├── components │ │ └── GlobalNav.vue │ ├── composables │ │ └── basic.ts │ ├── nuxt.config.ts │ ├── package.json │ ├── pages │ │ ├── dynamic-[name].vue │ │ ├── empty.vue │ │ ├── error.vue │ │ └── index.vue │ ├── server │ │ ├── api │ │ │ └── data.ts │ │ └── tsconfig.json │ └── tsconfig.json └── v4 │ ├── .npmrc │ ├── nuxt.config.ts │ ├── package.json │ └── tsconfig.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── renovate.json ├── scripts ├── bump-nightly.ts └── release-nightly.sh ├── taze.config.ts ├── tsconfig.json └── uno.config.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_size = 2 5 | indent_style = space 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.yml: -------------------------------------------------------------------------------- 1 | name: 🐛 Bug report 2 | description: Something's not working 3 | title: 'fix: ' 4 | labels: [bug] 5 | body: 6 | - type: textarea 7 | validations: 8 | required: true 9 | attributes: 10 | label: 🐛 The bug 11 | description: What isn't working? Describe what the bug is. 12 | - type: input 13 | validations: 14 | required: true 15 | attributes: 16 | label: 🛠️ To reproduce 17 | description: A reproduction of the bug 18 | placeholder: https://stackblitz.com/[...] 19 | - type: textarea 20 | validations: 21 | required: true 22 | attributes: 23 | label: 🌈 Expected behavior 24 | description: What did you expect to happen? Is there a section in the docs about this? 25 | - type: textarea 26 | attributes: 27 | label: ℹ️ Additional context 28 | description: Add any other context about the problem here. 29 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation.yml: -------------------------------------------------------------------------------- 1 | name: 📚 Documentation 2 | description: How do I ... ? 3 | title: 'docs: ' 4 | labels: [documentation] 5 | body: 6 | - type: textarea 7 | validations: 8 | required: true 9 | attributes: 10 | label: 📚 Is your documentation request related to a problem? 11 | description: A clear and concise description of what the problem is. 12 | placeholder: I feel I should be able to [...] but I can't see how to do it from the docs. 13 | - type: textarea 14 | attributes: 15 | label: 🔍 Where should you find it? 16 | description: What page of the docs do you expect this information to be found on? 17 | - type: textarea 18 | attributes: 19 | label: ℹ️ Additional context 20 | description: Add any other context or information. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-suggestion.yml: -------------------------------------------------------------------------------- 1 | name: 🆕 Feature suggestion 2 | description: Suggest an idea 3 | title: 'feat: ' 4 | labels: [enhancement] 5 | body: 6 | - type: textarea 7 | validations: 8 | required: true 9 | attributes: 10 | label: 🆒 Your use case 11 | description: Add a description of your use case, and how this feature would help you. 12 | placeholder: When I do [...] I would expect to be able to do [...] 13 | - type: textarea 14 | validations: 15 | required: true 16 | attributes: 17 | label: 🆕 The solution you'd like 18 | description: Describe what you want to happen. 19 | - type: textarea 20 | attributes: 21 | label: 🔍 Alternatives you've considered 22 | description: Have you considered any alternative solutions or features? 23 | - type: textarea 24 | attributes: 25 | label: ℹ️ Additional info 26 | description: Is there any other context you think would be helpful to know? 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/help-wanted.yml: -------------------------------------------------------------------------------- 1 | name: 🆘 Help 2 | description: I need help with ... 3 | title: 'help: ' 4 | labels: [help wanted] 5 | body: 6 | - type: textarea 7 | validations: 8 | required: true 9 | attributes: 10 | label: 📚 What are you trying to do? 11 | description: A clear and concise description of your objective. 12 | placeholder: I'm not sure how to [...]. 13 | - type: textarea 14 | attributes: 15 | label: 🔍 What have you tried? 16 | description: Have you looked through the docs? Tried different approaches? The more detail the better. 17 | - type: textarea 18 | attributes: 19 | label: ℹ️ Additional context 20 | description: Add any other context or information. 21 | -------------------------------------------------------------------------------- /.github/workflows/autofix.yml: -------------------------------------------------------------------------------- 1 | name: autofix.ci # needed to securely identify the workflow 2 | 3 | on: 4 | pull_request: 5 | paths-ignore: 6 | - 'docs/**' 7 | 8 | jobs: 9 | ci: 10 | permissions: 11 | id-token: write 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | - uses: pnpm/action-setup@v4 16 | - uses: actions/setup-node@v4 17 | with: 18 | node-version: lts/* 19 | cache: pnpm 20 | - run: npm install -g corepack@latest 21 | - run: corepack enable 22 | - run: pnpm install 23 | - run: pnpm lint --fix 24 | - uses: autofix-ci/action@ea32e3a12414e6d3183163c3424a7d7a8631ad84 25 | - run: pnpm build 26 | - run: pnpm typecheck 27 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | # PR CI handled by autofix.yml 8 | # pull_request: 9 | # branches: 10 | # - main 11 | 12 | jobs: 13 | ci: 14 | permissions: 15 | id-token: write 16 | runs-on: ubuntu-latest 17 | steps: 18 | - uses: actions/checkout@v4 19 | - uses: pnpm/action-setup@v4 20 | - uses: actions/setup-node@v4 21 | with: 22 | node-version: lts/* 23 | cache: pnpm 24 | - run: npm install -g corepack@latest 25 | - run: corepack enable 26 | - run: pnpm install 27 | - run: pnpm lint 28 | - run: pnpm build 29 | - run: pnpm typecheck 30 | - name: Release Nightly 31 | if: github.event_name == 'push' && !contains(github.event.head_commit.message, '[skip-release]') 32 | run: ./scripts/release-nightly.sh 33 | env: 34 | NPM_CONFIG_PROVENANCE: true 35 | NODE_AUTH_TOKEN: ${{secrets.NODE_AUTH_TOKEN_NIGHTLY}} 36 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | permissions: 4 | contents: write 5 | id-token: write 6 | 7 | on: 8 | push: 9 | tags: 10 | - 'v*' 11 | 12 | jobs: 13 | release: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | with: 18 | fetch-depth: 0 19 | 20 | - name: Install pnpm 21 | uses: pnpm/action-setup@v4 22 | 23 | - name: Set node 24 | uses: actions/setup-node@v4 25 | with: 26 | node-version: lts/* 27 | cache: pnpm 28 | registry-url: 'https://registry.npmjs.org' 29 | 30 | - name: Force Set pnpm Registry 31 | run: pnpm config set registry https://registry.npmjs.org 32 | 33 | - run: npx changelogithub 34 | env: 35 | GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} 36 | 37 | - name: Install Dependencies 38 | run: pnpm i 39 | 40 | - run: pnpm publish -r --access public --no-git-checks 41 | env: 42 | NODE_AUTH_TOKEN: ${{secrets.NODE_AUTH_TOKEN_MAIN_PACKAGES}} 43 | NPM_CONFIG_PROVENANCE: true 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | node_modules 3 | 4 | # Logs 5 | *.log* 6 | 7 | # Temp directories 8 | .temp 9 | .tmp 10 | .cache 11 | .eslintcache 12 | 13 | # Yarn 14 | **/.yarn/cache 15 | **/.yarn/*state* 16 | 17 | # Generated dirs 18 | dist 19 | 20 | # Nuxt 21 | .nuxt 22 | .output 23 | .vercel_build_output 24 | .build-* 25 | .env 26 | .netlify 27 | .data 28 | 29 | # Env 30 | .env 31 | 32 | # Testing 33 | reports 34 | coverage 35 | *.lcov 36 | .nyc_output 37 | 38 | # Intellij idea 39 | *.iml 40 | .idea 41 | 42 | # OSX 43 | .DS_Store 44 | .AppleDouble 45 | .LSOverride 46 | .AppleDB 47 | .AppleDesktop 48 | Network Trash Folder 49 | Temporary Items 50 | .apdisk 51 | 52 | # Workspaces 53 | packages/devtools/README.md 54 | 55 | clones 56 | packages/devtools/client/public/discovery/index.html 57 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | shamefully-hoist=true 2 | ignore-workspace-root-check=true 3 | strict-peer-dependencies=false 4 | auto-install-peers=true 5 | resolution-mode=highest 6 | -------------------------------------------------------------------------------- /.nuxtrc: -------------------------------------------------------------------------------- 1 | # enable TypeScript bundler module resolution - https://www.typescriptlang.org/docs/handbook/modules/reference.html#bundler 2 | experimental.typescriptBundlerResolution=true -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "antfu.pnpm-catalog-lens", 4 | "vue.volar", 5 | "dbaeumer.vscode-eslint", 6 | "antfu.unocss" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | // Enable the flat config support 4 | "eslint.experimental.useFlatConfig": true, 5 | 6 | // Disable the default formatter 7 | "prettier.enable": false, 8 | "editor.formatOnSave": false, 9 | 10 | // Auto fix 11 | "editor.codeActionsOnSave": { 12 | "source.fixAll.eslint": "explicit", 13 | "source.organizeImports": "never" 14 | }, 15 | 16 | // Silent the stylistic rules in you IDE, but still auto fix them 17 | "eslint.rules.customizations": [ 18 | { "rule": "@stylistic/*", "severity": "off" }, 19 | { "rule": "style*", "severity": "off" }, 20 | { "rule": "*-indent", "severity": "off" }, 21 | { "rule": "*-spacing", "severity": "off" }, 22 | { "rule": "*-spaces", "severity": "off" }, 23 | { "rule": "*-order", "severity": "off" }, 24 | { "rule": "*-dangle", "severity": "off" }, 25 | { "rule": "*-newline", "severity": "off" }, 26 | { "rule": "*quotes", "severity": "off" }, 27 | { "rule": "*semi", "severity": "off" } 28 | ], 29 | 30 | "eslint.validate": [ 31 | "javascript", 32 | "javascriptreact", 33 | "typescript", 34 | "typescriptreact", 35 | "vue", 36 | "html", 37 | "markdown", 38 | "json", 39 | "jsonc", 40 | "yaml" 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Please refer to the [Contribution Guide](https://devtools.nuxt.com/development/contributing) in our documentation. 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-PRESENT Nuxt Team 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/.env.example: -------------------------------------------------------------------------------- 1 | # To use Nuxt UI Pro in production 2 | NUXT_UI_PRO_LICENSE= 3 | 4 | # Used when pre-rendering the docs for dynamic OG images 5 | NUXT_PUBLIC_SITE_URL= 6 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.iml 3 | .idea 4 | *.log* 5 | .nuxt 6 | .vscode 7 | .DS_Store 8 | coverage 9 | dist 10 | sw.* 11 | .env 12 | .output 13 | -------------------------------------------------------------------------------- /docs/.npmrc: -------------------------------------------------------------------------------- 1 | shamefully-hoist=true 2 | strict-peer-dependencies=false 3 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Nuxt Devtools docs 2 | 3 | Docs template with [Nuxt UI](https://ui.nuxt.com). 4 | 5 | ## Setup 6 | 7 | Install dependencies inside `docs/`: 8 | 9 | ```bash 10 | pnpm i 11 | ``` 12 | 13 | ## Development 14 | 15 | ```bash 16 | npm run dev 17 | ``` 18 | 19 | ## Static Generation 20 | 21 | Use the `generate` command to build your application. 22 | 23 | The HTML files will be generated in the .output/public directory and ready to be deployed to any static compatible hosting. 24 | 25 | ```bash 26 | npm run generate 27 | ``` 28 | 29 | ## Preview build 30 | 31 | You might want to preview the result of your build locally, to do so, run the following command: 32 | 33 | ```bash 34 | npm run preview 35 | ``` 36 | -------------------------------------------------------------------------------- /docs/app.config.ts: -------------------------------------------------------------------------------- 1 | export default defineAppConfig({ 2 | ui: { 3 | primary: 'green', 4 | gray: 'slate', 5 | button: { 6 | color: { 7 | white: { 8 | link: 'text-white dark:text-white hover:text-gray-300 dark:hover:text-gray-300 underline-offset-4 hover:underline focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-gray-500 dark:focus-visible:ring-gray-400 transition-all duration-200', 9 | }, 10 | transparent: { 11 | outline: 'ring-1 ring-inset ring-gray-700 text-white dark:text-white hover:bg-gray-900 disabled:bg-gray-300 dark:hover:bg-gray-900 dark:disabled:bg-gray-300 focus-visible:ring-2 focus-visible:ring-gray-400 dark:focus-visible:ring-gray-400', 12 | }, 13 | }, 14 | }, 15 | }, 16 | elements: { 17 | variables: { 18 | light: { 19 | background: '255 255 255', 20 | foreground: 'var(--color-gray-700)', 21 | }, 22 | dark: { 23 | background: 'var(--color-gray-950)', 24 | foreground: 'var(--color-gray-200)', 25 | }, 26 | }, 27 | }, 28 | }) 29 | -------------------------------------------------------------------------------- /docs/components/OgImage/OgImageDocs.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 40 | -------------------------------------------------------------------------------- /docs/content/1.guide/2.composables.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Composables 3 | description: Open or control Nuxt DevTools with the useNuxtDevtools composable. 4 | --- 5 | 6 | In case you might want to open or control the Nuxt DevTools in your application on development, a composable `useNuxtDevtools` is registered with auto-import. 7 | 8 | ```vue 9 | 13 | 14 | 23 | ``` 24 | 25 | When you have auto-import disabled, you can also import it explicitly: 26 | 27 | ```ts 28 | import { useNuxtDevTools } from '#imports' 29 | ``` 30 | 31 | Checkout it's type definition for more available methods. 32 | -------------------------------------------------------------------------------- /docs/content/home/get-started.md: -------------------------------------------------------------------------------- 1 | --- 2 | navigation: false 3 | --- 4 | 5 | You just need to go to your `nuxt.config` file and set `devtools` to `true`: 6 | 7 | ```ts [nuxt.config.ts] 8 | export default defineNuxtConfig({ 9 | devtools: { enabled: true }, 10 | }) 11 | ``` 12 | 13 | Nuxt will automatically install the DevTools module for you. 14 | -------------------------------------------------------------------------------- /docs/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /docs/layouts/docs.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 24 | -------------------------------------------------------------------------------- /docs/nuxt.config.ts: -------------------------------------------------------------------------------- 1 | export default defineNuxtConfig({ 2 | extends: '@nuxt/ui-pro', 3 | 4 | routeRules: { 5 | '/guide': { redirect: '/guide/getting-started' }, 6 | }, 7 | 8 | modules: [ 9 | '@nuxt/image', 10 | '@nuxt/content', 11 | '@nuxt/fonts', 12 | '@nuxt/ui', 13 | '@nuxthq/studio', 14 | '@vueuse/nuxt', 15 | '@nuxtjs/plausible', 16 | 'nuxt-og-image', 17 | ...(process.env.CI ? [] : ['../local']), 18 | ], 19 | 20 | colorMode: { 21 | preference: 'dark', 22 | }, 23 | 24 | site: { 25 | url: 'https://devtools.nuxt.com', 26 | }, 27 | 28 | ui: { 29 | icons: ['heroicons', 'simple-icons', 'ph'], 30 | }, 31 | 32 | nitro: { 33 | prerender: { 34 | routes: ['/api/search.json'], 35 | autoSubfolderIndex: false, 36 | }, 37 | }, 38 | 39 | hooks: { 40 | // Related to https://github.com/nuxt/nuxt/pull/22558 41 | // Adding all global components to the main entry 42 | // To avoid lagging during page navigation on client-side 43 | 'components:extend': function (components) { 44 | for (const comp of components) { 45 | if (comp.global) 46 | comp.global = 'sync' 47 | } 48 | }, 49 | }, 50 | 51 | // devtools: { 52 | // enabled: true, 53 | // componentInspector: { 54 | // cleanHtml: false, 55 | // }, 56 | // }, 57 | 58 | $production: { 59 | nitro: { 60 | experimental: { 61 | wasm: true, 62 | }, 63 | }, 64 | }, 65 | 66 | compatibilityDate: '2025-02-16', 67 | }) 68 | -------------------------------------------------------------------------------- /docs/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@nuxt/devtools-docs", 3 | "private": true, 4 | "packageManager": "pnpm@10.5.2", 5 | "scripts": { 6 | "dev": "nuxi dev", 7 | "build": "nuxi build", 8 | "generate": "nuxi generate", 9 | "preview": "nuxi preview" 10 | }, 11 | "devDependencies": { 12 | "@iconify-json/heroicons": "catalog:", 13 | "@iconify-json/ph": "catalog:", 14 | "@iconify-json/simple-icons": "catalog:", 15 | "@nuxt/content": "catalog:", 16 | "@nuxt/devtools": "catalog:", 17 | "@nuxt/fonts": "catalog:", 18 | "@nuxt/image": "catalog:", 19 | "@nuxt/ui-pro": "catalog:", 20 | "@nuxthq/studio": "catalog:", 21 | "@nuxtjs/plausible": "catalog:", 22 | "@vueuse/core": "catalog:", 23 | "@vueuse/nuxt": "catalog:", 24 | "better-sqlite3": "catalog:", 25 | "nuxt": "catalog:", 26 | "nuxt-og-image": "catalog:" 27 | }, 28 | "resolutions": { 29 | "@nuxt/ui": "2.15.2" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /docs/pages/playground.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 |