Repository: enzonotario/vitepress-openapi
Pull request #70 (2024-10-06 14:35:43)

change!: rename package to `vitepress-openapi`
<!-- Provide a general summary of your changes in the title above. -->

# Description

Rename package from `vitepress-theme-openapi` to `vitepress-openapi` for better clarity, as the `-theme-` prefix personally caused some confusion for me, which I later confirmed on [Reddit](https://www.reddit.com/r/node/comments/17mm2fk/comment/lp26iz7/) and [Divyansh Singh](https://twitter.com/_brc_dd) on X (thanks!).

## Related issues/external references
<!--
Format issues on GitHub as `#XXX`
-->

## Types of changes

- Breaking change

## Migration Guide

1. Uninstall the old package:
```sh
npm uninstall vitepress-theme-openapi

pnpm uninstall vitepress-theme-openapi

yarn remove vitepress-theme-openapi

bun uninstall vitepress-theme-openapi
```

2. Install the new package:
```sh
npm install vitepress-openapi 

pnpm add vitepress-openapi

yarn add vitepress-openapi

bun install vitepress-openapi
```

3. Replace all occurrences of `vitepress-theme-openapi` with `vitepress-openapi` in your project:

```sh
# Replace all occurrences of `vitepress-theme-openapi` with `vitepress-openapi` in your project
find . -type f -exec sed -i 's/vitepress-theme-openapi/vitepress-openapi/g' {} +
```



vercel[bot]: [vc]: #MQ92iuISz6XdiBXStQffhPv/9sNfC0rI0l1wQbf/0lE=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJ2aXRlcHJlc3Mtb3BlbmFwaSIsImxpdmVGZWVkYmFjayI6eyJyZXNvbHZlZCI6MCwidW5yZXNvbHZlZCI6MCwidG90YWwiOjAsImxpbmsiOiJ2aXRlcHJlc3Mtb3BlbmFwaS1naXQtZmVhdHVyZS1yZW4tNTIxMWQ5LWVuem8tbm90YXJpb3MtcHJvamVjdHMudmVyY2VsLmFwcCJ9LCJpbnNwZWN0b3JVcmwiOiJodHRwczovL3ZlcmNlbC5jb20vZW56by1ub3Rhcmlvcy1wcm9qZWN0cy92aXRlcHJlc3Mtb3BlbmFwaS9GZXVYaWN5dUVoNHR6bWo3UjJCSzVWdXZyRmFmIiwicHJldmlld1VybCI6InZpdGVwcmVzcy1vcGVuYXBpLWdpdC1mZWF0dXJlLXJlbi01MjExZDktZW56by1ub3Rhcmlvcy1wcm9qZWN0cy52ZXJjZWwuYXBwIiwibmV4dENvbW1pdFN0YXR1cyI6IkRFUExPWUVEIn1dfQ==
**The latest updates on your projects**. Learn more about [Vercel for Git ↗︎](https://vercel.link/github-learn-more)

| Name | Status | Preview | Comments | Updated (UTC) |
| :--- | :----- | :------ | :------- | :------ |
| **vitepress-openapi** | ✅ Ready ([Inspect](https://vercel.com/enzo-notarios-projects/vitepress-openapi/FeuXicyuEh4tzmj7R2BK5VuvrFaf)) | [Visit Preview](https://vercel.live/open-feedback/vitepress-openapi-git-feature-ren-5211d9-enzo-notarios-projects.vercel.app?via=pr-comment-visit-preview-link&passThrough=1) | 💬 [**Add feedback**](https://vercel.live/open-feedback/vitepress-openapi-git-feature-ren-5211d9-enzo-notarios-projects.vercel.app?via=pr-comment-feedback-link) | Oct 6, 2024 2:35pm |


coderabbitai[bot]: <!-- This is an auto-generated comment: summarize by coderabbit.ai -->
<!-- This is an auto-generated comment: review in progress by coderabbit.ai -->

> [!NOTE]
> Currently processing new changes in this PR. This may take a few minutes, please wait...
> 
> 	<details>
> <summary>📥 Commits</summary>
> 
> Files that changed from the base of the PR and between c9fa20328bd36f04e80d36e0d9ed7b44e09886f0 and e838aa3584ee3c0ae1706aa430306497de2b11d7.
> 
> </details>
> 
> <details>
> <summary>📒 Files selected for processing (80)</summary>
> 
> * .github/ISSUE_TEMPLATE/1-bug-report.yml (2 hunks)
> * .github/ISSUE_TEMPLATE/2-feature-request.yml (2 hunks)
> * README.md (1 hunks)
> * components.json (1 hunks)
> * dev/.vitepress/config.ts (3 hunks)
> * dev/.vitepress/theme/index.ts (1 hunks)
> * dev/argentinadatos/index.md (1 hunks)
> * dev/criptoya-argentina/index.md (1 hunks)
> * dev/custom-slots.md (1 hunks)
> * dev/index.md (1 hunks)
> * dev/multiple-specs/buyMuseumTickets.md (1 hunks)
> * dev/one-page.md (1 hunks)
> * dev/operations/[operationId].md (1 hunks)
> * dev/operations/[operationId].paths.js (2 hunks)
> * dev/plant-store/index.md (1 hunks)
> * dev/response-statuses/index.md (1 hunks)
> * dev/response-types/index.md (1 hunks)
> * dev/scalar-galaxy/index.md (1 hunks)
> * dev/schemas/index.md (1 hunks)
> * docs/.vitepress/config.mts (3 hunks)
> * docs/.vitepress/theme/index.ts (1 hunks)
> * docs/composables/usePlayground.md (1 hunks)
> * docs/composables/useTheme.md (1 hunks)
> * docs/example/one-page.md (1 hunks)
> * docs/example/operations/[operationId].md (1 hunks)
> * docs/example/operations/[operationId].paths.js (2 hunks)
> * docs/example/response-statuses/index.md (1 hunks)
> * docs/example/response-types/index.md (1 hunks)
> * docs/example/schemas/index.md (1 hunks)
> * docs/guide/getting-started.md (3 hunks)
> * docs/index.md (2 hunks)
> * docs/layouts/all-operations.md (1 hunks)
> * docs/layouts/custom-slots.md (1 hunks)
> * docs/layouts/multiple-specs.md (2 hunks)
> * docs/layouts/one-operation.md (4 hunks)
> * docs/layouts/sidebar.md (1 hunks)
> * docs/tailwind.config.js (1 hunks)
> * package.json (1 hunks)
> * src/components/Common/OACodeBlock.vue (1 hunks)
> * src/components/Common/OAFooter.vue (1 hunks)
> * src/components/Common/OAHeading.vue (1 hunks)
> * src/components/Common/OAInfo.vue (1 hunks)
> * src/components/Common/OAJSONEditor.vue (1 hunks)
> * src/components/Common/OAOperation.vue (1 hunks)
> * src/components/Common/OASpec.vue (1 hunks)
> * src/components/Path/OAPath.vue (1 hunks)
> * src/components/Path/OAPathEndpoint.vue (1 hunks)
> * src/components/Playground/OAPlaygroundParameterInput.vue (1 hunks)
> * src/components/Playground/OAPlaygroundParameters.vue (1 hunks)
> * src/components/Playground/OAPlaygroundSecurityInput.vue (1 hunks)
> * src/components/Response/OAResponse.vue (1 hunks)
> * src/components/Response/OAResponses.vue (1 hunks)
> * src/components/Schema/OASchemaProperty.vue (1 hunks)
> * src/components/Schema/OASchemaTabs.vue (1 hunks)
> * src/components/Security/OASecurity.vue (1 hunks)
> * src/components/Try/OATryItButton.vue (1 hunks)
> * src/components/Try/OATryWithVariables.vue (1 hunks)
> * src/components/ui/badge/Badge.vue (1 hunks)
> * src/components/ui/checkbox/Checkbox.vue (1 hunks)
> * src/components/ui/input/Input.vue (1 hunks)
> * src/components/ui/label/Label.vue (1 hunks)
> * src/components/ui/select/SelectContent.vue (1 hunks)
> * src/components/ui/select/SelectGroup.vue (1 hunks)
> * src/components/ui/select/SelectItem.vue (1 hunks)
> * src/components/ui/select/SelectLabel.vue (1 hunks)
> * src/components/ui/select/SelectScrollDownButton.vue (1 hunks)
> * src/components/ui/select/SelectScrollUpButton.vue (1 hunks)
> * src/components/ui/select/SelectSeparator.vue (1 hunks)
> * src/components/ui/select/SelectTrigger.vue (1 hunks)
> * src/components/ui/tabs/TabsContent.vue (1 hunks)
> * src/components/ui/tabs/TabsList.vue (1 hunks)
> * src/components/ui/tabs/TabsTrigger.vue (1 hunks)
> * src/composables/useShiki.ts (1 hunks)
> * src/composables/useSidebar.ts (1 hunks)
> * src/lib/OpenApi.ts (1 hunks)
> * src/lib/generateMissingOperationIds.ts (1 hunks)
> * src/lib/generateMissingSummary.ts (1 hunks)
> * test/composables/openapi.test.ts (1 hunks)
> * test/composables/useOpenapiWithNoSpec.test.ts (1 hunks)
> * vite.config.ts (1 hunks)
> 
> </details>
> 
> 	```ascii
>  _______________________________________________________________________________________________________
> < Make it easy to reuse. If it's easy to reuse, people will. Create an environment that supports reuse. >
>  -------------------------------------------------------------------------------------------------------
>   \
>    \   \
>         \ /\
>         ( )
>       .( o ).
> ```

<!-- end of auto-generated comment: review in progress by coderabbit.ai --><!-- tips_start -->

---

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

<details>
<summary>❤️ Share</summary>

- [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai)
- [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai)
- [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai)
- [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)

</details>

<details>
<summary>🪧 Tips</summary>

### Chat

There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai):

- Review comments: Directly reply to a review comment made by CodeRabbit. Example:
  - `I pushed a fix in commit <commit_id>, please review it.`
  - `Generate unit testing code for this file.`
  - `Open a follow-up GitHub issue for this discussion.`
- Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples:
  - `@coderabbitai generate unit testing code for this file.`
  -	`@coderabbitai modularize this function.`
- PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
  - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.`
  - `@coderabbitai read src/utils.ts and generate unit testing code.`
  - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.`
  - `@coderabbitai help me debug CodeRabbit configuration file.`

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

### CodeRabbit Commands (Invoked using PR comments)

- `@coderabbitai pause` to pause the reviews on a PR.
- `@coderabbitai resume` to resume the paused reviews.
- `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
- `@coderabbitai full review` to do a full review from scratch and review all the files again.
- `@coderabbitai summary` to regenerate the summary of the PR.
- `@coderabbitai resolve` resolve all the CodeRabbit review comments.
- `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository.
- `@coderabbitai help` to get help.

### Other keywords and placeholders

- Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed.
- Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description.
- Add `@coderabbitai` anywhere in the PR title to generate the title automatically.

### CodeRabbit Configuration File (`.coderabbit.yaml`)

- You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository.
- Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information.
- If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json`

### Documentation and Community

- Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit.
- Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback.
- Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.

</details>

<!-- tips_end -->

Patch:
diff --git a/.github/ISSUE_TEMPLATE/1-bug-report.yml b/.github/ISSUE_TEMPLATE/1-bug-report.yml
index 574788c..c5d8145 100644
--- a/.github/ISSUE_TEMPLATE/1-bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/1-bug-report.yml
@@ -1,5 +1,5 @@
 name: "🐛 Bug Report"
-description: Report a bug found while using the theme.
+description: Report a bug found while using vitepress-openapi.
 labels: ["Type: Bug", "Status: Triage"]
 body:
   - type: textarea
@@ -20,7 +20,7 @@ body:
     id: reproduction
     attributes:
       label: Reproduction
-      description: Please provide a link via [vitepress-theme-openapi-starter StackBlitz](https://stackblitz.com/fork/github/enzonotario/vitepress-theme-openapi-starter?file=public/openapi.json) or a link to a repo that can reproduce the problem you ran into. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required ([Why?](https://antfu.me/posts/why-reproductions-are-required)). If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "needs reproduction" label.
+      description: Please provide a link via [vitepress-openapi-starter StackBlitz](https://stackblitz.com/fork/github/enzonotario/vitepress-openapi-starter?file=public/openapi.json) or a link to a repo that can reproduce the problem you ran into. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required ([Why?](https://antfu.me/posts/why-reproductions-are-required)). If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "needs reproduction" label.
       placeholder: Reproduction URL
   - type: textarea
     id: reproduction-steps
diff --git a/.github/ISSUE_TEMPLATE/2-feature-request.yml b/.github/ISSUE_TEMPLATE/2-feature-request.yml
index ce878f8..10eb463 100644
--- a/.github/ISSUE_TEMPLATE/2-feature-request.yml
+++ b/.github/ISSUE_TEMPLATE/2-feature-request.yml
@@ -1,5 +1,5 @@
 name: "✨ Feature Request"
-description: Suggest a feature or enhancement to the theme.
+description: Suggest a feature or enhancement to vitepress-openapi.
 labels: ["Type: Idea"]
 body:
   - type: textarea
@@ -26,4 +26,4 @@ body:
     id: other
     attributes:
       label: Other information
-      placeholder: Any other details?
\ No newline at end of file
+      placeholder: Any other details?
diff --git a/README.md b/README.md
index fdb2a29..945c857 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ Generate VitePress API Documentation from OpenAPI Specification.
 
 ## Documentation
 
-To get started, check out the [documentation](https://vitepress-theme-openapi.vercel.app/).
+To get started, check out the [documentation](https://vitepress-openapi.vercel.app/).
 
 ## License
 
diff --git a/components.json b/components.json
index 5c0f18b..62494b1 100644
--- a/components.json
+++ b/components.json
@@ -12,6 +12,6 @@
   "framework": "vite",
   "aliases": {
     "components": "src/components",
-    "utils": "vitepress-theme-openapi/lib/utils"
+    "utils": "vitepress-openapi/lib/utils"
   }
 }
diff --git a/dev/.vitepress/config.ts b/dev/.vitepress/config.ts
index 37f072b..2f9aacf 100644
--- a/dev/.vitepress/config.ts
+++ b/dev/.vitepress/config.ts
@@ -1,5 +1,5 @@
 import { resolve } from 'node:path'
-import { useSidebar } from 'vitepress-theme-openapi'
+import { useSidebar } from 'vitepress-openapi'
 import { defineConfigWithTheme } from 'vitepress'
 import spec from '../../docs/public/openapi.json' assert { type: 'json' }
 
@@ -9,10 +9,10 @@ const sidebar = useSidebar({
 })
 
 export default defineConfigWithTheme({
-  title: 'vitepress-theme-openapi',
-  description: 'OpenAPI theme for VitePress',
+  title: 'vitepress-openapi',
+  description: 'Generate VitePress API Documentation from OpenAPI specs.',
   themeConfig: {
-    repo: 'https://github.com/enzonotario/vitepress-theme-openapi',
+    repo: 'https://github.com/enzonotario/vitepress-openapi',
     outline: [1, 3],
     sidebar: [
       ...sidebar.generateSidebarGroups(),
@@ -71,7 +71,7 @@ export default defineConfigWithTheme({
   vite: {
     resolve: {
       alias: {
-        'vitepress-theme-openapi': resolve(__dirname, '../../src'),
+        'vitepress-openapi': resolve(__dirname, '../../src'),
       },
       dedupe: ['vue'], // avoid error when using dependencies that also use Vue
     },
diff --git a/dev/.vitepress/theme/index.ts b/dev/.vitepress/theme/index.ts
index 41de28c..7aa3917 100644
--- a/dev/.vitepress/theme/index.ts
+++ b/dev/.vitepress/theme/index.ts
@@ -1,4 +1,4 @@
-import { theme, useOpenapi, useTheme } from 'vitepress-theme-openapi'
+import { theme, useOpenapi, useTheme } from 'vitepress-openapi'
 import DefaultTheme from 'vitepress/theme'
 import spec from '../../../docs/public/openapi.json' assert {type: 'json'}
 
diff --git a/dev/argentinadatos/index.md b/dev/argentinadatos/index.md
index 28fe36f..2f1dca0 100644
--- a/dev/argentinadatos/index.md
+++ b/dev/argentinadatos/index.md
@@ -1,7 +1,7 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/dev/criptoya-argentina/index.md b/dev/criptoya-argentina/index.md
index 20ff8f5..50f11c8 100644
--- a/dev/criptoya-argentina/index.md
+++ b/dev/criptoya-argentina/index.md
@@ -1,13 +1,13 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
 import { onUnmounted } from 'vue'
 import { useRoute, useData } from 'vitepress'
-import { useTheme } from 'vitepress-theme-openapi'
+import { useTheme } from 'vitepress-openapi'
 import spec from '../../docs/public/openapi-criptoya-argentina.json'
 
 const route = useRoute()
diff --git a/dev/custom-slots.md b/dev/custom-slots.md
index 4a32940..507670a 100644
--- a/dev/custom-slots.md
+++ b/dev/custom-slots.md
@@ -1,12 +1,12 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
 import { useData } from 'vitepress'
-import { useOpenapi } from 'vitepress-theme-openapi'
+import { useOpenapi } from 'vitepress-openapi'
 
 const { isDark } = useData()
 
diff --git a/dev/index.md b/dev/index.md
index 293c17b..26f1b17 100644
--- a/dev/index.md
+++ b/dev/index.md
@@ -1,3 +1,3 @@
-# vitepress-theme-openapi
+# vitepress-openapi
 
-OpenAPI theme for VitePress.
+VitePress OpenAPI.
diff --git a/dev/multiple-specs/buyMuseumTickets.md b/dev/multiple-specs/buyMuseumTickets.md
index 55ba94a..8e40e7a 100644
--- a/dev/multiple-specs/buyMuseumTickets.md
+++ b/dev/multiple-specs/buyMuseumTickets.md
@@ -1,12 +1,12 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
 import { useRoute, useData } from 'vitepress'
-import { useOpenapi } from 'vitepress-theme-openapi'
+import { useOpenapi } from 'vitepress-openapi'
 import spec from '../../docs/public/openapi.json'
 import specV2 from '../../docs/public/openapi-v2.json'
 
diff --git a/dev/one-page.md b/dev/one-page.md
index 9a4e2c7..3dcfc8d 100644
--- a/dev/one-page.md
+++ b/dev/one-page.md
@@ -1,7 +1,7 @@
 ---
 aside: true
 outline: [1, 2]
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/dev/operations/[operationId].md b/dev/operations/[operationId].md
index 8e86b51..82b6ae7 100644
--- a/dev/operations/[operationId].md
+++ b/dev/operations/[operationId].md
@@ -1,12 +1,12 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
 import { useRoute, useData } from 'vitepress'
-import { useOpenapi, useTheme } from 'vitepress-theme-openapi'
+import { useOpenapi, useTheme } from 'vitepress-openapi'
 
 const route = useRoute()
 
diff --git a/dev/operations/[operationId].paths.js b/dev/operations/[operationId].paths.js
index f9d37b3..c6a303c 100644
--- a/dev/operations/[operationId].paths.js
+++ b/dev/operations/[operationId].paths.js
@@ -1,4 +1,4 @@
-import { OpenApi } from 'vitepress-theme-openapi'
+import { OpenApi } from 'vitepress-openapi'
 import spec from '../../docs/public/openapi.json' assert { type: 'json' }
 
 export default {
@@ -9,7 +9,7 @@ export default {
             return {
                 params: {
                     operationId,
-                    pageTitle: `${summary} - vitepress-theme-openapi`,
+                    pageTitle: `${summary} - vitepress-openapi`,
                 },
             }
         })
diff --git a/dev/plant-store/index.md b/dev/plant-store/index.md
index 7cbe2d5..a25434d 100644
--- a/dev/plant-store/index.md
+++ b/dev/plant-store/index.md
@@ -1,7 +1,7 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/dev/response-statuses/index.md b/dev/response-statuses/index.md
index 17ad339..263c20b 100644
--- a/dev/response-statuses/index.md
+++ b/dev/response-statuses/index.md
@@ -1,7 +1,7 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/dev/response-types/index.md b/dev/response-types/index.md
index 920fede..b499852 100644
--- a/dev/response-types/index.md
+++ b/dev/response-types/index.md
@@ -1,7 +1,7 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/dev/scalar-galaxy/index.md b/dev/scalar-galaxy/index.md
index 415e117..eca866a 100644
--- a/dev/scalar-galaxy/index.md
+++ b/dev/scalar-galaxy/index.md
@@ -1,7 +1,7 @@
 ---
 aside: true
 outline: [1, 2]
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/dev/schemas/index.md b/dev/schemas/index.md
index e292d69..ed1f299 100644
--- a/dev/schemas/index.md
+++ b/dev/schemas/index.md
@@ -1,7 +1,7 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts
index b79aab6..7a6ce70 100644
--- a/docs/.vitepress/config.mts
+++ b/docs/.vitepress/config.mts
@@ -1,15 +1,15 @@
 import { resolve } from 'node:path'
 import spec from '../public/openapi.json' assert { type: 'json' }
 import { defineConfigWithTheme } from 'vitepress'
-import { useSidebar } from 'vitepress-theme-openapi'
+import { useSidebar } from 'vitepress-openapi'
 
 const sidebar = useSidebar({ spec })
 
 const gaId = 'G-ELG8ZW19X4'
 
 export default defineConfigWithTheme({
-  title: 'VitePress Theme OpenAPI',
-  description: 'A VitePress theme for OpenAPI',
+  title: 'VitePress OpenAPI',
+  description: 'Generate VitePress API Documentation from OpenAPI specs.',
   themeConfig: {
     nav: [],
 
@@ -105,7 +105,7 @@ export default defineConfigWithTheme({
     ],
 
     socialLinks: [
-      { icon: 'github', link: 'https://github.com/enzonotario/vitepress-theme-openapi' },
+      { icon: 'github', link: 'https://github.com/enzonotario/vitepress-openapi' },
     ],
 
     outline: {
@@ -113,7 +113,7 @@ export default defineConfigWithTheme({
     },
 
     footer: {
-      message: 'Released under the <a href="https://github.com/enzonotario/vitepress-theme-openapi/blob/main/LICENSE">MIT License</a>.',
+      message: 'Released under the <a href="https://github.com/enzonotario/vitepress-openapi/blob/main/LICENSE">MIT License</a>.',
       copyright: 'Copyright © 2023-present <a href="https://enzonotario.me">Enzo Notario</a>',
     },
   },
@@ -134,7 +134,7 @@ export default defineConfigWithTheme({
   vite: {
     resolve: {
       alias: {
-        'vitepress-theme-openapi': resolve(__dirname, '../../'),
+        'vitepress-openapi': resolve(__dirname, '../../'),
       },
     },
   },
diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts
index 3eace6f..d9f0a02 100644
--- a/docs/.vitepress/theme/index.ts
+++ b/docs/.vitepress/theme/index.ts
@@ -1,7 +1,7 @@
-import { theme, useOpenapi, useTheme } from 'vitepress-theme-openapi'
+import { theme, useOpenapi, useTheme } from 'vitepress-openapi'
 import DefaultTheme from 'vitepress/theme'
 import spec from '../../public/openapi.json' assert {type: 'json'}
-import 'vitepress-theme-openapi/dist/style.css'
+import 'vitepress-openapi/dist/style.css'
 
 export default {
   ...DefaultTheme,
diff --git a/docs/composables/usePlayground.md b/docs/composables/usePlayground.md
index 143257d..da760a7 100644
--- a/docs/composables/usePlayground.md
+++ b/docs/composables/usePlayground.md
@@ -5,7 +5,7 @@ The `usePlayground` composable provides functions to manage the Playground.
 You can use the `usePlayground` composable to configure the Playground in your `.vitepress/theme/index.js` file, or in any `.md` page/file.
 
 ```ts
-import { usePlayground } from 'vitepress-theme-openapi'
+import { usePlayground } from 'vitepress-openapi'
 
 export default {
     async enhanceApp({ app, router, siteData }) {
diff --git a/docs/composables/useTheme.md b/docs/composables/useTheme.md
index 90b489d..dfcd8e7 100644
--- a/docs/composables/useTheme.md
+++ b/docs/composables/useTheme.md
@@ -5,7 +5,7 @@ The `useTheme` composable provides functions to configure the theme.
 You can use the `useTheme` composable to configure the theme in your `.vitepress/theme/index.js` file, or in any `.md` page/file.
 
 ```ts
-import { useTheme } from 'vitepress-theme-openapi'
+import { useTheme } from 'vitepress-openapi'
 
 export default {
     async enhanceApp({app, router, siteData}) {
diff --git a/docs/example/one-page.md b/docs/example/one-page.md
index 3273ab0..e413780 100644
--- a/docs/example/one-page.md
+++ b/docs/example/one-page.md
@@ -1,7 +1,7 @@
 ---
 aside: true
 outline: [1, 2]
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/docs/example/operations/[operationId].md b/docs/example/operations/[operationId].md
index 8e86b51..82b6ae7 100644
--- a/docs/example/operations/[operationId].md
+++ b/docs/example/operations/[operationId].md
@@ -1,12 +1,12 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
 import { useRoute, useData } from 'vitepress'
-import { useOpenapi, useTheme } from 'vitepress-theme-openapi'
+import { useOpenapi, useTheme } from 'vitepress-openapi'
 
 const route = useRoute()
 
diff --git a/docs/example/operations/[operationId].paths.js b/docs/example/operations/[operationId].paths.js
index 9094d58..98f6021 100644
--- a/docs/example/operations/[operationId].paths.js
+++ b/docs/example/operations/[operationId].paths.js
@@ -1,4 +1,4 @@
-import { useOpenapi, httpVerbs } from 'vitepress-theme-openapi'
+import { useOpenapi, httpVerbs } from 'vitepress-openapi'
 import spec from '../../public/openapi.json' assert { type: 'json' }
 
 export default {
@@ -18,7 +18,7 @@ export default {
                         return {
                             params: {
                                 operationId,
-                                pageTitle: `${summary} - vitepress-theme-openapi`,
+                                pageTitle: `${summary} - vitepress-openapi`,
                             },
                         }
                     })
diff --git a/docs/example/response-statuses/index.md b/docs/example/response-statuses/index.md
index 1e2a50f..51e2f34 100644
--- a/docs/example/response-statuses/index.md
+++ b/docs/example/response-statuses/index.md
@@ -1,7 +1,7 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/docs/example/response-types/index.md b/docs/example/response-types/index.md
index a4ee012..561c341 100644
--- a/docs/example/response-types/index.md
+++ b/docs/example/response-types/index.md
@@ -1,7 +1,7 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/docs/example/schemas/index.md b/docs/example/schemas/index.md
index 59a2e36..6930247 100644
--- a/docs/example/schemas/index.md
+++ b/docs/example/schemas/index.md
@@ -1,7 +1,7 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md
index 7dee5a8..b53b56a 100644
--- a/docs/guide/getting-started.md
+++ b/docs/guide/getting-started.md
@@ -1,6 +1,6 @@
 # Getting Started
 
-This guide will walk you through the steps to set up and use the `vitepress-theme-openapi` in your VitePress project.
+This guide will walk you through the steps to set up and use the `vitepress-openapi` in your VitePress project.
 
 ## Demo
 
@@ -22,13 +22,13 @@ To install the theme in your VitePress project, run one of the following command
 manager:
 
 ```bash
-npm install vitepress-theme-openapi
+npm install vitepress-openapi
 
-pnpm add vitepress-theme-openapi
+pnpm add vitepress-openapi
 
-yarn add vitepress-theme-openapi
+yarn add vitepress-openapi
 
-bun install vitepress-theme-openapi
+bun install vitepress-openapi
 ```
 
 ## Usage
@@ -45,8 +45,8 @@ In your `.vitepress/theme/index.js`, import the theme and configure it as follow
 import DefaultTheme from 'vitepress/theme'
 import type { Theme } from 'vitepress'
 
-import { theme, useOpenapi } from 'vitepress-theme-openapi'
-import 'vitepress-theme-openapi/dist/style.css'
+import { theme, useOpenapi } from 'vitepress-openapi'
+import 'vitepress-openapi/dist/style.css'
 
 import spec from '../../public/openapi.json' assert { type: 'json' }
 
diff --git a/docs/index.md b/docs/index.md
index b2b7316..c0b1f11 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -2,9 +2,8 @@
 layout: home
 
 hero:
-  name: "VitePress Theme"
-  text: "OpenAPI"
-  tagline: "Generate documentation from OpenAPI specifications."
+  name: "VitePress OpenAPI"
+  tagline: "Integrate OpenAPI specifications into your VitePress documentation."
   actions:
     - theme: brand
       text: Get Started
@@ -14,15 +13,15 @@ hero:
       link: /example/operations/getAllData
 
 features:
+  - title: Powered by VitePress
+    details: "Leverage the power of VitePress to create fast and efficient documentation sites."
   - title: Internationalization (i18n) Support
-    details: "This theme provides built-in support for internationalization using VueI18n. Easily configure multiple languages for your documentation."
-  - title: TailwindCSS Integration
-    details: "Style your content effortlessly with the power of TailwindCSS, which is seamlessly integrated into the theme."
-  - title: Custom Components
-    details: "A collection of custom Vue components is included, making it easy to extend and customize your documentation."
+    details: "English and Spanish translations are included out of the box."
+  - title: Custom Slots
+    details: "Customize the layout of your documentation with custom slots."
 
 ---
 
 ## Notice
 
-This theme is still under development. Please report any issues or suggestions in the [GitHub repository](https://github.com/enzonotario/vitepress-theme-openapi/issues).
+This project is still under development. Please report any issues or suggestions in the [GitHub repository](https://github.com/enzonotario/vitepress-openapi/issues).
diff --git a/docs/layouts/all-operations.md b/docs/layouts/all-operations.md
index 8340bc8..4e41308 100644
--- a/docs/layouts/all-operations.md
+++ b/docs/layouts/all-operations.md
@@ -11,7 +11,7 @@ You can use the `OASpec` component to render all operations in a single page lay
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/docs/layouts/custom-slots.md b/docs/layouts/custom-slots.md
index bade5df..c48697d 100644
--- a/docs/layouts/custom-slots.md
+++ b/docs/layouts/custom-slots.md
@@ -15,7 +15,7 @@ The `description` slot allows you to customize the operation description.
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/docs/layouts/multiple-specs.md b/docs/layouts/multiple-specs.md
index 3a2bfa9..572b1a5 100644
--- a/docs/layouts/multiple-specs.md
+++ b/docs/layouts/multiple-specs.md
@@ -1,7 +1,7 @@
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 # Multiple specs
@@ -16,7 +16,7 @@ In this example, we are using two different specs to render the same operation.
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
diff --git a/docs/layouts/one-operation.md b/docs/layouts/one-operation.md
index 7299121..31ff1be 100644
--- a/docs/layouts/one-operation.md
+++ b/docs/layouts/one-operation.md
@@ -21,7 +21,7 @@ To create operation pages, create a directory named `operations` in the `docs` d
 Example of `[operationId].paths.js`:
 
 ```ts
-import { useOpenapi, httpVerbs } from 'vitepress-theme-openapi'
+import { useOpenapi, httpVerbs } from 'vitepress-openapi'
 import spec from '../public/openapi.json' assert { type: 'json' }
 
 export default {
@@ -41,7 +41,7 @@ export default {
                         return {
                             params: {
                                 operationId,
-                                pageTitle: `${summary} - vitepress-theme-openapi`,
+                                pageTitle: `${summary} - vitepress-openapi`,
                             },
                         }
                     })
@@ -56,7 +56,7 @@ Example of `[operationId].md`:
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
@@ -78,12 +78,12 @@ You can also configure multiple options in this `[operationId].md` file, for exa
 ---
 aside: false
 outline: false
-title: vitepress-theme-openapi
+title: vitepress-openapi
 ---
 
 <script setup lang="ts">
 import { useRoute, useData } from 'vitepress'
-import { useOpenapi, useTheme } from 'vitepress-theme-openapi'
+import { useOpenapi, useTheme } from 'vitepress-openapi'
 
 const route = useRoute()
 
diff --git a/docs/layouts/sidebar.md b/docs/layouts/sidebar.md
index ca8fd20..9b82804 100644
--- a/docs/layouts/sidebar.md
+++ b/docs/layouts/sidebar.md
@@ -8,7 +8,7 @@ outline: false
 To automatically generate sidebar items, you can use the `useSidebar` function. Configure your `.vitepress/config.js` as follows:
 
 ```ts
-import { useSidebar, useOpenapi } from 'vitepress-theme-openapi'
+import { useSidebar, useOpenapi } from 'vitepress-openapi'
 import spec from '../public/openapi.json' assert { type: 'json' }
 
 const sidebar = useSidebar({ 
diff --git a/docs/tailwind.config.js b/docs/tailwind.config.js
index 821b2e1..ef9e596 100644
--- a/docs/tailwind.config.js
+++ b/docs/tailwind.config.js
@@ -3,7 +3,7 @@ module.exports = {
     './.vitepress/theme/**/*.{js,vue,ts,json,md}',
     './.vitepress/config.js',
     './**/*.md',
-    'node_modules/vitepress-theme-openapi/**/*.{js,jsx,ts,tsx}',
+    'node_modules/vitepress-openapi/**/*.{js,jsx,ts,tsx}',
   ],
   darkMode: 'class',
   plugins: [],
diff --git a/package.json b/package.json
index 3210997..b8a689e 100644
--- a/package.json
+++ b/package.json
@@ -1,29 +1,29 @@
 {
-  "name": "vitepress-theme-openapi",
+  "name": "vitepress-openapi",
   "type": "module",
-  "version": "0.0.3-alpha.34",
+  "version": "0.0.3-alpha.35",
   "packageManager": "pnpm@9.1.1",
-  "homepage": "https://vitepress-theme-openapi.vercel.app/",
+  "homepage": "https://vitepress-openapi.vercel.app/",
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/enzonotario/vitepress-theme-openapi.git"
+    "url": "git+https://github.com/enzonotario/vitepress-openapi.git"
   },
   "author": "Enzo Notario <hi@enzonotario.me>",
   "license": "MIT",
   "keywords": [
     "vitepress",
-    "theme",
+    "vitepress-theme",
     "openapi"
   ],
   "exports": {
     ".": {
-      "import": "./dist/vitepress-theme-openapi.es.js",
-      "require": "./dist/vitepress-theme-openapi.umd.js"
+      "import": "./dist/vitepress-openapi.es.js",
+      "require": "./dist/vitepress-openapi.umd.js"
     },
     "./dist/style.css": "./dist/style.css"
   },
-  "main": "./dist/vitepress-theme-openapi.es.js",
-  "module": "./dist/vitepress-theme-openapi.es.js",
+  "main": "./dist/vitepress-openapi.es.js",
+  "module": "./dist/vitepress-openapi.es.js",
   "types": "./dist/types/index.d.ts",
   "files": [
     "dist",
diff --git a/src/components/Common/OACodeBlock.vue b/src/components/Common/OACodeBlock.vue
index 7635ce0..9363cb8 100644
--- a/src/components/Common/OACodeBlock.vue
+++ b/src/components/Common/OACodeBlock.vue
@@ -1,7 +1,7 @@
 <script setup>
 import { computed, ref, watch } from 'vue'
-import { useShiki } from 'vitepress-theme-openapi/composables/useShiki'
-import { useTheme } from 'vitepress-theme-openapi'
+import { useShiki } from 'vitepress-openapi/composables/useShiki'
+import { useTheme } from 'vitepress-openapi'
 import VueJsonPretty from 'vue-json-pretty'
 import 'vue-json-pretty/lib/styles.css'
 import { destr } from 'destr'
diff --git a/src/components/Common/OAFooter.vue b/src/components/Common/OAFooter.vue
index 6d47a96..1c46caa 100644
--- a/src/components/Common/OAFooter.vue
+++ b/src/components/Common/OAFooter.vue
@@ -4,11 +4,11 @@
 <template>
   <span class="text-sm text-gray-700 dark:text-gray-300 text-center">
     {{ $t('Powered by') }} <a
-      href="https://github.com/enzonotario/vitepress-theme-openapi"
+      href="https://github.com/enzonotario/vitepress-openapi"
       target="_blank"
       class="text-blue-700 dark:text-blue-300"
     >
-      VitePress Theme OpenAPI
+      VitePress OpenAPI
     </a>
   </span>
 </template>
diff --git a/src/components/Common/OAHeading.vue b/src/components/Common/OAHeading.vue
index 9b3efda..ed9f181 100644
--- a/src/components/Common/OAHeading.vue
+++ b/src/components/Common/OAHeading.vue
@@ -1,7 +1,7 @@
 <script setup>
 import slugify from '@sindresorhus/slugify'
 import { computed, useSlots } from 'vue'
-import { useTheme } from 'vitepress-theme-openapi'
+import { useTheme } from 'vitepress-openapi'
 import { cn } from '../../lib/utils'
 
 const props = defineProps({
diff --git a/src/components/Common/OAInfo.vue b/src/components/Common/OAInfo.vue
index e27d336..7c109ee 100644
--- a/src/components/Common/OAInfo.vue
+++ b/src/components/Common/OAInfo.vue
@@ -1,5 +1,5 @@
 <script setup>
-import { Badge } from 'vitepress-theme-openapi/components/ui/badge'
+import { Badge } from 'vitepress-openapi/components/ui/badge'
 
 const { info, externalDocs } = defineProps({
   info: {
diff --git a/src/components/Common/OAJSONEditor.vue b/src/components/Common/OAJSONEditor.vue
index 151e5ca..f245570 100644
--- a/src/components/Common/OAJSONEditor.vue
+++ b/src/components/Common/OAJSONEditor.vue
@@ -1,7 +1,7 @@
 <script setup>
 import JsonEditorVue from 'json-editor-vue'
 import { computed } from 'vue'
-import { useTheme } from 'vitepress-theme-openapi'
+import { useTheme } from 'vitepress-openapi'
 
 const props = defineProps({
   modelValue: {
diff --git a/src/components/Common/OAOperation.vue b/src/components/Common/OAOperation.vue
index 90c7170..55830cb 100644
--- a/src/components/Common/OAOperation.vue
+++ b/src/components/Common/OAOperation.vue
@@ -1,6 +1,6 @@
 <script setup>
 import { computed, useSlots } from 'vue'
-import { Badge } from 'vitepress-theme-openapi/components/ui/badge'
+import { Badge } from 'vitepress-openapi/components/ui/badge'
 
 const props = defineProps({
   operationId: {
diff --git a/src/components/Common/OASpec.vue b/src/components/Common/OASpec.vue
index 3a8dbfc..6f5d8e6 100644
--- a/src/components/Common/OASpec.vue
+++ b/src/components/Common/OASpec.vue
@@ -1,7 +1,7 @@
 <script setup>
-import { OpenApi, useOpenapi } from 'vitepress-theme-openapi'
-import OAInfo from 'vitepress-theme-openapi/components/Common/OAInfo.vue'
-import OAServers from 'vitepress-theme-openapi/components/Common/OAServers.vue'
+import { OpenApi, useOpenapi } from 'vitepress-openapi'
+import OAInfo from 'vitepress-openapi/components/Common/OAInfo.vue'
+import OAServers from 'vitepress-openapi/components/Common/OAServers.vue'
 
 const props = defineProps({
   spec: {
diff --git a/src/components/Path/OAPath.vue b/src/components/Path/OAPath.vue
index 4e02415..2ee9b85 100644
--- a/src/components/Path/OAPath.vue
+++ b/src/components/Path/OAPath.vue
@@ -1,7 +1,7 @@
 <script setup>
 import { defineProps } from 'vue'
-import { OpenApi, useOpenapi } from 'vitepress-theme-openapi'
-import { useTheme } from 'vitepress-theme-openapi/composables/useTheme'
+import { OpenApi, useOpenapi } from 'vitepress-openapi'
+import { useTheme } from 'vitepress-openapi/composables/useTheme'
 
 const props = defineProps({
   id: {
diff --git a/src/components/Path/OAPathEndpoint.vue b/src/components/Path/OAPathEndpoint.vue
index 52fcb46..b6a6122 100644
--- a/src/components/Path/OAPathEndpoint.vue
+++ b/src/components/Path/OAPathEndpoint.vue
@@ -1,5 +1,5 @@
 <script setup>
-import { Badge } from 'vitepress-theme-openapi/components/ui/badge'
+import { Badge } from 'vitepress-openapi/components/ui/badge'
 
 const props = defineProps({
   path: {
diff --git a/src/components/Playground/OAPlaygroundParameterInput.vue b/src/components/Playground/OAPlaygroundParameterInput.vue
index 9dd1d2f..d96e6f8 100644
--- a/src/components/Playground/OAPlaygroundParameterInput.vue
+++ b/src/components/Playground/OAPlaygroundParameterInput.vue
@@ -7,8 +7,8 @@ import {
   SelectItem,
   SelectTrigger,
   SelectValue,
-} from 'vitepress-theme-openapi/components/ui/select'
-import { Input } from 'vitepress-theme-openapi/components/ui/input'
+} from 'vitepress-openapi/components/ui/select'
+import { Input } from 'vitepress-openapi/components/ui/input'
 
 const props = defineProps({
   parameter: {
diff --git a/src/components/Playground/OAPlaygroundParameters.vue b/src/components/Playground/OAPlaygroundParameters.vue
index 7925e2f..00169c5 100644
--- a/src/components/Playground/OAPlaygroundParameters.vue
+++ b/src/components/Playground/OAPlaygroundParameters.vue
@@ -1,11 +1,11 @@
 <script setup lang="ts">
 import { computed, defineEmits, defineProps, ref, watch } from 'vue'
-import OAJSONEditor from 'vitepress-theme-openapi/components/Common/OAJSONEditor.vue'
-import { propertiesTypesJsonRecursive } from 'vitepress-theme-openapi/lib/generateSchemaJson'
-import { usePlayground, useTheme } from 'vitepress-theme-openapi'
+import OAJSONEditor from 'vitepress-openapi/components/Common/OAJSONEditor.vue'
+import { propertiesTypesJsonRecursive } from 'vitepress-openapi/lib/generateSchemaJson'
+import { usePlayground, useTheme } from 'vitepress-openapi'
 import { useStorage } from '@vueuse/core'
-import OAPlaygroundParameterInput from 'vitepress-theme-openapi/components/Playground/OAPlaygroundParameterInput.vue'
-import OAPlaygroundSecurityInput from 'vitepress-theme-openapi/components/Playground/OAPlaygroundSecurityInput.vue'
+import OAPlaygroundParameterInput from 'vitepress-openapi/components/Playground/OAPlaygroundParameterInput.vue'
+import OAPlaygroundSecurityInput from 'vitepress-openapi/components/Playground/OAPlaygroundSecurityInput.vue'
 
 interface SecurityScheme {
   type: string
diff --git a/src/components/Playground/OAPlaygroundSecurityInput.vue b/src/components/Playground/OAPlaygroundSecurityInput.vue
index a94d0b9..40fe2be 100644
--- a/src/components/Playground/OAPlaygroundSecurityInput.vue
+++ b/src/components/Playground/OAPlaygroundSecurityInput.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { computed, defineEmits, defineProps } from 'vue'
-import { usePlayground } from 'vitepress-theme-openapi'
-import { Input } from 'vitepress-theme-openapi/components/ui/input'
+import { usePlayground } from 'vitepress-openapi'
+import { Input } from 'vitepress-openapi/components/ui/input'
 
 const props = defineProps({
   scheme: {
diff --git a/src/components/Response/OAResponse.vue b/src/components/Response/OAResponse.vue
index 250a439..9dd0825 100644
--- a/src/components/Response/OAResponse.vue
+++ b/src/components/Response/OAResponse.vue
@@ -7,8 +7,8 @@ import {
   SelectItem,
   SelectTrigger,
   SelectValue,
-} from 'vitepress-theme-openapi/components/ui/select'
-import { Label } from 'vitepress-theme-openapi/components/ui/label'
+} from 'vitepress-openapi/components/ui/select'
+import { Label } from 'vitepress-openapi/components/ui/label'
 
 const props = defineProps({
   operationId: {
diff --git a/src/components/Response/OAResponses.vue b/src/components/Response/OAResponses.vue
index 9405ac7..a71a5be 100644
--- a/src/components/Response/OAResponses.vue
+++ b/src/components/Response/OAResponses.vue
@@ -1,6 +1,6 @@
 <script setup>
 import { computed, defineProps, ref } from 'vue'
-import { Tabs, TabsContent, TabsList, TabsTrigger } from 'vitepress-theme-openapi/components/ui/tabs'
+import { Tabs, TabsContent, TabsList, TabsTrigger } from 'vitepress-openapi/components/ui/tabs'
 import {
   Select,
   SelectContent,
@@ -8,9 +8,9 @@ import {
   SelectItem,
   SelectTrigger,
   SelectValue,
-} from 'vitepress-theme-openapi/components/ui/select'
+} from 'vitepress-openapi/components/ui/select'
 import { TabsIndicator } from 'radix-vue'
-import { useTheme } from 'vitepress-theme-openapi'
+import { useTheme } from 'vitepress-openapi'
 
 const props = defineProps({
   operationId: {
diff --git a/src/components/Schema/OASchemaProperty.vue b/src/components/Schema/OASchemaProperty.vue
index 6fabfb9..9023088 100644
--- a/src/components/Schema/OASchemaProperty.vue
+++ b/src/components/Schema/OASchemaProperty.vue
@@ -4,7 +4,7 @@ import {
   Collapsible,
   CollapsibleContent,
   CollapsibleTrigger,
-} from 'vitepress-theme-openapi/components/ui/collapsible'
+} from 'vitepress-openapi/components/ui/collapsible'
 import OASchemaBody from './OASchemaBody.vue'
 
 const props = defineProps({
diff --git a/src/components/Schema/OASchemaTabs.vue b/src/components/Schema/OASchemaTabs.vue
index 72889a2..8bba446 100644
--- a/src/components/Schema/OASchemaTabs.vue
+++ b/src/components/Schema/OASchemaTabs.vue
@@ -1,13 +1,13 @@
 <script setup>
 import { computed, ref } from 'vue'
 import { TabsIndicator } from 'radix-vue'
-import { useTheme } from 'vitepress-theme-openapi/composables/useTheme'
-import { Tabs, TabsContent, TabsList, TabsTrigger } from 'vitepress-theme-openapi/components/ui/tabs'
-import { generateSchemaJson } from 'vitepress-theme-openapi/lib/generateSchemaJson'
-import { hasExample } from 'vitepress-theme-openapi/lib/hasExample'
-import { generateSchemaXml } from 'vitepress-theme-openapi/lib/generateSchemaXml'
-import { Checkbox } from 'vitepress-theme-openapi/components/ui/checkbox'
-import { Label } from 'vitepress-theme-openapi/components/ui/label'
+import { useTheme } from 'vitepress-openapi/composables/useTheme'
+import { Tabs, TabsContent, TabsList, TabsTrigger } from 'vitepress-openapi/components/ui/tabs'
+import { generateSchemaJson } from 'vitepress-openapi/lib/generateSchemaJson'
+import { hasExample } from 'vitepress-openapi/lib/hasExample'
+import { generateSchemaXml } from 'vitepress-openapi/lib/generateSchemaXml'
+import { Checkbox } from 'vitepress-openapi/components/ui/checkbox'
+import { Label } from 'vitepress-openapi/components/ui/label'
 
 const props = defineProps({
   schema: {
diff --git a/src/components/Security/OASecurity.vue b/src/components/Security/OASecurity.vue
index 9f34430..8cc8a8f 100644
--- a/src/components/Security/OASecurity.vue
+++ b/src/components/Security/OASecurity.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { computed, defineProps, onMounted } from 'vue'
-import OASecurityContent from 'vitepress-theme-openapi/components/Security/OASecurityContent.vue'
+import OASecurityContent from 'vitepress-openapi/components/Security/OASecurityContent.vue'
 import {
   Select,
   SelectContent,
@@ -8,8 +8,8 @@ import {
   SelectItem,
   SelectTrigger,
   SelectValue,
-} from 'vitepress-theme-openapi/components/ui/select'
-import { useTheme } from 'vitepress-theme-openapi'
+} from 'vitepress-openapi/components/ui/select'
+import { useTheme } from 'vitepress-openapi'
 
 const { securitySchemes, headingPrefix } = defineProps({
   securitySchemes: {
diff --git a/src/components/Try/OATryItButton.vue b/src/components/Try/OATryItButton.vue
index bb9422e..2850157 100644
--- a/src/components/Try/OATryItButton.vue
+++ b/src/components/Try/OATryItButton.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { ref } from 'vue'
-import { Button } from 'vitepress-theme-openapi/components/ui/button'
-import { Badge } from 'vitepress-theme-openapi/components/ui/badge'
+import { Button } from 'vitepress-openapi/components/ui/button'
+import { Badge } from 'vitepress-openapi/components/ui/badge'
 
 interface PlaygroundResponse {
   body: any
diff --git a/src/components/Try/OATryWithVariables.vue b/src/components/Try/OATryWithVariables.vue
index d23bb7d..251777c 100644
--- a/src/components/Try/OATryWithVariables.vue
+++ b/src/components/Try/OATryWithVariables.vue
@@ -1,9 +1,9 @@
 <script setup lang="ts">
 import { computed, defineProps, ref } from 'vue'
-import fetchToCurl from 'vitepress-theme-openapi/lib/fetchToCurl'
-import { formatJson } from 'vitepress-theme-openapi/lib/formatJson'
-import OAPlaygroundResponse from 'vitepress-theme-openapi/components/Playground/OAPlaygroundResponse.vue'
-import OAPlaygroundParameters from 'vitepress-theme-openapi/components/Playground/OAPlaygroundParameters.vue'
+import fetchToCurl from 'vitepress-openapi/lib/fetchToCurl'
+import { formatJson } from 'vitepress-openapi/lib/formatJson'
+import OAPlaygroundResponse from 'vitepress-openapi/components/Playground/OAPlaygroundResponse.vue'
+import OAPlaygroundParameters from 'vitepress-openapi/components/Playground/OAPlaygroundParameters.vue'
 
 const props = defineProps({
   operationId: {
diff --git a/src/components/ui/badge/Badge.vue b/src/components/ui/badge/Badge.vue
index 215603c..4cb1c1a 100644
--- a/src/components/ui/badge/Badge.vue
+++ b/src/components/ui/badge/Badge.vue
@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import type { HTMLAttributes } from 'vue'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 import { type BadgeVariants, badgeVariants } from '.'
 
 const props = defineProps<{
diff --git a/src/components/ui/checkbox/Checkbox.vue b/src/components/ui/checkbox/Checkbox.vue
index 22ed611..bce13de 100644
--- a/src/components/ui/checkbox/Checkbox.vue
+++ b/src/components/ui/checkbox/Checkbox.vue
@@ -3,7 +3,7 @@ import { type HTMLAttributes, computed } from 'vue'
 import type { CheckboxRootEmits, CheckboxRootProps } from 'radix-vue'
 import { CheckboxIndicator, CheckboxRoot, useForwardPropsEmits } from 'radix-vue'
 import { Check } from 'lucide-vue-next'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<CheckboxRootProps & { class?: HTMLAttributes['class'] }>()
 const emits = defineEmits<CheckboxRootEmits>()
diff --git a/src/components/ui/input/Input.vue b/src/components/ui/input/Input.vue
index 083dbab..b292b42 100644
--- a/src/components/ui/input/Input.vue
+++ b/src/components/ui/input/Input.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import type { HTMLAttributes } from 'vue'
 import { useVModel } from '@vueuse/core'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<{
   defaultValue?: string | number
diff --git a/src/components/ui/label/Label.vue b/src/components/ui/label/Label.vue
index 84c9d92..7fb0941 100644
--- a/src/components/ui/label/Label.vue
+++ b/src/components/ui/label/Label.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { type HTMLAttributes, computed } from 'vue'
 import { Label, type LabelProps } from 'radix-vue'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<LabelProps & { class?: HTMLAttributes['class'] }>()
 
diff --git a/src/components/ui/select/SelectContent.vue b/src/components/ui/select/SelectContent.vue
index b6dbb11..cea1215 100644
--- a/src/components/ui/select/SelectContent.vue
+++ b/src/components/ui/select/SelectContent.vue
@@ -8,7 +8,7 @@ import {
   SelectViewport,
   useForwardPropsEmits,
 } from 'radix-vue'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 import { SelectScrollDownButton, SelectScrollUpButton } from '.'
 
 defineOptions({
diff --git a/src/components/ui/select/SelectGroup.vue b/src/components/ui/select/SelectGroup.vue
index df0fab6..1b33b70 100644
--- a/src/components/ui/select/SelectGroup.vue
+++ b/src/components/ui/select/SelectGroup.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { type HTMLAttributes, computed } from 'vue'
 import { SelectGroup, type SelectGroupProps } from 'radix-vue'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<SelectGroupProps & { class?: HTMLAttributes['class'] }>()
 
diff --git a/src/components/ui/select/SelectItem.vue b/src/components/ui/select/SelectItem.vue
index b6ce667..9c9ff20 100644
--- a/src/components/ui/select/SelectItem.vue
+++ b/src/components/ui/select/SelectItem.vue
@@ -8,7 +8,7 @@ import {
   useForwardProps,
 } from 'radix-vue'
 import { Check } from 'lucide-vue-next'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<SelectItemProps & { class?: HTMLAttributes['class'] }>()
 
diff --git a/src/components/ui/select/SelectLabel.vue b/src/components/ui/select/SelectLabel.vue
index ece9e2f..c9e63de 100644
--- a/src/components/ui/select/SelectLabel.vue
+++ b/src/components/ui/select/SelectLabel.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import type { HTMLAttributes } from 'vue'
 import { SelectLabel, type SelectLabelProps } from 'radix-vue'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<SelectLabelProps & { class?: HTMLAttributes['class'] }>()
 </script>
diff --git a/src/components/ui/select/SelectScrollDownButton.vue b/src/components/ui/select/SelectScrollDownButton.vue
index 97e4fa4..bb738b0 100644
--- a/src/components/ui/select/SelectScrollDownButton.vue
+++ b/src/components/ui/select/SelectScrollDownButton.vue
@@ -2,7 +2,7 @@
 import { type HTMLAttributes, computed } from 'vue'
 import { SelectScrollDownButton, type SelectScrollDownButtonProps, useForwardProps } from 'radix-vue'
 import { ChevronDown } from 'lucide-vue-next'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<SelectScrollDownButtonProps & { class?: HTMLAttributes['class'] }>()
 
diff --git a/src/components/ui/select/SelectScrollUpButton.vue b/src/components/ui/select/SelectScrollUpButton.vue
index ec37e14..31dc693 100644
--- a/src/components/ui/select/SelectScrollUpButton.vue
+++ b/src/components/ui/select/SelectScrollUpButton.vue
@@ -2,7 +2,7 @@
 import { type HTMLAttributes, computed } from 'vue'
 import { SelectScrollUpButton, type SelectScrollUpButtonProps, useForwardProps } from 'radix-vue'
 import { ChevronUp } from 'lucide-vue-next'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<SelectScrollUpButtonProps & { class?: HTMLAttributes['class'] }>()
 
diff --git a/src/components/ui/select/SelectSeparator.vue b/src/components/ui/select/SelectSeparator.vue
index b8582ec..839d6d0 100644
--- a/src/components/ui/select/SelectSeparator.vue
+++ b/src/components/ui/select/SelectSeparator.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { type HTMLAttributes, computed } from 'vue'
 import { SelectSeparator, type SelectSeparatorProps } from 'radix-vue'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<SelectSeparatorProps & { class?: HTMLAttributes['class'] }>()
 
diff --git a/src/components/ui/select/SelectTrigger.vue b/src/components/ui/select/SelectTrigger.vue
index 7b3c1ce..80ea75c 100644
--- a/src/components/ui/select/SelectTrigger.vue
+++ b/src/components/ui/select/SelectTrigger.vue
@@ -2,7 +2,7 @@
 import { type HTMLAttributes, computed } from 'vue'
 import { SelectIcon, SelectTrigger, type SelectTriggerProps, useForwardProps } from 'radix-vue'
 import { ChevronDown } from 'lucide-vue-next'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<SelectTriggerProps & { class?: HTMLAttributes['class'] }>()
 
diff --git a/src/components/ui/tabs/TabsContent.vue b/src/components/ui/tabs/TabsContent.vue
index 2c0bab5..affcfd9 100644
--- a/src/components/ui/tabs/TabsContent.vue
+++ b/src/components/ui/tabs/TabsContent.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { type HTMLAttributes, computed } from 'vue'
 import { TabsContent, type TabsContentProps } from 'radix-vue'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<TabsContentProps & { class?: HTMLAttributes['class'] }>()
 
diff --git a/src/components/ui/tabs/TabsList.vue b/src/components/ui/tabs/TabsList.vue
index d78f1e8..36c7f30 100644
--- a/src/components/ui/tabs/TabsList.vue
+++ b/src/components/ui/tabs/TabsList.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { type HTMLAttributes, computed } from 'vue'
 import { TabsList, type TabsListProps } from 'radix-vue'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 
 const props = defineProps<TabsListProps & { class?: HTMLAttributes['class'] }>()
 
diff --git a/src/components/ui/tabs/TabsTrigger.vue b/src/components/ui/tabs/TabsTrigger.vue
index f5c241b..dc8d369 100644
--- a/src/components/ui/tabs/TabsTrigger.vue
+++ b/src/components/ui/tabs/TabsTrigger.vue
@@ -1,7 +1,7 @@
 <script setup lang="ts">
 import { type HTMLAttributes, computed } from 'vue'
 import { TabsTrigger, type TabsTriggerProps, useForwardProps } from 'radix-vue'
-import { cn } from 'vitepress-theme-openapi/lib/utils'
+import { cn } from 'vitepress-openapi/lib/utils'
 import { type TabsTriggerVariants, tabsTriggerVariants } from './index'
 
 interface Props extends TabsTriggerProps {
diff --git a/src/composables/useShiki.ts b/src/composables/useShiki.ts
index c8aa0b0..35381d2 100644
--- a/src/composables/useShiki.ts
+++ b/src/composables/useShiki.ts
@@ -1,6 +1,6 @@
 import { ref } from 'vue'
 import { createHighlighterCoreSync, createJavaScriptRegexEngine } from 'shiki/core'
-import { useTheme } from 'vitepress-theme-openapi/composables/useTheme'
+import { useTheme } from 'vitepress-openapi/composables/useTheme'
 import type { Highlighter } from 'shiki/bundle/web'
 
 import js from 'shiki/langs/javascript.mjs'
diff --git a/src/composables/useSidebar.ts b/src/composables/useSidebar.ts
index 61c821b..f48a185 100644
--- a/src/composables/useSidebar.ts
+++ b/src/composables/useSidebar.ts
@@ -1,4 +1,4 @@
-import { OpenApi, httpVerbs, useOpenapi } from 'vitepress-theme-openapi'
+import { OpenApi, httpVerbs, useOpenapi } from 'vitepress-openapi'
 
 interface GenerateSidebarGroupsOptions {
   tags?: string[] | null
diff --git a/src/lib/OpenApi.ts b/src/lib/OpenApi.ts
index 76ca4f1..c1013c8 100644
--- a/src/lib/OpenApi.ts
+++ b/src/lib/OpenApi.ts
@@ -1,4 +1,4 @@
-import { httpVerbs } from 'vitepress-theme-openapi'
+import { httpVerbs } from 'vitepress-openapi'
 import { dereferenceSync } from '@trojs/openapi-dereference'
 import { merge } from 'allof-merge'
 import { generateMissingOperationIds } from './generateMissingOperationIds'
diff --git a/src/lib/generateMissingOperationIds.ts b/src/lib/generateMissingOperationIds.ts
index a25c859..a78d755 100644
--- a/src/lib/generateMissingOperationIds.ts
+++ b/src/lib/generateMissingOperationIds.ts
@@ -1,4 +1,4 @@
-import { httpVerbs } from 'vitepress-theme-openapi'
+import { httpVerbs } from 'vitepress-openapi'
 
 export function generateMissingOperationIds(value: any) {
   if (!value.paths) {
diff --git a/src/lib/generateMissingSummary.ts b/src/lib/generateMissingSummary.ts
index 9937f4d..d55a484 100644
--- a/src/lib/generateMissingSummary.ts
+++ b/src/lib/generateMissingSummary.ts
@@ -1,4 +1,4 @@
-import { httpVerbs } from 'vitepress-theme-openapi'
+import { httpVerbs } from 'vitepress-openapi'
 
 export function generateMissingSummary(value: any) {
   if (!value.paths) {
diff --git a/vite.config.ts b/vite.config.ts
index b620721..c0a2a41 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -8,14 +8,14 @@ export default defineConfig({
   ],
   resolve: {
     alias: {
-      'vitepress-theme-openapi': resolve(__dirname, 'src'),
+      'vitepress-openapi': resolve(__dirname, 'src'),
     },
   },
   build: {
     lib: {
       entry: resolve(__dirname, 'src/index.ts'),
-      name: 'vitepress-theme-openapi',
-      fileName: format => `vitepress-theme-openapi.${format}.js`,
+      name: 'vitepress-openapi',
+      fileName: format => `vitepress-openapi.${format}.js`,
     },
     rollupOptions: {
       external: ['vue'],


Test patch:
diff --git a/test/composables/openapi.test.ts b/test/composables/openapi.test.ts
index 117e53b..bc44499 100644
--- a/test/composables/openapi.test.ts
+++ b/test/composables/openapi.test.ts
@@ -1,5 +1,5 @@
 import { describe, expect, it } from 'vitest'
-import { OpenApi } from 'vitepress-theme-openapi'
+import { OpenApi } from 'vitepress-openapi'
 import { spec } from '../testsConstants'
 import { useSidebar } from './src/composables/useSidebar'
 
diff --git a/test/composables/useOpenapiWithNoSpec.test.ts b/test/composables/useOpenapiWithNoSpec.test.ts
index 677a4c0..da3d6e4 100644
--- a/test/composables/useOpenapiWithNoSpec.test.ts
+++ b/test/composables/useOpenapiWithNoSpec.test.ts
@@ -1,5 +1,5 @@
 import { describe, expect, it } from 'vitest'
-import { OpenApi } from 'vitepress-theme-openapi'
+import { OpenApi } from 'vitepress-openapi'
 import { useSidebar } from './src/composables/useSidebar'
 
 describe('useOpenapi with no spec', () => {