feat(astro,vue,nuxt): Introduce APIKeys component - #7225

Merged
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro
Nov 17, 2025
Merged

feat(astro,vue,nuxt): Introduce APIKeys component#7225
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro

Conversation

@wobsoriano

@wobsorianowobsoriano commented Nov 15, 2025

Copy link
Copy Markdown
Member

Description

This PR creates the Astro, Vue and Nuxt versions of the React <APIKeys /> AIO component

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features
    • Added APIKeys UI component for managing API keys across applications
    • Available for integration with Astro, Vue, and Nuxt frameworks
    • Component supports dynamic prop updates and lifecycle management

@changeset-bot

changeset-botBot commented Nov 15, 2025

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 919cc6a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
NameType
@clerk/astroMinor
@clerk/nuxtMinor
@clerk/vueMinor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercelBot commented Nov 15, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
clerk-js-sandboxReadyReadyPreviewCommentNov 15, 2025 10:20pm

@coderabbitai

coderabbitaiBot commented Nov 15, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request introduces a new APIKeys UI component across the Clerk ecosystem. The component is implemented in Vue and re-exported through Astro and Nuxt packages with corresponding type registrations and mount configurations integrated into each framework's component system.

Changes

Cohort / File(s)Summary
Changeset
.changeset/gentle-hats-hope.md
Documents version bumps for @clerk/astro, @clerk/nuxt, and @clerk/vue packages and announces the new APIKeys component.
Astro Components
packages/astro/src/astro-components/index.ts, packages/astro/src/astro-components/interactive/APIKeys.astro
Adds new APIKeys Astro component and exports it from the index. The component wraps InternalUIComponentRenderer with the 'api-keys' component type.
Astro Integration
packages/astro/src/internal/mount-clerk-astro-js-components.ts, packages/astro/src/types.ts
Registers 'api-keys' mount function mapping and extends InternalUIComponentId type union to include 'api-keys'.
Nuxt Integration
packages/nuxt/src/module.ts, packages/nuxt/src/runtime/components/index.ts
Adds APIKeys to Nuxt module's auto-registered components and exports it from the runtime components index.
Vue Component
packages/vue/src/components/index.ts, packages/vue/src/components/ui-components/APIKeys.vue
Introduces new Vue SFC for APIKeys using setup script syntax with ClerkHostRenderer for mount/unmount/updateProps lifecycle management.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Verify that the APIKeys Vue component correctly implements the ClerkHostRenderer lifecycle handlers and prop forwarding
  • Confirm that all type definitions and mount mappings across Astro align properly
  • Check that the Nuxt module exports and runtime components are correctly connected
  • Validate version bump consistency across the three packages

Poem

🗝️ A brand new component hops into view,
APIKeys now available for me and for you,
Across Vue, Astro, and Nuxt it flows,
Type-safe and mounted wherever it goes,
With renderers singing and props on their way! 🐰✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: introducing a new APIKeys component across three frameworks (Astro, Vue, Nuxt).
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch rob/api-keys-vue-astro

Comment @coderabbitai help to get the list of available commands and usage tips.

@wobsoriano
wobsoriano changed the base branch from main to rob/standardize-api-keys-namingNovember 15, 2025 01:21
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from cc9caf2 to c27f090CompareNovember 15, 2025 01:24
Base automatically changed from rob/standardize-api-keys-naming to mainNovember 15, 2025 21:12
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from c27f090 to dfba175CompareNovember 15, 2025 22:17
@wobsoriano
wobsoriano marked this pull request as ready for review November 15, 2025 22:18
@pkg-pr-new

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7225

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@7225

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@7225

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@7225

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@7225

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7225

@clerk/elements

npm i https://pkg.pr.new/@clerk/elements@7225

@clerk/clerk-expo

npm i https://pkg.pr.new/@clerk/clerk-expo@7225

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@7225

@clerk/express

npm i https://pkg.pr.new/@clerk/express@7225

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@7225

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@7225

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@7225

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@7225

@clerk/clerk-react

npm i https://pkg.pr.new/@clerk/clerk-react@7225

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@7225

@clerk/remix

npm i https://pkg.pr.new/@clerk/remix@7225

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@7225

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@7225

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@7225

@clerk/themes

npm i https://pkg.pr.new/@clerk/themes@7225

@clerk/types

npm i https://pkg.pr.new/@clerk/types@7225

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@7225

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@7225

commit: 919cc6a

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/vue/src/components/index.ts (1)

1-13: Consider alphabetical ordering for component exports.

The component exports don't follow a strict alphabetical order. While the current approach works, alphabetically ordering these exports (lines 1-8, 12-13) would improve maintainability and make it easier to locate components.

If alphabetical, APIKeys would appear at or near the top of the list.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bdbb0d9 and 919cc6a.

