Skip to content

Add Quickstart samples for SDKs#11

Merged
brionmario merged 5 commits into
thunder-id:mainfrom
brionmario:migrate
Jun 29, 2026
Merged

Add Quickstart samples for SDKs#11
brionmario merged 5 commits into
thunder-id:mainfrom
brionmario:migrate

Conversation

@brionmario

@brionmario brionmario commented Jun 26, 2026

Copy link
Copy Markdown
Member

Purpose

Adds quickstart sample applications for the ThunderID JavaScript SDKs, providing developers with a working reference to get started quickly with each package.

Approach

Each sample is a minimal working application demonstrating the essential integration pattern for its SDK — install, configure, sign in, sign out, and access the authenticated user.

Related Issues

Related PRs

  • N/A

Checklist

  • Followed the contribution guidelines.
  • Manual test round performed and verified.
  • Documentation provided. (Add links if there are any)
  • Tests provided. (Add links if there are any)
    • Unit Tests
    • Integration Tests
  • Breaking changes. (Fill if applicable)
    • Breaking changes section filled.
    • breaking change label added.

Security checks

  • Followed secure coding standards in WSO2 Secure Coding Guidelines
  • Confirmed that this PR doesn't commit any keys, passwords, tokens, usernames, or other secrets.

- Deleted useBrandingContext and useBranding hooks from React package.
- Removed BrandingProvider and its related logic from both React and Vue packages.
- Updated ThemeProvider to eliminate dependency on branding context.
- Adjusted ThunderIDProvider to directly use ThemeProvider without BrandingProvider.
- Cleaned up tests and keys related to branding context in Vue package.
- Refactored ThemeContextValue to remove branding-related properties.
@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 233 files, which is 83 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: e015b13a-3021-4faf-bd49-266779d0da50

📥 Commits

Reviewing files that changed from the base of the PR and between a4f4283 and 993fc29.