📒 Files selected for processing (9)
  • .changeset/gentle-hats-hope.md (1 hunks)
  • packages/astro/src/astro-components/index.ts (1 hunks)
  • packages/astro/src/astro-components/interactive/APIKeys.astro (1 hunks)
  • packages/astro/src/internal/mount-clerk-astro-js-components.ts (1 hunks)
  • packages/astro/src/types.ts (1 hunks)
  • packages/nuxt/src/module.ts (1 hunks)
  • packages/nuxt/src/runtime/components/index.ts (1 hunks)
  • packages/vue/src/components/index.ts (1 hunks)
  • packages/vue/src/components/ui-components/APIKeys.vue (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (27)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (nextjs, chrome, 15, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 14)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (expo-web, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (elements, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Publish with pkg-pr-new
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (9)
.changeset/gentle-hats-hope.md (1)

1-7: LGTM! Changeset properly documents the new feature.

The changeset correctly identifies all affected packages with appropriate minor version bumps for the new APIKeys component.

packages/astro/src/astro-components/index.ts (1)

34-34: LGTM! Export follows the established pattern.

The APIKeys export is properly placed in the UI Components section and follows the same pattern as other component exports.

packages/nuxt/src/module.ts (1)

172-173: LGTM! Component registration follows the established pattern.

The APIKeys component is properly added to the auto-registration array with an appropriate section comment. The type constraint ensures the component is actually exported from @clerk/vue.

packages/astro/src/types.ts (1)

75-76: LGTM! Type extension is correct and consistent.

The addition of 'api-keys' to the InternalUIComponentId union type is necessary for type safety and matches the component ID used throughout the integration.

packages/vue/src/components/ui-components/APIKeys.vue (1)

1-17: LGTM! Component follows the established ClerkHostRenderer pattern.

The Vue component correctly:

  • Uses the ClerkHostRenderer wrapper component
  • Binds the appropriate mount/unmount methods
  • Passes through props with proper typing

The type cast to any on line 14 is acceptable given that __unstable__updateProps is marked as an unstable API and likely not part of the public type definitions.

packages/nuxt/src/runtime/components/index.ts (1)

33-33: Export addition verified — no issues found.

The verification confirms that APIKeys is properly exported from @clerk/vue on line 8 of packages/vue/src/components/index.ts. The export pattern is consistent and correct.

packages/astro/src/astro-components/interactive/APIKeys.astro (1)

1-11: LGTM! Component implementation follows the established pattern.

The Astro component wrapper is correctly structured:

  • Properly imports and types the props from @clerk/shared/types
  • Uses InternalUIComponentRenderer with the correct component ID
  • Spreads props as expected
packages/astro/src/internal/mount-clerk-astro-js-components.ts (1)

23-23: LGTM! Pattern is consistent with existing mount mappings.

The mountAPIKeys method is confirmed to exist on the Clerk type in packages/shared/src/types/clerk.ts:586 with the correct signature mountAPIKeys: (targetNode: HTMLDivElement, props?: APIKeysProps) => void;. The addition follows the established pattern, and the satisfies constraint ensures type safety. No issues found.

packages/vue/src/components/index.ts (1)

8-8: APIKeys export is correctly implemented across all frameworks.

Verification confirms:

  • ./ui-components/APIKeys.vue exists and is properly implemented using Vue 3 composition API
  • ✓ Component is exported in the Vue package (line 8)
  • ✓ Component is integrated into Astro (packages/astro/src/astro-components/index.ts:34)
  • ✓ Component is integrated into Nuxt (packages/nuxt/src/runtime/components/index.ts:33)

No issues found.

@wobsoriano
wobsoriano merged commit 6d3c66d into mainNov 17, 2025
47 checks passed
@wobsoriano
wobsoriano deleted the rob/api-keys-vue-astro branch November 17, 2025 11:45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@wobsoriano@octoper@clerk-cookie
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(astro,vue,nuxt): Introduce APIKeys component - #7225

Merged
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro
Nov 17, 2025
Merged

feat(astro,vue,nuxt): Introduce APIKeys component#7225
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro

Conversation

@wobsoriano

@wobsorianowobsoriano commented Nov 15, 2025

Copy link
Copy Markdown
Member

Description

This PR creates the Astro, Vue and Nuxt versions of the React <APIKeys /> AIO component

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features
    • Added APIKeys UI component for managing API keys across applications
    • Available for integration with Astro, Vue, and Nuxt frameworks
    • Component supports dynamic prop updates and lifecycle management

@changeset-bot

changeset-botBot commented Nov 15, 2025

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 919cc6a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
NameType
@clerk/astroMinor
@clerk/nuxtMinor
@clerk/vueMinor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercelBot commented Nov 15, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
clerk-js-sandboxReadyReadyPreviewCommentNov 15, 2025 10:20pm

@coderabbitai

coderabbitaiBot commented Nov 15, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request introduces a new APIKeys UI component across the Clerk ecosystem. The component is implemented in Vue and re-exported through Astro and Nuxt packages with corresponding type registrations and mount configurations integrated into each framework's component system.

Changes

Cohort / File(s)Summary
Changeset
.changeset/gentle-hats-hope.md
Documents version bumps for @clerk/astro, @clerk/nuxt, and @clerk/vue packages and announces the new APIKeys component.
Astro Components
packages/astro/src/astro-components/index.ts, packages/astro/src/astro-components/interactive/APIKeys.astro
Adds new APIKeys Astro component and exports it from the index. The component wraps InternalUIComponentRenderer with the 'api-keys' component type.
Astro Integration
packages/astro/src/internal/mount-clerk-astro-js-components.ts, packages/astro/src/types.ts
Registers 'api-keys' mount function mapping and extends InternalUIComponentId type union to include 'api-keys'.
Nuxt Integration
packages/nuxt/src/module.ts, packages/nuxt/src/runtime/components/index.ts
Adds APIKeys to Nuxt module's auto-registered components and exports it from the runtime components index.
Vue Component
packages/vue/src/components/index.ts, packages/vue/src/components/ui-components/APIKeys.vue
Introduces new Vue SFC for APIKeys using setup script syntax with ClerkHostRenderer for mount/unmount/updateProps lifecycle management.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Verify that the APIKeys Vue component correctly implements the ClerkHostRenderer lifecycle handlers and prop forwarding
  • Confirm that all type definitions and mount mappings across Astro align properly
  • Check that the Nuxt module exports and runtime components are correctly connected
  • Validate version bump consistency across the three packages

Poem

🗝️ A brand new component hops into view,
APIKeys now available for me and for you,
Across Vue, Astro, and Nuxt it flows,
Type-safe and mounted wherever it goes,
With renderers singing and props on their way! 🐰✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: introducing a new APIKeys component across three frameworks (Astro, Vue, Nuxt).
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch rob/api-keys-vue-astro

Comment @coderabbitai help to get the list of available commands and usage tips.

@wobsoriano
wobsoriano changed the base branch from main to rob/standardize-api-keys-namingNovember 15, 2025 01:21
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from cc9caf2 to c27f090CompareNovember 15, 2025 01:24
Base automatically changed from rob/standardize-api-keys-naming to mainNovember 15, 2025 21:12
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from c27f090 to dfba175CompareNovember 15, 2025 22:17
@wobsoriano
wobsoriano marked this pull request as ready for review November 15, 2025 22:18
@pkg-pr-new

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7225

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@7225

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@7225

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@7225

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@7225

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7225

@clerk/elements

npm i https://pkg.pr.new/@clerk/elements@7225

@clerk/clerk-expo

npm i https://pkg.pr.new/@clerk/clerk-expo@7225

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@7225

@clerk/express

npm i https://pkg.pr.new/@clerk/express@7225

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@7225

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@7225

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@7225

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@7225

@clerk/clerk-react

npm i https://pkg.pr.new/@clerk/clerk-react@7225

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@7225

@clerk/remix

npm i https://pkg.pr.new/@clerk/remix@7225

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@7225

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@7225

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@7225

@clerk/themes

npm i https://pkg.pr.new/@clerk/themes@7225

@clerk/types

npm i https://pkg.pr.new/@clerk/types@7225

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@7225

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@7225

commit: 919cc6a

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/vue/src/components/index.ts (1)

1-13: Consider alphabetical ordering for component exports.

The component exports don't follow a strict alphabetical order. While the current approach works, alphabetically ordering these exports (lines 1-8, 12-13) would improve maintainability and make it easier to locate components.

If alphabetical, APIKeys would appear at or near the top of the list.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bdbb0d9 and 919cc6a.

📒 Files selected for processing (9)
  • .changeset/gentle-hats-hope.md (1 hunks)
  • packages/astro/src/astro-components/index.ts (1 hunks)
  • packages/astro/src/astro-components/interactive/APIKeys.astro (1 hunks)
  • packages/astro/src/internal/mount-clerk-astro-js-components.ts (1 hunks)
  • packages/astro/src/types.ts (1 hunks)
  • packages/nuxt/src/module.ts (1 hunks)
  • packages/nuxt/src/runtime/components/index.ts (1 hunks)
  • packages/vue/src/components/index.ts (1 hunks)
  • packages/vue/src/components/ui-components/APIKeys.vue (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (27)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (nextjs, chrome, 15, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 14)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (expo-web, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (elements, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Publish with pkg-pr-new
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (9)
.changeset/gentle-hats-hope.md (1)

1-7: LGTM! Changeset properly documents the new feature.

The changeset correctly identifies all affected packages with appropriate minor version bumps for the new APIKeys component.

packages/astro/src/astro-components/index.ts (1)

34-34: LGTM! Export follows the established pattern.

The APIKeys export is properly placed in the UI Components section and follows the same pattern as other component exports.

packages/nuxt/src/module.ts (1)

172-173: LGTM! Component registration follows the established pattern.

The APIKeys component is properly added to the auto-registration array with an appropriate section comment. The type constraint ensures the component is actually exported from @clerk/vue.

packages/astro/src/types.ts (1)

75-76: LGTM! Type extension is correct and consistent.

The addition of 'api-keys' to the InternalUIComponentId union type is necessary for type safety and matches the component ID used throughout the integration.

packages/vue/src/components/ui-components/APIKeys.vue (1)

1-17: LGTM! Component follows the established ClerkHostRenderer pattern.

The Vue component correctly:

  • Uses the ClerkHostRenderer wrapper component
  • Binds the appropriate mount/unmount methods
  • Passes through props with proper typing

The type cast to any on line 14 is acceptable given that __unstable__updateProps is marked as an unstable API and likely not part of the public type definitions.

packages/nuxt/src/runtime/components/index.ts (1)

33-33: Export addition verified — no issues found.

The verification confirms that APIKeys is properly exported from @clerk/vue on line 8 of packages/vue/src/components/index.ts. The export pattern is consistent and correct.

packages/astro/src/astro-components/interactive/APIKeys.astro (1)

1-11: LGTM! Component implementation follows the established pattern.

The Astro component wrapper is correctly structured:

  • Properly imports and types the props from @clerk/shared/types
  • Uses InternalUIComponentRenderer with the correct component ID
  • Spreads props as expected
packages/astro/src/internal/mount-clerk-astro-js-components.ts (1)

23-23: LGTM! Pattern is consistent with existing mount mappings.

The mountAPIKeys method is confirmed to exist on the Clerk type in packages/shared/src/types/clerk.ts:586 with the correct signature mountAPIKeys: (targetNode: HTMLDivElement, props?: APIKeysProps) => void;. The addition follows the established pattern, and the satisfies constraint ensures type safety. No issues found.

packages/vue/src/components/index.ts (1)

8-8: APIKeys export is correctly implemented across all frameworks.

Verification confirms:

  • ./ui-components/APIKeys.vue exists and is properly implemented using Vue 3 composition API
  • ✓ Component is exported in the Vue package (line 8)
  • ✓ Component is integrated into Astro (packages/astro/src/astro-components/index.ts:34)
  • ✓ Component is integrated into Nuxt (packages/nuxt/src/runtime/components/index.ts:33)

No issues found.

@wobsoriano
wobsoriano merged commit 6d3c66d into mainNov 17, 2025
47 checks passed
@wobsoriano
wobsoriano deleted the rob/api-keys-vue-astro branch November 17, 2025 11:45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@wobsoriano@octoper@clerk-cookie
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(astro,vue,nuxt): Introduce APIKeys component - #7225

Merged
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro
Nov 17, 2025
Merged

feat(astro,vue,nuxt): Introduce APIKeys component#7225
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro

Conversation

@wobsoriano

@wobsorianowobsoriano commented Nov 15, 2025

Copy link
Copy Markdown
Member

Description

This PR creates the Astro, Vue and Nuxt versions of the React <APIKeys /> AIO component

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features
    • Added APIKeys UI component for managing API keys across applications
    • Available for integration with Astro, Vue, and Nuxt frameworks
    • Component supports dynamic prop updates and lifecycle management

@changeset-bot

changeset-botBot commented Nov 15, 2025

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 919cc6a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
NameType
@clerk/astroMinor
@clerk/nuxtMinor
@clerk/vueMinor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercelBot commented Nov 15, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
clerk-js-sandboxReadyReadyPreviewCommentNov 15, 2025 10:20pm

@coderabbitai

coderabbitaiBot commented Nov 15, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request introduces a new APIKeys UI component across the Clerk ecosystem. The component is implemented in Vue and re-exported through Astro and Nuxt packages with corresponding type registrations and mount configurations integrated into each framework's component system.

Changes

Cohort / File(s)Summary
Changeset
.changeset/gentle-hats-hope.md
Documents version bumps for @clerk/astro, @clerk/nuxt, and @clerk/vue packages and announces the new APIKeys component.
Astro Components
packages/astro/src/astro-components/index.ts, packages/astro/src/astro-components/interactive/APIKeys.astro
Adds new APIKeys Astro component and exports it from the index. The component wraps InternalUIComponentRenderer with the 'api-keys' component type.
Astro Integration
packages/astro/src/internal/mount-clerk-astro-js-components.ts, packages/astro/src/types.ts
Registers 'api-keys' mount function mapping and extends InternalUIComponentId type union to include 'api-keys'.
Nuxt Integration
packages/nuxt/src/module.ts, packages/nuxt/src/runtime/components/index.ts
Adds APIKeys to Nuxt module's auto-registered components and exports it from the runtime components index.
Vue Component
packages/vue/src/components/index.ts, packages/vue/src/components/ui-components/APIKeys.vue
Introduces new Vue SFC for APIKeys using setup script syntax with ClerkHostRenderer for mount/unmount/updateProps lifecycle management.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Verify that the APIKeys Vue component correctly implements the ClerkHostRenderer lifecycle handlers and prop forwarding
  • Confirm that all type definitions and mount mappings across Astro align properly
  • Check that the Nuxt module exports and runtime components are correctly connected
  • Validate version bump consistency across the three packages

Poem

🗝️ A brand new component hops into view,
APIKeys now available for me and for you,
Across Vue, Astro, and Nuxt it flows,
Type-safe and mounted wherever it goes,
With renderers singing and props on their way! 🐰✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: introducing a new APIKeys component across three frameworks (Astro, Vue, Nuxt).
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch rob/api-keys-vue-astro

Comment @coderabbitai help to get the list of available commands and usage tips.

@wobsoriano
wobsoriano changed the base branch from main to rob/standardize-api-keys-namingNovember 15, 2025 01:21
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from cc9caf2 to c27f090CompareNovember 15, 2025 01:24
Base automatically changed from rob/standardize-api-keys-naming to mainNovember 15, 2025 21:12
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from c27f090 to dfba175CompareNovember 15, 2025 22:17
@wobsoriano
wobsoriano marked this pull request as ready for review November 15, 2025 22:18
@pkg-pr-new

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7225

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@7225

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@7225

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@7225

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@7225

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7225

@clerk/elements

npm i https://pkg.pr.new/@clerk/elements@7225

@clerk/clerk-expo

npm i https://pkg.pr.new/@clerk/clerk-expo@7225

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@7225

@clerk/express

npm i https://pkg.pr.new/@clerk/express@7225

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@7225

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@7225

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@7225

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@7225

@clerk/clerk-react

npm i https://pkg.pr.new/@clerk/clerk-react@7225

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@7225

@clerk/remix

npm i https://pkg.pr.new/@clerk/remix@7225

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@7225

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@7225

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@7225

@clerk/themes

npm i https://pkg.pr.new/@clerk/themes@7225

@clerk/types

npm i https://pkg.pr.new/@clerk/types@7225

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@7225

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@7225

commit: 919cc6a

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/vue/src/components/index.ts (1)

1-13: Consider alphabetical ordering for component exports.

The component exports don't follow a strict alphabetical order. While the current approach works, alphabetically ordering these exports (lines 1-8, 12-13) would improve maintainability and make it easier to locate components.

If alphabetical, APIKeys would appear at or near the top of the list.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bdbb0d9 and 919cc6a.

📒 Files selected for processing (9)
  • .changeset/gentle-hats-hope.md (1 hunks)
  • packages/astro/src/astro-components/index.ts (1 hunks)
  • packages/astro/src/astro-components/interactive/APIKeys.astro (1 hunks)
  • packages/astro/src/internal/mount-clerk-astro-js-components.ts (1 hunks)
  • packages/astro/src/types.ts (1 hunks)
  • packages/nuxt/src/module.ts (1 hunks)
  • packages/nuxt/src/runtime/components/index.ts (1 hunks)
  • packages/vue/src/components/index.ts (1 hunks)
  • packages/vue/src/components/ui-components/APIKeys.vue (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (27)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (nextjs, chrome, 15, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 14)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (expo-web, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (elements, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Publish with pkg-pr-new
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (9)
.changeset/gentle-hats-hope.md (1)

1-7: LGTM! Changeset properly documents the new feature.

The changeset correctly identifies all affected packages with appropriate minor version bumps for the new APIKeys component.

packages/astro/src/astro-components/index.ts (1)

34-34: LGTM! Export follows the established pattern.

The APIKeys export is properly placed in the UI Components section and follows the same pattern as other component exports.

packages/nuxt/src/module.ts (1)

172-173: LGTM! Component registration follows the established pattern.

The APIKeys component is properly added to the auto-registration array with an appropriate section comment. The type constraint ensures the component is actually exported from @clerk/vue.

packages/astro/src/types.ts (1)

75-76: LGTM! Type extension is correct and consistent.

The addition of 'api-keys' to the InternalUIComponentId union type is necessary for type safety and matches the component ID used throughout the integration.

packages/vue/src/components/ui-components/APIKeys.vue (1)

1-17: LGTM! Component follows the established ClerkHostRenderer pattern.

The Vue component correctly:

  • Uses the ClerkHostRenderer wrapper component
  • Binds the appropriate mount/unmount methods
  • Passes through props with proper typing

The type cast to any on line 14 is acceptable given that __unstable__updateProps is marked as an unstable API and likely not part of the public type definitions.

packages/nuxt/src/runtime/components/index.ts (1)

33-33: Export addition verified — no issues found.

The verification confirms that APIKeys is properly exported from @clerk/vue on line 8 of packages/vue/src/components/index.ts. The export pattern is consistent and correct.

packages/astro/src/astro-components/interactive/APIKeys.astro (1)

1-11: LGTM! Component implementation follows the established pattern.

The Astro component wrapper is correctly structured:

  • Properly imports and types the props from @clerk/shared/types
  • Uses InternalUIComponentRenderer with the correct component ID
  • Spreads props as expected
packages/astro/src/internal/mount-clerk-astro-js-components.ts (1)

23-23: LGTM! Pattern is consistent with existing mount mappings.

The mountAPIKeys method is confirmed to exist on the Clerk type in packages/shared/src/types/clerk.ts:586 with the correct signature mountAPIKeys: (targetNode: HTMLDivElement, props?: APIKeysProps) => void;. The addition follows the established pattern, and the satisfies constraint ensures type safety. No issues found.

packages/vue/src/components/index.ts (1)

8-8: APIKeys export is correctly implemented across all frameworks.

Verification confirms:

  • ./ui-components/APIKeys.vue exists and is properly implemented using Vue 3 composition API
  • ✓ Component is exported in the Vue package (line 8)
  • ✓ Component is integrated into Astro (packages/astro/src/astro-components/index.ts:34)
  • ✓ Component is integrated into Nuxt (packages/nuxt/src/runtime/components/index.ts:33)

No issues found.

@wobsoriano
wobsoriano merged commit 6d3c66d into mainNov 17, 2025
47 checks passed
@wobsoriano
wobsoriano deleted the rob/api-keys-vue-astro branch November 17, 2025 11:45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@wobsoriano@octoper@clerk-cookie
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(astro,vue,nuxt): Introduce APIKeys component - #7225

Merged
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro
Nov 17, 2025
Merged

feat(astro,vue,nuxt): Introduce APIKeys component#7225
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro

Conversation

@wobsoriano

@wobsorianowobsoriano commented Nov 15, 2025

Copy link
Copy Markdown
Member

Description

This PR creates the Astro, Vue and Nuxt versions of the React <APIKeys /> AIO component

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features
    • Added APIKeys UI component for managing API keys across applications
    • Available for integration with Astro, Vue, and Nuxt frameworks
    • Component supports dynamic prop updates and lifecycle management

@changeset-bot

changeset-botBot commented Nov 15, 2025

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 919cc6a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
NameType
@clerk/astroMinor
@clerk/nuxtMinor
@clerk/vueMinor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercelBot commented Nov 15, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
clerk-js-sandboxReadyReadyPreviewCommentNov 15, 2025 10:20pm

@coderabbitai

coderabbitaiBot commented Nov 15, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request introduces a new APIKeys UI component across the Clerk ecosystem. The component is implemented in Vue and re-exported through Astro and Nuxt packages with corresponding type registrations and mount configurations integrated into each framework's component system.

Changes

Cohort / File(s)Summary
Changeset
.changeset/gentle-hats-hope.md
Documents version bumps for @clerk/astro, @clerk/nuxt, and @clerk/vue packages and announces the new APIKeys component.
Astro Components
packages/astro/src/astro-components/index.ts, packages/astro/src/astro-components/interactive/APIKeys.astro
Adds new APIKeys Astro component and exports it from the index. The component wraps InternalUIComponentRenderer with the 'api-keys' component type.
Astro Integration
packages/astro/src/internal/mount-clerk-astro-js-components.ts, packages/astro/src/types.ts
Registers 'api-keys' mount function mapping and extends InternalUIComponentId type union to include 'api-keys'.
Nuxt Integration
packages/nuxt/src/module.ts, packages/nuxt/src/runtime/components/index.ts
Adds APIKeys to Nuxt module's auto-registered components and exports it from the runtime components index.
Vue Component
packages/vue/src/components/index.ts, packages/vue/src/components/ui-components/APIKeys.vue
Introduces new Vue SFC for APIKeys using setup script syntax with ClerkHostRenderer for mount/unmount/updateProps lifecycle management.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Verify that the APIKeys Vue component correctly implements the ClerkHostRenderer lifecycle handlers and prop forwarding
  • Confirm that all type definitions and mount mappings across Astro align properly
  • Check that the Nuxt module exports and runtime components are correctly connected
  • Validate version bump consistency across the three packages

Poem

🗝️ A brand new component hops into view,
APIKeys now available for me and for you,
Across Vue, Astro, and Nuxt it flows,
Type-safe and mounted wherever it goes,
With renderers singing and props on their way! 🐰✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: introducing a new APIKeys component across three frameworks (Astro, Vue, Nuxt).
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch rob/api-keys-vue-astro

Comment @coderabbitai help to get the list of available commands and usage tips.

@wobsoriano
wobsoriano changed the base branch from main to rob/standardize-api-keys-namingNovember 15, 2025 01:21
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from cc9caf2 to c27f090CompareNovember 15, 2025 01:24
Base automatically changed from rob/standardize-api-keys-naming to mainNovember 15, 2025 21:12
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from c27f090 to dfba175CompareNovember 15, 2025 22:17
@wobsoriano
wobsoriano marked this pull request as ready for review November 15, 2025 22:18
@pkg-pr-new

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7225

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@7225

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@7225

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@7225

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@7225

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7225

@clerk/elements

npm i https://pkg.pr.new/@clerk/elements@7225

@clerk/clerk-expo

npm i https://pkg.pr.new/@clerk/clerk-expo@7225

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@7225

@clerk/express

npm i https://pkg.pr.new/@clerk/express@7225

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@7225

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@7225

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@7225

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@7225

@clerk/clerk-react

npm i https://pkg.pr.new/@clerk/clerk-react@7225

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@7225

@clerk/remix

npm i https://pkg.pr.new/@clerk/remix@7225

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@7225

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@7225

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@7225

@clerk/themes

npm i https://pkg.pr.new/@clerk/themes@7225

@clerk/types

npm i https://pkg.pr.new/@clerk/types@7225

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@7225

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@7225

commit: 919cc6a

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/vue/src/components/index.ts (1)

1-13: Consider alphabetical ordering for component exports.

The component exports don't follow a strict alphabetical order. While the current approach works, alphabetically ordering these exports (lines 1-8, 12-13) would improve maintainability and make it easier to locate components.

If alphabetical, APIKeys would appear at or near the top of the list.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bdbb0d9 and 919cc6a.

📒 Files selected for processing (9)
  • .changeset/gentle-hats-hope.md (1 hunks)
  • packages/astro/src/astro-components/index.ts (1 hunks)
  • packages/astro/src/astro-components/interactive/APIKeys.astro (1 hunks)
  • packages/astro/src/internal/mount-clerk-astro-js-components.ts (1 hunks)
  • packages/astro/src/types.ts (1 hunks)
  • packages/nuxt/src/module.ts (1 hunks)
  • packages/nuxt/src/runtime/components/index.ts (1 hunks)
  • packages/vue/src/components/index.ts (1 hunks)
  • packages/vue/src/components/ui-components/APIKeys.vue (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (27)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (nextjs, chrome, 15, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 14)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (expo-web, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (elements, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Publish with pkg-pr-new
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (9)
.changeset/gentle-hats-hope.md (1)

1-7: LGTM! Changeset properly documents the new feature.

The changeset correctly identifies all affected packages with appropriate minor version bumps for the new APIKeys component.

packages/astro/src/astro-components/index.ts (1)

34-34: LGTM! Export follows the established pattern.

The APIKeys export is properly placed in the UI Components section and follows the same pattern as other component exports.

packages/nuxt/src/module.ts (1)

172-173: LGTM! Component registration follows the established pattern.

The APIKeys component is properly added to the auto-registration array with an appropriate section comment. The type constraint ensures the component is actually exported from @clerk/vue.

packages/astro/src/types.ts (1)

75-76: LGTM! Type extension is correct and consistent.

The addition of 'api-keys' to the InternalUIComponentId union type is necessary for type safety and matches the component ID used throughout the integration.

packages/vue/src/components/ui-components/APIKeys.vue (1)

1-17: LGTM! Component follows the established ClerkHostRenderer pattern.

The Vue component correctly:

  • Uses the ClerkHostRenderer wrapper component
  • Binds the appropriate mount/unmount methods
  • Passes through props with proper typing

The type cast to any on line 14 is acceptable given that __unstable__updateProps is marked as an unstable API and likely not part of the public type definitions.

packages/nuxt/src/runtime/components/index.ts (1)

33-33: Export addition verified — no issues found.

The verification confirms that APIKeys is properly exported from @clerk/vue on line 8 of packages/vue/src/components/index.ts. The export pattern is consistent and correct.

packages/astro/src/astro-components/interactive/APIKeys.astro (1)

1-11: LGTM! Component implementation follows the established pattern.

The Astro component wrapper is correctly structured:

  • Properly imports and types the props from @clerk/shared/types
  • Uses InternalUIComponentRenderer with the correct component ID
  • Spreads props as expected
packages/astro/src/internal/mount-clerk-astro-js-components.ts (1)

23-23: LGTM! Pattern is consistent with existing mount mappings.

The mountAPIKeys method is confirmed to exist on the Clerk type in packages/shared/src/types/clerk.ts:586 with the correct signature mountAPIKeys: (targetNode: HTMLDivElement, props?: APIKeysProps) => void;. The addition follows the established pattern, and the satisfies constraint ensures type safety. No issues found.

packages/vue/src/components/index.ts (1)

8-8: APIKeys export is correctly implemented across all frameworks.

Verification confirms:

  • ./ui-components/APIKeys.vue exists and is properly implemented using Vue 3 composition API
  • ✓ Component is exported in the Vue package (line 8)
  • ✓ Component is integrated into Astro (packages/astro/src/astro-components/index.ts:34)
  • ✓ Component is integrated into Nuxt (packages/nuxt/src/runtime/components/index.ts:33)

No issues found.

@wobsoriano
wobsoriano merged commit 6d3c66d into mainNov 17, 2025
47 checks passed
@wobsoriano
wobsoriano deleted the rob/api-keys-vue-astro branch November 17, 2025 11:45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@wobsoriano@octoper@clerk-cookie
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(astro,vue,nuxt): Introduce APIKeys component - #7225

Merged
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro
Nov 17, 2025
Merged

feat(astro,vue,nuxt): Introduce APIKeys component#7225
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro

Conversation

@wobsoriano

@wobsorianowobsoriano commented Nov 15, 2025

Copy link
Copy Markdown
Member

Description

This PR creates the Astro, Vue and Nuxt versions of the React <APIKeys /> AIO component

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features
    • Added APIKeys UI component for managing API keys across applications
    • Available for integration with Astro, Vue, and Nuxt frameworks
    • Component supports dynamic prop updates and lifecycle management

@changeset-bot

changeset-botBot commented Nov 15, 2025

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 919cc6a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
NameType
@clerk/astroMinor
@clerk/nuxtMinor
@clerk/vueMinor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercelBot commented Nov 15, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
clerk-js-sandboxReadyReadyPreviewCommentNov 15, 2025 10:20pm

@coderabbitai

coderabbitaiBot commented Nov 15, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request introduces a new APIKeys UI component across the Clerk ecosystem. The component is implemented in Vue and re-exported through Astro and Nuxt packages with corresponding type registrations and mount configurations integrated into each framework's component system.

Changes

Cohort / File(s)Summary
Changeset
.changeset/gentle-hats-hope.md
Documents version bumps for @clerk/astro, @clerk/nuxt, and @clerk/vue packages and announces the new APIKeys component.
Astro Components
packages/astro/src/astro-components/index.ts, packages/astro/src/astro-components/interactive/APIKeys.astro
Adds new APIKeys Astro component and exports it from the index. The component wraps InternalUIComponentRenderer with the 'api-keys' component type.
Astro Integration
packages/astro/src/internal/mount-clerk-astro-js-components.ts, packages/astro/src/types.ts
Registers 'api-keys' mount function mapping and extends InternalUIComponentId type union to include 'api-keys'.
Nuxt Integration
packages/nuxt/src/module.ts, packages/nuxt/src/runtime/components/index.ts
Adds APIKeys to Nuxt module's auto-registered components and exports it from the runtime components index.
Vue Component
packages/vue/src/components/index.ts, packages/vue/src/components/ui-components/APIKeys.vue
Introduces new Vue SFC for APIKeys using setup script syntax with ClerkHostRenderer for mount/unmount/updateProps lifecycle management.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Verify that the APIKeys Vue component correctly implements the ClerkHostRenderer lifecycle handlers and prop forwarding
  • Confirm that all type definitions and mount mappings across Astro align properly
  • Check that the Nuxt module exports and runtime components are correctly connected
  • Validate version bump consistency across the three packages

Poem

🗝️ A brand new component hops into view,
APIKeys now available for me and for you,
Across Vue, Astro, and Nuxt it flows,
Type-safe and mounted wherever it goes,
With renderers singing and props on their way! 🐰✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: introducing a new APIKeys component across three frameworks (Astro, Vue, Nuxt).
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch rob/api-keys-vue-astro

Comment @coderabbitai help to get the list of available commands and usage tips.

@wobsoriano
wobsoriano changed the base branch from main to rob/standardize-api-keys-namingNovember 15, 2025 01:21
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from cc9caf2 to c27f090CompareNovember 15, 2025 01:24
Base automatically changed from rob/standardize-api-keys-naming to mainNovember 15, 2025 21:12
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from c27f090 to dfba175CompareNovember 15, 2025 22:17
@wobsoriano
wobsoriano marked this pull request as ready for review November 15, 2025 22:18
@pkg-pr-new

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7225

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@7225

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@7225

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@7225

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@7225

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7225

@clerk/elements

npm i https://pkg.pr.new/@clerk/elements@7225

@clerk/clerk-expo

npm i https://pkg.pr.new/@clerk/clerk-expo@7225

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@7225

@clerk/express

npm i https://pkg.pr.new/@clerk/express@7225

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@7225

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@7225

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@7225

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@7225

@clerk/clerk-react

npm i https://pkg.pr.new/@clerk/clerk-react@7225

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@7225

@clerk/remix

npm i https://pkg.pr.new/@clerk/remix@7225

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@7225

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@7225

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@7225

@clerk/themes

npm i https://pkg.pr.new/@clerk/themes@7225

@clerk/types

npm i https://pkg.pr.new/@clerk/types@7225

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@7225

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@7225

commit: 919cc6a

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/vue/src/components/index.ts (1)

1-13: Consider alphabetical ordering for component exports.

The component exports don't follow a strict alphabetical order. While the current approach works, alphabetically ordering these exports (lines 1-8, 12-13) would improve maintainability and make it easier to locate components.

If alphabetical, APIKeys would appear at or near the top of the list.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bdbb0d9 and 919cc6a.

📒 Files selected for processing (9)
  • .changeset/gentle-hats-hope.md (1 hunks)
  • packages/astro/src/astro-components/index.ts (1 hunks)
  • packages/astro/src/astro-components/interactive/APIKeys.astro (1 hunks)
  • packages/astro/src/internal/mount-clerk-astro-js-components.ts (1 hunks)
  • packages/astro/src/types.ts (1 hunks)
  • packages/nuxt/src/module.ts (1 hunks)
  • packages/nuxt/src/runtime/components/index.ts (1 hunks)
  • packages/vue/src/components/index.ts (1 hunks)
  • packages/vue/src/components/ui-components/APIKeys.vue (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (27)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (nextjs, chrome, 15, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 14)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (expo-web, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (elements, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Publish with pkg-pr-new
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (9)
.changeset/gentle-hats-hope.md (1)

1-7: LGTM! Changeset properly documents the new feature.

The changeset correctly identifies all affected packages with appropriate minor version bumps for the new APIKeys component.

packages/astro/src/astro-components/index.ts (1)

34-34: LGTM! Export follows the established pattern.

The APIKeys export is properly placed in the UI Components section and follows the same pattern as other component exports.

packages/nuxt/src/module.ts (1)

172-173: LGTM! Component registration follows the established pattern.

The APIKeys component is properly added to the auto-registration array with an appropriate section comment. The type constraint ensures the component is actually exported from @clerk/vue.

packages/astro/src/types.ts (1)

75-76: LGTM! Type extension is correct and consistent.

The addition of 'api-keys' to the InternalUIComponentId union type is necessary for type safety and matches the component ID used throughout the integration.

packages/vue/src/components/ui-components/APIKeys.vue (1)

1-17: LGTM! Component follows the established ClerkHostRenderer pattern.

The Vue component correctly:

  • Uses the ClerkHostRenderer wrapper component
  • Binds the appropriate mount/unmount methods
  • Passes through props with proper typing

The type cast to any on line 14 is acceptable given that __unstable__updateProps is marked as an unstable API and likely not part of the public type definitions.

packages/nuxt/src/runtime/components/index.ts (1)

33-33: Export addition verified — no issues found.

The verification confirms that APIKeys is properly exported from @clerk/vue on line 8 of packages/vue/src/components/index.ts. The export pattern is consistent and correct.

packages/astro/src/astro-components/interactive/APIKeys.astro (1)

1-11: LGTM! Component implementation follows the established pattern.

The Astro component wrapper is correctly structured:

  • Properly imports and types the props from @clerk/shared/types
  • Uses InternalUIComponentRenderer with the correct component ID
  • Spreads props as expected
packages/astro/src/internal/mount-clerk-astro-js-components.ts (1)

23-23: LGTM! Pattern is consistent with existing mount mappings.

The mountAPIKeys method is confirmed to exist on the Clerk type in packages/shared/src/types/clerk.ts:586 with the correct signature mountAPIKeys: (targetNode: HTMLDivElement, props?: APIKeysProps) => void;. The addition follows the established pattern, and the satisfies constraint ensures type safety. No issues found.

packages/vue/src/components/index.ts (1)

8-8: APIKeys export is correctly implemented across all frameworks.

Verification confirms:

  • ./ui-components/APIKeys.vue exists and is properly implemented using Vue 3 composition API
  • ✓ Component is exported in the Vue package (line 8)
  • ✓ Component is integrated into Astro (packages/astro/src/astro-components/index.ts:34)
  • ✓ Component is integrated into Nuxt (packages/nuxt/src/runtime/components/index.ts:33)

No issues found.

@wobsoriano
wobsoriano merged commit 6d3c66d into mainNov 17, 2025
47 checks passed
@wobsoriano
wobsoriano deleted the rob/api-keys-vue-astro branch November 17, 2025 11:45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@wobsoriano@octoper@clerk-cookie
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(astro,vue,nuxt): Introduce APIKeys component - #7225

Merged
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro
Nov 17, 2025
Merged

feat(astro,vue,nuxt): Introduce APIKeys component#7225
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro

Conversation

@wobsoriano

@wobsorianowobsoriano commented Nov 15, 2025

Copy link
Copy Markdown
Member

Description

This PR creates the Astro, Vue and Nuxt versions of the React <APIKeys /> AIO component

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features
    • Added APIKeys UI component for managing API keys across applications
    • Available for integration with Astro, Vue, and Nuxt frameworks
    • Component supports dynamic prop updates and lifecycle management

@changeset-bot

changeset-botBot commented Nov 15, 2025

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 919cc6a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
NameType
@clerk/astroMinor
@clerk/nuxtMinor
@clerk/vueMinor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercelBot commented Nov 15, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
clerk-js-sandboxReadyReadyPreviewCommentNov 15, 2025 10:20pm

@coderabbitai

coderabbitaiBot commented Nov 15, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request introduces a new APIKeys UI component across the Clerk ecosystem. The component is implemented in Vue and re-exported through Astro and Nuxt packages with corresponding type registrations and mount configurations integrated into each framework's component system.

Changes

Cohort / File(s)Summary
Changeset
.changeset/gentle-hats-hope.md
Documents version bumps for @clerk/astro, @clerk/nuxt, and @clerk/vue packages and announces the new APIKeys component.
Astro Components
packages/astro/src/astro-components/index.ts, packages/astro/src/astro-components/interactive/APIKeys.astro
Adds new APIKeys Astro component and exports it from the index. The component wraps InternalUIComponentRenderer with the 'api-keys' component type.
Astro Integration
packages/astro/src/internal/mount-clerk-astro-js-components.ts, packages/astro/src/types.ts
Registers 'api-keys' mount function mapping and extends InternalUIComponentId type union to include 'api-keys'.
Nuxt Integration
packages/nuxt/src/module.ts, packages/nuxt/src/runtime/components/index.ts
Adds APIKeys to Nuxt module's auto-registered components and exports it from the runtime components index.
Vue Component
packages/vue/src/components/index.ts, packages/vue/src/components/ui-components/APIKeys.vue
Introduces new Vue SFC for APIKeys using setup script syntax with ClerkHostRenderer for mount/unmount/updateProps lifecycle management.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Verify that the APIKeys Vue component correctly implements the ClerkHostRenderer lifecycle handlers and prop forwarding
  • Confirm that all type definitions and mount mappings across Astro align properly
  • Check that the Nuxt module exports and runtime components are correctly connected
  • Validate version bump consistency across the three packages

Poem

🗝️ A brand new component hops into view,
APIKeys now available for me and for you,
Across Vue, Astro, and Nuxt it flows,
Type-safe and mounted wherever it goes,
With renderers singing and props on their way! 🐰✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: introducing a new APIKeys component across three frameworks (Astro, Vue, Nuxt).
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch rob/api-keys-vue-astro

Comment @coderabbitai help to get the list of available commands and usage tips.

@wobsoriano
wobsoriano changed the base branch from main to rob/standardize-api-keys-namingNovember 15, 2025 01:21
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from cc9caf2 to c27f090CompareNovember 15, 2025 01:24
Base automatically changed from rob/standardize-api-keys-naming to mainNovember 15, 2025 21:12
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from c27f090 to dfba175CompareNovember 15, 2025 22:17
@wobsoriano
wobsoriano marked this pull request as ready for review November 15, 2025 22:18
@pkg-pr-new

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7225

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@7225

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@7225

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@7225

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@7225

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7225

@clerk/elements

npm i https://pkg.pr.new/@clerk/elements@7225

@clerk/clerk-expo

npm i https://pkg.pr.new/@clerk/clerk-expo@7225

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@7225

@clerk/express

npm i https://pkg.pr.new/@clerk/express@7225

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@7225

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@7225

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@7225

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@7225

@clerk/clerk-react

npm i https://pkg.pr.new/@clerk/clerk-react@7225

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@7225

@clerk/remix

npm i https://pkg.pr.new/@clerk/remix@7225

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@7225

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@7225

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@7225

@clerk/themes

npm i https://pkg.pr.new/@clerk/themes@7225

@clerk/types

npm i https://pkg.pr.new/@clerk/types@7225

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@7225

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@7225

commit: 919cc6a

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/vue/src/components/index.ts (1)

1-13: Consider alphabetical ordering for component exports.

The component exports don't follow a strict alphabetical order. While the current approach works, alphabetically ordering these exports (lines 1-8, 12-13) would improve maintainability and make it easier to locate components.

If alphabetical, APIKeys would appear at or near the top of the list.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bdbb0d9 and 919cc6a.

📒 Files selected for processing (9)
  • .changeset/gentle-hats-hope.md (1 hunks)
  • packages/astro/src/astro-components/index.ts (1 hunks)
  • packages/astro/src/astro-components/interactive/APIKeys.astro (1 hunks)
  • packages/astro/src/internal/mount-clerk-astro-js-components.ts (1 hunks)
  • packages/astro/src/types.ts (1 hunks)
  • packages/nuxt/src/module.ts (1 hunks)
  • packages/nuxt/src/runtime/components/index.ts (1 hunks)
  • packages/vue/src/components/index.ts (1 hunks)
  • packages/vue/src/components/ui-components/APIKeys.vue (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (27)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (nextjs, chrome, 15, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 14)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (expo-web, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (elements, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Publish with pkg-pr-new
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (9)
.changeset/gentle-hats-hope.md (1)

1-7: LGTM! Changeset properly documents the new feature.

The changeset correctly identifies all affected packages with appropriate minor version bumps for the new APIKeys component.

packages/astro/src/astro-components/index.ts (1)

34-34: LGTM! Export follows the established pattern.

The APIKeys export is properly placed in the UI Components section and follows the same pattern as other component exports.

packages/nuxt/src/module.ts (1)

172-173: LGTM! Component registration follows the established pattern.

The APIKeys component is properly added to the auto-registration array with an appropriate section comment. The type constraint ensures the component is actually exported from @clerk/vue.

packages/astro/src/types.ts (1)

75-76: LGTM! Type extension is correct and consistent.

The addition of 'api-keys' to the InternalUIComponentId union type is necessary for type safety and matches the component ID used throughout the integration.

packages/vue/src/components/ui-components/APIKeys.vue (1)

1-17: LGTM! Component follows the established ClerkHostRenderer pattern.

The Vue component correctly:

  • Uses the ClerkHostRenderer wrapper component
  • Binds the appropriate mount/unmount methods
  • Passes through props with proper typing

The type cast to any on line 14 is acceptable given that __unstable__updateProps is marked as an unstable API and likely not part of the public type definitions.

packages/nuxt/src/runtime/components/index.ts (1)

33-33: Export addition verified — no issues found.

The verification confirms that APIKeys is properly exported from @clerk/vue on line 8 of packages/vue/src/components/index.ts. The export pattern is consistent and correct.

packages/astro/src/astro-components/interactive/APIKeys.astro (1)

1-11: LGTM! Component implementation follows the established pattern.

The Astro component wrapper is correctly structured:

  • Properly imports and types the props from @clerk/shared/types
  • Uses InternalUIComponentRenderer with the correct component ID
  • Spreads props as expected
packages/astro/src/internal/mount-clerk-astro-js-components.ts (1)

23-23: LGTM! Pattern is consistent with existing mount mappings.

The mountAPIKeys method is confirmed to exist on the Clerk type in packages/shared/src/types/clerk.ts:586 with the correct signature mountAPIKeys: (targetNode: HTMLDivElement, props?: APIKeysProps) => void;. The addition follows the established pattern, and the satisfies constraint ensures type safety. No issues found.

packages/vue/src/components/index.ts (1)

8-8: APIKeys export is correctly implemented across all frameworks.

Verification confirms:

  • ./ui-components/APIKeys.vue exists and is properly implemented using Vue 3 composition API
  • ✓ Component is exported in the Vue package (line 8)
  • ✓ Component is integrated into Astro (packages/astro/src/astro-components/index.ts:34)
  • ✓ Component is integrated into Nuxt (packages/nuxt/src/runtime/components/index.ts:33)

No issues found.

@wobsoriano
wobsoriano merged commit 6d3c66d into mainNov 17, 2025
47 checks passed
@wobsoriano
wobsoriano deleted the rob/api-keys-vue-astro branch November 17, 2025 11:45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@wobsoriano@octoper@clerk-cookie
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(astro,vue,nuxt): Introduce APIKeys component - #7225

Merged
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro
Nov 17, 2025
Merged

feat(astro,vue,nuxt): Introduce APIKeys component#7225
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro

Conversation

@wobsoriano

@wobsorianowobsoriano commented Nov 15, 2025

Copy link
Copy Markdown
Member

Description

This PR creates the Astro, Vue and Nuxt versions of the React <APIKeys /> AIO component

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features
    • Added APIKeys UI component for managing API keys across applications
    • Available for integration with Astro, Vue, and Nuxt frameworks
    • Component supports dynamic prop updates and lifecycle management

@changeset-bot

changeset-botBot commented Nov 15, 2025

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 919cc6a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
NameType
@clerk/astroMinor
@clerk/nuxtMinor
@clerk/vueMinor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercelBot commented Nov 15, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
clerk-js-sandboxReadyReadyPreviewCommentNov 15, 2025 10:20pm

@coderabbitai

coderabbitaiBot commented Nov 15, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request introduces a new APIKeys UI component across the Clerk ecosystem. The component is implemented in Vue and re-exported through Astro and Nuxt packages with corresponding type registrations and mount configurations integrated into each framework's component system.

Changes

Cohort / File(s)Summary
Changeset
.changeset/gentle-hats-hope.md
Documents version bumps for @clerk/astro, @clerk/nuxt, and @clerk/vue packages and announces the new APIKeys component.
Astro Components
packages/astro/src/astro-components/index.ts, packages/astro/src/astro-components/interactive/APIKeys.astro
Adds new APIKeys Astro component and exports it from the index. The component wraps InternalUIComponentRenderer with the 'api-keys' component type.
Astro Integration
packages/astro/src/internal/mount-clerk-astro-js-components.ts, packages/astro/src/types.ts
Registers 'api-keys' mount function mapping and extends InternalUIComponentId type union to include 'api-keys'.
Nuxt Integration
packages/nuxt/src/module.ts, packages/nuxt/src/runtime/components/index.ts
Adds APIKeys to Nuxt module's auto-registered components and exports it from the runtime components index.
Vue Component
packages/vue/src/components/index.ts, packages/vue/src/components/ui-components/APIKeys.vue
Introduces new Vue SFC for APIKeys using setup script syntax with ClerkHostRenderer for mount/unmount/updateProps lifecycle management.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Verify that the APIKeys Vue component correctly implements the ClerkHostRenderer lifecycle handlers and prop forwarding
  • Confirm that all type definitions and mount mappings across Astro align properly
  • Check that the Nuxt module exports and runtime components are correctly connected
  • Validate version bump consistency across the three packages

Poem

🗝️ A brand new component hops into view,
APIKeys now available for me and for you,
Across Vue, Astro, and Nuxt it flows,
Type-safe and mounted wherever it goes,
With renderers singing and props on their way! 🐰✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: introducing a new APIKeys component across three frameworks (Astro, Vue, Nuxt).
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch rob/api-keys-vue-astro

Comment @coderabbitai help to get the list of available commands and usage tips.

@wobsoriano
wobsoriano changed the base branch from main to rob/standardize-api-keys-namingNovember 15, 2025 01:21
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from cc9caf2 to c27f090CompareNovember 15, 2025 01:24
Base automatically changed from rob/standardize-api-keys-naming to mainNovember 15, 2025 21:12
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from c27f090 to dfba175CompareNovember 15, 2025 22:17
@wobsoriano
wobsoriano marked this pull request as ready for review November 15, 2025 22:18
@pkg-pr-new

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7225

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@7225

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@7225

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@7225

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@7225

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7225

@clerk/elements

npm i https://pkg.pr.new/@clerk/elements@7225

@clerk/clerk-expo

npm i https://pkg.pr.new/@clerk/clerk-expo@7225

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@7225

@clerk/express

npm i https://pkg.pr.new/@clerk/express@7225

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@7225

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@7225

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@7225

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@7225

@clerk/clerk-react

npm i https://pkg.pr.new/@clerk/clerk-react@7225

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@7225

@clerk/remix

npm i https://pkg.pr.new/@clerk/remix@7225

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@7225

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@7225

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@7225

@clerk/themes

npm i https://pkg.pr.new/@clerk/themes@7225

@clerk/types

npm i https://pkg.pr.new/@clerk/types@7225

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@7225

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@7225

commit: 919cc6a

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/vue/src/components/index.ts (1)

1-13: Consider alphabetical ordering for component exports.

The component exports don't follow a strict alphabetical order. While the current approach works, alphabetically ordering these exports (lines 1-8, 12-13) would improve maintainability and make it easier to locate components.

If alphabetical, APIKeys would appear at or near the top of the list.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bdbb0d9 and 919cc6a.

📒 Files selected for processing (9)
  • .changeset/gentle-hats-hope.md (1 hunks)
  • packages/astro/src/astro-components/index.ts (1 hunks)
  • packages/astro/src/astro-components/interactive/APIKeys.astro (1 hunks)
  • packages/astro/src/internal/mount-clerk-astro-js-components.ts (1 hunks)
  • packages/astro/src/types.ts (1 hunks)
  • packages/nuxt/src/module.ts (1 hunks)
  • packages/nuxt/src/runtime/components/index.ts (1 hunks)
  • packages/vue/src/components/index.ts (1 hunks)
  • packages/vue/src/components/ui-components/APIKeys.vue (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (27)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (nextjs, chrome, 15, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 14)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (expo-web, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (elements, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Publish with pkg-pr-new
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (9)
.changeset/gentle-hats-hope.md (1)

1-7: LGTM! Changeset properly documents the new feature.

The changeset correctly identifies all affected packages with appropriate minor version bumps for the new APIKeys component.

packages/astro/src/astro-components/index.ts (1)

34-34: LGTM! Export follows the established pattern.

The APIKeys export is properly placed in the UI Components section and follows the same pattern as other component exports.

packages/nuxt/src/module.ts (1)

172-173: LGTM! Component registration follows the established pattern.

The APIKeys component is properly added to the auto-registration array with an appropriate section comment. The type constraint ensures the component is actually exported from @clerk/vue.

packages/astro/src/types.ts (1)

75-76: LGTM! Type extension is correct and consistent.

The addition of 'api-keys' to the InternalUIComponentId union type is necessary for type safety and matches the component ID used throughout the integration.

packages/vue/src/components/ui-components/APIKeys.vue (1)

1-17: LGTM! Component follows the established ClerkHostRenderer pattern.

The Vue component correctly:

  • Uses the ClerkHostRenderer wrapper component
  • Binds the appropriate mount/unmount methods
  • Passes through props with proper typing

The type cast to any on line 14 is acceptable given that __unstable__updateProps is marked as an unstable API and likely not part of the public type definitions.

packages/nuxt/src/runtime/components/index.ts (1)

33-33: Export addition verified — no issues found.

The verification confirms that APIKeys is properly exported from @clerk/vue on line 8 of packages/vue/src/components/index.ts. The export pattern is consistent and correct.

packages/astro/src/astro-components/interactive/APIKeys.astro (1)

1-11: LGTM! Component implementation follows the established pattern.

The Astro component wrapper is correctly structured:

  • Properly imports and types the props from @clerk/shared/types
  • Uses InternalUIComponentRenderer with the correct component ID
  • Spreads props as expected
packages/astro/src/internal/mount-clerk-astro-js-components.ts (1)

23-23: LGTM! Pattern is consistent with existing mount mappings.

The mountAPIKeys method is confirmed to exist on the Clerk type in packages/shared/src/types/clerk.ts:586 with the correct signature mountAPIKeys: (targetNode: HTMLDivElement, props?: APIKeysProps) => void;. The addition follows the established pattern, and the satisfies constraint ensures type safety. No issues found.

packages/vue/src/components/index.ts (1)

8-8: APIKeys export is correctly implemented across all frameworks.

Verification confirms:

  • ./ui-components/APIKeys.vue exists and is properly implemented using Vue 3 composition API
  • ✓ Component is exported in the Vue package (line 8)
  • ✓ Component is integrated into Astro (packages/astro/src/astro-components/index.ts:34)
  • ✓ Component is integrated into Nuxt (packages/nuxt/src/runtime/components/index.ts:33)

No issues found.

@wobsoriano
wobsoriano merged commit 6d3c66d into mainNov 17, 2025
47 checks passed
@wobsoriano
wobsoriano deleted the rob/api-keys-vue-astro branch November 17, 2025 11:45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@wobsoriano@octoper@clerk-cookie
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(astro,vue,nuxt): Introduce APIKeys component - #7225

Merged
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro
Nov 17, 2025
Merged

feat(astro,vue,nuxt): Introduce APIKeys component#7225
wobsoriano merged 2 commits into
mainfrom
rob/api-keys-vue-astro

Conversation

@wobsoriano

@wobsorianowobsoriano commented Nov 15, 2025

Copy link
Copy Markdown
Member

Description

This PR creates the Astro, Vue and Nuxt versions of the React <APIKeys /> AIO component

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other:

Summary by CodeRabbit

  • New Features
    • Added APIKeys UI component for managing API keys across applications
    • Available for integration with Astro, Vue, and Nuxt frameworks
    • Component supports dynamic prop updates and lifecycle management

@changeset-bot

changeset-botBot commented Nov 15, 2025

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 919cc6a

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 3 packages
NameType
@clerk/astroMinor
@clerk/nuxtMinor
@clerk/vueMinor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercelBot commented Nov 15, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentPreviewCommentsUpdated (UTC)
clerk-js-sandboxReadyReadyPreviewCommentNov 15, 2025 10:20pm

@coderabbitai

coderabbitaiBot commented Nov 15, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This pull request introduces a new APIKeys UI component across the Clerk ecosystem. The component is implemented in Vue and re-exported through Astro and Nuxt packages with corresponding type registrations and mount configurations integrated into each framework's component system.

Changes

Cohort / File(s)Summary
Changeset
.changeset/gentle-hats-hope.md
Documents version bumps for @clerk/astro, @clerk/nuxt, and @clerk/vue packages and announces the new APIKeys component.
Astro Components
packages/astro/src/astro-components/index.ts, packages/astro/src/astro-components/interactive/APIKeys.astro
Adds new APIKeys Astro component and exports it from the index. The component wraps InternalUIComponentRenderer with the 'api-keys' component type.
Astro Integration
packages/astro/src/internal/mount-clerk-astro-js-components.ts, packages/astro/src/types.ts
Registers 'api-keys' mount function mapping and extends InternalUIComponentId type union to include 'api-keys'.
Nuxt Integration
packages/nuxt/src/module.ts, packages/nuxt/src/runtime/components/index.ts
Adds APIKeys to Nuxt module's auto-registered components and exports it from the runtime components index.
Vue Component
packages/vue/src/components/index.ts, packages/vue/src/components/ui-components/APIKeys.vue
Introduces new Vue SFC for APIKeys using setup script syntax with ClerkHostRenderer for mount/unmount/updateProps lifecycle management.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

  • Verify that the APIKeys Vue component correctly implements the ClerkHostRenderer lifecycle handlers and prop forwarding
  • Confirm that all type definitions and mount mappings across Astro align properly
  • Check that the Nuxt module exports and runtime components are correctly connected
  • Validate version bump consistency across the three packages

Poem

🗝️ A brand new component hops into view,
APIKeys now available for me and for you,
Across Vue, Astro, and Nuxt it flows,
Type-safe and mounted wherever it goes,
With renderers singing and props on their way! 🐰✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly and concisely describes the main change: introducing a new APIKeys component across three frameworks (Astro, Vue, Nuxt).
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch rob/api-keys-vue-astro

Comment @coderabbitai help to get the list of available commands and usage tips.

@wobsoriano
wobsoriano changed the base branch from main to rob/standardize-api-keys-namingNovember 15, 2025 01:21
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from cc9caf2 to c27f090CompareNovember 15, 2025 01:24
Base automatically changed from rob/standardize-api-keys-naming to mainNovember 15, 2025 21:12
@wobsoriano
wobsorianoforce-pushed the rob/api-keys-vue-astro branch from c27f090 to dfba175CompareNovember 15, 2025 22:17
@wobsoriano
wobsoriano marked this pull request as ready for review November 15, 2025 22:18
@pkg-pr-new

Copy link
Copy Markdown

Open in StackBlitz

@clerk/agent-toolkit

npm i https://pkg.pr.new/@clerk/agent-toolkit@7225

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@7225

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@7225

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@7225

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@7225

@clerk/dev-cli

npm i https://pkg.pr.new/@clerk/dev-cli@7225

@clerk/elements

npm i https://pkg.pr.new/@clerk/elements@7225

@clerk/clerk-expo

npm i https://pkg.pr.new/@clerk/clerk-expo@7225

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@7225

@clerk/express

npm i https://pkg.pr.new/@clerk/express@7225

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@7225

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@7225

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@7225

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@7225

@clerk/clerk-react

npm i https://pkg.pr.new/@clerk/clerk-react@7225

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@7225

@clerk/remix

npm i https://pkg.pr.new/@clerk/remix@7225

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@7225

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@7225

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@7225

@clerk/themes

npm i https://pkg.pr.new/@clerk/themes@7225

@clerk/types

npm i https://pkg.pr.new/@clerk/types@7225

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@7225

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@7225

commit: 919cc6a

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
packages/vue/src/components/index.ts (1)

1-13: Consider alphabetical ordering for component exports.

The component exports don't follow a strict alphabetical order. While the current approach works, alphabetically ordering these exports (lines 1-8, 12-13) would improve maintainability and make it easier to locate components.

If alphabetical, APIKeys would appear at or near the top of the list.

📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between bdbb0d9 and 919cc6a.

📒 Files selected for processing (9)
  • .changeset/gentle-hats-hope.md (1 hunks)
  • packages/astro/src/astro-components/index.ts (1 hunks)
  • packages/astro/src/astro-components/interactive/APIKeys.astro (1 hunks)
  • packages/astro/src/internal/mount-clerk-astro-js-components.ts (1 hunks)
  • packages/astro/src/types.ts (1 hunks)
  • packages/nuxt/src/module.ts (1 hunks)
  • packages/nuxt/src/runtime/components/index.ts (1 hunks)
  • packages/vue/src/components/index.ts (1 hunks)
  • packages/vue/src/components/ui-components/APIKeys.vue (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (27)
  • GitHub Check: Integration Tests (quickstart, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 15)
  • GitHub Check: Integration Tests (nextjs, chrome, 16)
  • GitHub Check: Integration Tests (quickstart, chrome, 16)
  • GitHub Check: Integration Tests (nextjs, chrome, 15, RQ)
  • GitHub Check: Integration Tests (nextjs, chrome, 14)
  • GitHub Check: Integration Tests (tanstack-react-start, chrome)
  • GitHub Check: Integration Tests (billing, chrome, RQ)
  • GitHub Check: Integration Tests (handshake:staging, chrome)
  • GitHub Check: Integration Tests (custom, chrome)
  • GitHub Check: Integration Tests (react-router, chrome)
  • GitHub Check: Integration Tests (nuxt, chrome)
  • GitHub Check: Integration Tests (billing, chrome)
  • GitHub Check: Integration Tests (machine, chrome)
  • GitHub Check: Integration Tests (astro, chrome)
  • GitHub Check: Integration Tests (handshake, chrome)
  • GitHub Check: Integration Tests (expo-web, chrome)
  • GitHub Check: Integration Tests (vue, chrome)
  • GitHub Check: Integration Tests (sessions:staging, chrome)
  • GitHub Check: Integration Tests (elements, chrome)
  • GitHub Check: Integration Tests (sessions, chrome)
  • GitHub Check: Integration Tests (localhost, chrome)
  • GitHub Check: Integration Tests (express, chrome)
  • GitHub Check: Integration Tests (ap-flows, chrome)
  • GitHub Check: Integration Tests (generic, chrome)
  • GitHub Check: Publish with pkg-pr-new
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments (9)
.changeset/gentle-hats-hope.md (1)

1-7: LGTM! Changeset properly documents the new feature.

The changeset correctly identifies all affected packages with appropriate minor version bumps for the new APIKeys component.

packages/astro/src/astro-components/index.ts (1)

34-34: LGTM! Export follows the established pattern.

The APIKeys export is properly placed in the UI Components section and follows the same pattern as other component exports.

packages/nuxt/src/module.ts (1)

172-173: LGTM! Component registration follows the established pattern.

The APIKeys component is properly added to the auto-registration array with an appropriate section comment. The type constraint ensures the component is actually exported from @clerk/vue.

packages/astro/src/types.ts (1)

75-76: LGTM! Type extension is correct and consistent.

The addition of 'api-keys' to the InternalUIComponentId union type is necessary for type safety and matches the component ID used throughout the integration.

packages/vue/src/components/ui-components/APIKeys.vue (1)

1-17: LGTM! Component follows the established ClerkHostRenderer pattern.

The Vue component correctly:

  • Uses the ClerkHostRenderer wrapper component
  • Binds the appropriate mount/unmount methods
  • Passes through props with proper typing

The type cast to any on line 14 is acceptable given that __unstable__updateProps is marked as an unstable API and likely not part of the public type definitions.

packages/nuxt/src/runtime/components/index.ts (1)

33-33: Export addition verified — no issues found.

The verification confirms that APIKeys is properly exported from @clerk/vue on line 8 of packages/vue/src/components/index.ts. The export pattern is consistent and correct.

packages/astro/src/astro-components/interactive/APIKeys.astro (1)

1-11: LGTM! Component implementation follows the established pattern.

The Astro component wrapper is correctly structured:

  • Properly imports and types the props from @clerk/shared/types
  • Uses InternalUIComponentRenderer with the correct component ID
  • Spreads props as expected
packages/astro/src/internal/mount-clerk-astro-js-components.ts (1)

23-23: LGTM! Pattern is consistent with existing mount mappings.

The mountAPIKeys method is confirmed to exist on the Clerk type in packages/shared/src/types/clerk.ts:586 with the correct signature mountAPIKeys: (targetNode: HTMLDivElement, props?: APIKeysProps) => void;. The addition follows the established pattern, and the satisfies constraint ensures type safety. No issues found.

packages/vue/src/components/index.ts (1)

8-8: APIKeys export is correctly implemented across all frameworks.

Verification confirms:

  • ./ui-components/APIKeys.vue exists and is properly implemented using Vue 3 composition API
  • ✓ Component is exported in the Vue package (line 8)
  • ✓ Component is integrated into Astro (packages/astro/src/astro-components/index.ts:34)
  • ✓ Component is integrated into Nuxt (packages/nuxt/src/runtime/components/index.ts:33)

No issues found.

@wobsoriano
wobsoriano merged commit 6d3c66d into mainNov 17, 2025
47 checks passed
@wobsoriano
wobsoriano deleted the rob/api-keys-vue-astro branch November 17, 2025 11:45
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@wobsoriano@octoper@clerk-cookie