⛔ Files ignored due to path filters (2)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
  • samples/react/quickstart/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (233)
  • .github/actions/pack-sample/action.yml
  • .github/workflows/pr-builder.yml
  • .github/workflows/release.yml
  • eslint.config.js
  • package.json
  • packages/javascript/src/ThunderIDJavaScriptClient.ts
  • packages/javascript/src/api/__tests__/createOrganization.test.ts
  • packages/javascript/src/api/__tests__/getAllOrganizations.test.ts
  • packages/javascript/src/api/__tests__/getBrandingPreference.test.ts
  • packages/javascript/src/api/__tests__/getMeOrganizations.test.ts
  • packages/javascript/src/api/__tests__/getOrganization.test.ts
  • packages/javascript/src/api/__tests__/updateOrganization.test.ts
  • packages/javascript/src/api/createOrganization.ts
  • packages/javascript/src/api/getAllOrganizations.ts
  • packages/javascript/src/api/getBrandingPreference.ts
  • packages/javascript/src/api/getMeOrganizations.ts
  • packages/javascript/src/api/getOrganization.ts
  • packages/javascript/src/api/getOrganizationUnitChildren.ts
  • packages/javascript/src/api/updateOrganization.ts
  • packages/javascript/src/errors/exception.ts
  • packages/javascript/src/index.ts
  • packages/javascript/src/models/branding-preference.ts
  • packages/javascript/src/models/client.ts
  • packages/javascript/src/models/config.ts
  • packages/javascript/src/models/organization-unit.ts
  • packages/javascript/src/models/organization.ts
  • packages/javascript/src/utils/__tests__/deriveOrganizationHandleFromBaseUrl.test.ts
  • packages/javascript/src/utils/__tests__/transformBrandingPreferenceToTheme.test.ts
  • packages/javascript/src/utils/deriveOrganizationHandleFromBaseUrl.ts
  • packages/javascript/src/utils/transformBrandingPreferenceToTheme.ts
  • packages/nextjs/package.json
  • packages/nextjs/rolldown.config.js
  • packages/nextjs/src/ThunderIDNextClient.ts
  • packages/nextjs/src/client/components/actions/SignInButton/SignInButton.tsx
  • packages/nextjs/src/client/components/presentation/CreateOrganization/CreateOrganization.tsx
  • packages/nextjs/src/client/components/presentation/Organization/Organization.tsx
  • packages/nextjs/src/client/components/presentation/OrganizationList/OrganizationList.tsx
  • packages/nextjs/src/client/components/presentation/OrganizationProfile/OrganizationProfile.tsx
  • packages/nextjs/src/client/components/presentation/OrganizationSwitcher/OrganizationSwitcher.tsx
  • packages/nextjs/src/client/contexts/ThunderID/ThunderIDProvider.tsx
  • packages/nextjs/src/client/index.ts
  • packages/nextjs/src/middleware.ts
  • packages/nextjs/src/server/ThunderIDProvider.tsx
  • packages/nextjs/src/server/actions/__tests__/createOrganization.test.ts
  • packages/nextjs/src/server/actions/__tests__/getAllOrganizations.test.ts
  • packages/nextjs/src/server/actions/__tests__/getBrandingPreference.test.ts
  • packages/nextjs/src/server/actions/__tests__/getCurrentOrganizationAction.test.ts
  • packages/nextjs/src/server/actions/__tests__/getMyOrganizations.test.ts
  • packages/nextjs/src/server/actions/__tests__/getOrganizationAction.test.ts
  • packages/nextjs/src/server/actions/createOrganization.ts
  • packages/nextjs/src/server/actions/getAllOrganizations.ts
  • packages/nextjs/src/server/actions/getBrandingPreference.ts
  • packages/nextjs/src/server/actions/getCurrentOrganizationAction.ts
  • packages/nextjs/src/server/actions/getMyOrganizations.ts
  • packages/nextjs/src/server/actions/getOrganizationAction.ts
  • packages/nextjs/src/server/actions/signInAction.ts
  • packages/nextjs/src/server/actions/switchOrganization.ts
  • packages/nextjs/src/server/index.ts
  • packages/nextjs/src/server/proxy/createRouteMatcher.ts
  • packages/nextjs/src/server/proxy/thunderIDProxy.ts
  • packages/nextjs/tsconfig.lib.json
  • packages/nuxt/src/index.ts
  • packages/nuxt/src/module.ts
  • packages/nuxt/src/runtime/components/ThunderIDRoot.ts
  • packages/nuxt/src/runtime/components/organization/CreateOrganization.ts
  • packages/nuxt/src/runtime/components/organization/Organization.ts
  • packages/nuxt/src/runtime/components/organization/OrganizationList.ts
  • packages/nuxt/src/runtime/components/organization/OrganizationProfile.ts
  • packages/nuxt/src/runtime/components/organization/OrganizationSwitcher.ts
  • packages/nuxt/src/runtime/errors/error-codes.ts
  • packages/nuxt/src/runtime/plugins/thunderid.ts
  • packages/nuxt/src/runtime/server/ThunderIDNuxtClient.ts
  • packages/nuxt/src/runtime/server/plugins/thunderid-ssr.ts
  • packages/nuxt/src/runtime/server/routes/auth/branding/branding.get.ts
  • packages/nuxt/src/runtime/server/routes/auth/organizations/current.get.ts
  • packages/nuxt/src/runtime/server/routes/auth/organizations/id.get.ts
  • packages/nuxt/src/runtime/server/routes/auth/organizations/index.get.ts
  • packages/nuxt/src/runtime/server/routes/auth/organizations/index.post.ts
  • packages/nuxt/src/runtime/server/routes/auth/organizations/me.get.ts
  • packages/nuxt/src/runtime/server/routes/auth/organizations/switch.post.ts
  • packages/nuxt/src/runtime/types.ts
  • packages/nuxt/tests/unit/thunderid-root.test.ts
  • packages/nuxt/tests/unit/thunderid-ssr.test.ts
  • packages/react/src/ThunderIDReactClient.ts
  • packages/react/src/api/createOrganization.ts
  • packages/react/src/api/getAllOrganizations.ts
  • packages/react/src/api/getMeOrganizations.ts
  • packages/react/src/api/getOrganization.ts
  • packages/react/src/api/getSchemas.ts
  • packages/react/src/api/updateOrganization.ts
  • packages/react/src/components/control/OrganizationContext/OrganizationContext.tsx
  • packages/react/src/components/control/OrganizationContext/OrganizationContextController.tsx
  • packages/react/src/components/presentation/CreateOrganization/BaseCreateOrganization.styles.ts
  • packages/react/src/components/presentation/CreateOrganization/BaseCreateOrganization.tsx
  • packages/react/src/components/presentation/CreateOrganization/CreateOrganization.tsx
  • packages/react/src/components/presentation/Organization/BaseOrganization.tsx
  • packages/react/src/components/presentation/Organization/Organization.tsx
  • packages/react/src/components/presentation/OrganizationList/BaseOrganizationList.styles.ts
  • packages/react/src/components/presentation/OrganizationList/BaseOrganizationList.tsx
  • packages/react/src/components/presentation/OrganizationList/OrganizationList.styles.ts
  • packages/react/src/components/presentation/OrganizationList/OrganizationList.tsx
  • packages/react/src/components/presentation/OrganizationProfile/BaseOrganizationProfile.styles.ts
  • packages/react/src/components/presentation/OrganizationProfile/BaseOrganizationProfile.tsx
  • packages/react/src/components/presentation/OrganizationProfile/OrganizationProfile.tsx
  • packages/react/src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.styles.ts
  • packages/react/src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.test.tsx
  • packages/react/src/components/presentation/OrganizationSwitcher/BaseOrganizationSwitcher.tsx
  • packages/react/src/components/presentation/OrganizationSwitcher/OrganizationSwitcher.tsx
  • packages/react/src/components/presentation/UserAvatar/BaseUserAvatar.tsx
  • packages/react/src/components/presentation/UserAvatar/UserAvatar.tsx
  • packages/react/src/components/presentation/UserDropdown/BaseUserDropdown.tsx
  • packages/react/src/components/presentation/auth/AuthOptionFactory.tsx
  • packages/react/src/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.ts
  • packages/react/src/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.tsx
  • packages/react/src/components/presentation/auth/OrganizationUnitPicker/index.ts
  • packages/react/src/contexts/Branding/BrandingContext.ts
  • packages/react/src/contexts/Branding/BrandingProvider.tsx
  • packages/react/src/contexts/Branding/useBrandingContext.ts
  • packages/react/src/contexts/Organization/OrganizationContext.ts
  • packages/react/src/contexts/Organization/OrganizationProvider.tsx
  • packages/react/src/contexts/Organization/useOrganization.ts
  • packages/react/src/contexts/Theme/ThemeContext.ts
  • packages/react/src/contexts/Theme/ThemeProvider.tsx
  • packages/react/src/contexts/ThunderID/ThunderIDContext.ts
  • packages/react/src/contexts/ThunderID/ThunderIDProvider.tsx
  • packages/react/src/contexts/ThunderID/__tests__/useThunderID.test.tsx
  • packages/react/src/hooks/useBranding.ts
  • packages/react/src/index.ts
  • packages/vue/src/ThunderIDVueClient.ts
  • packages/vue/src/__tests__/composables/secondary-composables.test.ts
  • packages/vue/src/__tests__/composables/useOrganization.test.ts
  • packages/vue/src/api/getAllOrganizations.ts
  • packages/vue/src/api/getMeOrganizations.ts
  • packages/vue/src/components/actions/SignInButton.ts
  • packages/vue/src/components/actions/SignUpButton.ts
  • packages/vue/src/components/presentation/create-organization/BaseCreateOrganization.ts
  • packages/vue/src/components/presentation/create-organization/CreateOrganization.css.ts
  • packages/vue/src/components/presentation/create-organization/CreateOrganization.ts
  • packages/vue/src/components/presentation/organization-list/BaseOrganizationList.ts
  • packages/vue/src/components/presentation/organization-list/OrganizationList.css.ts
  • packages/vue/src/components/presentation/organization-list/OrganizationList.ts
  • packages/vue/src/components/presentation/organization-profile/BaseOrganizationProfile.ts
  • packages/vue/src/components/presentation/organization-profile/OrganizationProfile.css.ts
  • packages/vue/src/components/presentation/organization-profile/OrganizationProfile.ts
  • packages/vue/src/components/presentation/organization-switcher/BaseOrganizationSwitcher.ts
  • packages/vue/src/components/presentation/organization-switcher/OrganizationSwitcher.css.ts
  • packages/vue/src/components/presentation/organization-switcher/OrganizationSwitcher.ts
  • packages/vue/src/components/presentation/organization/Organization.ts
  • packages/vue/src/composables/useBranding.ts
  • packages/vue/src/composables/useOrganization.ts
  • packages/vue/src/index.ts
  • packages/vue/src/keys.ts
  • packages/vue/src/models/contexts.ts
  • packages/vue/src/providers/BrandingProvider.ts
  • packages/vue/src/providers/OrganizationProvider.ts
  • packages/vue/src/providers/ThemeProvider.ts
  • packages/vue/src/providers/ThunderIDProvider.ts
  • packages/vue/src/styles/injectStyles.ts
  • pnpm-workspace.yaml
  • samples/browser/quickstart/.env.example
  • samples/browser/quickstart/README.md
  • samples/browser/quickstart/index.html
  • samples/browser/quickstart/package.json
  • samples/browser/quickstart/src/auth.js
  • samples/browser/quickstart/src/components/nav.js
  • samples/browser/quickstart/src/main.js
  • samples/browser/quickstart/src/pages/home.js
  • samples/browser/quickstart/src/pages/profile.js
  • samples/browser/quickstart/src/pages/token.js
  • samples/browser/quickstart/src/style.css
  • samples/browser/quickstart/vite.config.js
  • samples/express/quickstart/.env.example
  • samples/express/quickstart/README.md
  • samples/express/quickstart/index.js
  • samples/express/quickstart/package.json
  • samples/nextjs/quickstart/.env.example
  • samples/nextjs/quickstart/README.md
  • samples/nextjs/quickstart/app/actions.ts
  • samples/nextjs/quickstart/app/components/HeroCtas.tsx
  • samples/nextjs/quickstart/app/components/Nav.tsx
  • samples/nextjs/quickstart/app/components/ThunderMark.tsx
  • samples/nextjs/quickstart/app/globals.css
  • samples/nextjs/quickstart/app/layout.tsx
  • samples/nextjs/quickstart/app/not-found.tsx
  • samples/nextjs/quickstart/app/page.tsx
  • samples/nextjs/quickstart/app/profile/page.tsx
  • samples/nextjs/quickstart/app/token/page.tsx
  • samples/nextjs/quickstart/next-env.d.ts
  • samples/nextjs/quickstart/next.config.ts
  • samples/nextjs/quickstart/package.json
  • samples/nextjs/quickstart/proxy.ts
  • samples/nextjs/quickstart/tsconfig.json
  • samples/node/quickstart/.env.example
  • samples/node/quickstart/README.md
  • samples/node/quickstart/index.js
  • samples/node/quickstart/package.json
  • samples/nuxt/quickstart/.env.example
  • samples/nuxt/quickstart/README.md
  • samples/nuxt/quickstart/app.vue
  • samples/nuxt/quickstart/assets/styles.css
  • samples/nuxt/quickstart/components/AppNav.vue
  • samples/nuxt/quickstart/nuxt.config.ts
  • samples/nuxt/quickstart/package.json
  • samples/nuxt/quickstart/pages/index.vue
  • samples/nuxt/quickstart/pages/profile.vue
  • samples/nuxt/quickstart/pages/token.vue
  • samples/react/quickstart/.env.example
  • samples/react/quickstart/README.md
  • samples/react/quickstart/index.html
  • samples/react/quickstart/package.json
  • samples/react/quickstart/src/App.css
  • samples/react/quickstart/src/App.jsx
  • samples/react/quickstart/src/components/HeroCtas.jsx
  • samples/react/quickstart/src/components/Nav.jsx
  • samples/react/quickstart/src/components/ThunderMark.jsx
  • samples/react/quickstart/src/index.css
  • samples/react/quickstart/src/main.jsx
  • samples/react/quickstart/src/pages/HomePage.jsx
  • samples/react/quickstart/src/pages/ProfilePage.jsx
  • samples/react/quickstart/src/pages/TokenDebugPage.jsx
  • samples/react/quickstart/vite.config.js
  • samples/vue/quickstart/.env.example
  • samples/vue/quickstart/README.md
  • samples/vue/quickstart/index.html
  • samples/vue/quickstart/package.json
  • samples/vue/quickstart/src/App.vue
  • samples/vue/quickstart/src/components/Nav.vue
  • samples/vue/quickstart/src/main.js
  • samples/vue/quickstart/src/pages/HomePage.vue
  • samples/vue/quickstart/src/pages/ProfilePage.vue
  • samples/vue/quickstart/src/pages/TokenDebugPage.vue
  • samples/vue/quickstart/src/style.css
  • samples/vue/quickstart/vite.config.js

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@brionmario brionmario force-pushed the migrate branch 2 times, most recently from 55e85fc to 0eec2c0 Compare June 28, 2026 14:19
@brionmario brionmario changed the title Cleanup SDKs Add Quickstart samples for SDKs Jun 28, 2026
@brionmario brionmario force-pushed the migrate branch 7 times, most recently from 164b690 to 24255d4 Compare June 28, 2026 20:38
@brionmario brionmario merged commit cc38cc3 into thunder-id:main Jun 29, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment