@strands.gg/accui 1.3.1 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js +1 -1
  2. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts +1 -0
  3. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts.map +1 -1
  4. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js +1 -1
  5. package/dist/nuxt/runtime/plugin.client.cjs.js +1 -1
  6. package/dist/nuxt/runtime/plugin.client.es.js +1 -1
  7. package/dist/nuxt/runtime/plugin.server.cjs.js +1 -1
  8. package/dist/nuxt/runtime/plugin.server.es.js +1 -1
  9. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.cjs.js +1 -1
  10. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.es.js +1 -1
  11. package/dist/nuxt-v4/runtime/plugin.client.cjs.js +1 -1
  12. package/dist/nuxt-v4/runtime/plugin.client.es.js +1 -1
  13. package/dist/nuxt-v4/runtime/plugin.server.cjs.js +1 -1
  14. package/dist/nuxt-v4/runtime/plugin.server.es.js +1 -1
  15. package/dist/strands-auth-ui.cjs.js +31 -13
  16. package/dist/strands-auth-ui.cjs.js.map +1 -1
  17. package/dist/strands-auth-ui.es.js +32 -14
  18. package/dist/strands-auth-ui.es.js.map +1 -1
  19. package/dist/types/index.d.ts +1 -0
  20. package/dist/types/index.d.ts.map +1 -1
  21. package/dist/{useStrandsAuth-BCY250zc.cjs → useStrandsAuth-Bw5wrBA2.cjs} +28 -2
  22. package/dist/useStrandsAuth-Bw5wrBA2.cjs.map +1 -0
  23. package/dist/{useStrandsAuth-DCKbUhTa.js → useStrandsAuth-DQbwHB-6.js} +28 -2
  24. package/dist/useStrandsAuth-DQbwHB-6.js.map +1 -0
  25. package/dist/{useStrandsConfig-nSwWMPqi.cjs → useStrandsConfig-B9UkrP-c.cjs} +5 -3
  26. package/dist/{useStrandsConfig-nSwWMPqi.cjs.map → useStrandsConfig-B9UkrP-c.cjs.map} +1 -1
  27. package/dist/{useStrandsConfig-gjVpu8j8.js → useStrandsConfig-V7XSMyQ5.js} +5 -3
  28. package/dist/{useStrandsConfig-gjVpu8j8.js.map → useStrandsConfig-V7XSMyQ5.js.map} +1 -1
  29. package/dist/vue/components/StrandsMfaVerification.vue.d.ts.map +1 -1
  30. package/dist/vue/composables/useStrandsAuth.d.ts +1 -0
  31. package/dist/vue/composables/useStrandsAuth.d.ts.map +1 -1
  32. package/dist/vue/composables/useStrandsConfig.d.ts.map +1 -1
  33. package/dist/vue/ui/UiInput.vue.d.ts +3 -1
  34. package/dist/vue/ui/UiInput.vue.d.ts.map +1 -1
  35. package/package.json +1 -1
  36. package/dist/useStrandsAuth-BCY250zc.cjs.map +0 -1
  37. package/dist/useStrandsAuth-DCKbUhTa.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, computed, createElementBlock, openBlock, normalizeClass, createElementVNode, createCommentVNode, toDisplayString, renderSlot, createTextVNode, useSlots, ref, createBlock, resolveDynamicComponent, mergeProps, withCtx, onMounted, nextTick, toRefs, watch, Fragment, renderList, normalizeStyle, Teleport, withModifiers, createVNode, createSlots, onBeforeUnmount, withKeys, reactive, Transition, h, createStaticVNode } from "vue";
2
- import { u as useStrandsConfig, p as provideStrandsConfig } from "./useStrandsConfig-gjVpu8j8.js";
3
- import { s } from "./useStrandsConfig-gjVpu8j8.js";
4
- import { u as useStrandsAuth } from "./useStrandsAuth-DCKbUhTa.js";
2
+ import { u as useStrandsConfig, p as provideStrandsConfig } from "./useStrandsConfig-V7XSMyQ5.js";
3
+ import { s } from "./useStrandsConfig-V7XSMyQ5.js";
4
+ import { u as useStrandsAuth } from "./useStrandsAuth-DQbwHB-6.js";
5
5
  const _sfc_main$r = /* @__PURE__ */ defineComponent({
6
6
  __name: "UiAlert",
7
7
  props: {
@@ -369,7 +369,7 @@ const _sfc_main$o = /* @__PURE__ */ defineComponent({
369
369
  placeholder: { type: String, required: false },
370
370
  disabled: { type: Boolean, required: false },
371
371
  required: { type: Boolean, required: false },
372
- error: { type: String, required: false },
372
+ error: { type: Object, required: false },
373
373
  helpText: { type: String, required: false },
374
374
  autocomplete: { type: String, required: false },
375
375
  size: { type: String, required: false, default: "md" }
@@ -538,7 +538,7 @@ function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
538
538
  $props.error ? (openBlock(), createElementBlock(
539
539
  "p",
540
540
  _hoisted_9$b,
541
- toDisplayString($props.error),
541
+ toDisplayString($props.error.message),
542
542
  1
543
543
  /* TEXT */
544
544
  )) : $props.helpText ? (openBlock(), createElementBlock(
@@ -1247,6 +1247,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
1247
1247
  const {
1248
1248
  verifyMfa,
1249
1249
  sendMfaEmailCode,
1250
+ getMfaWebAuthnChallenge,
1250
1251
  mfaSessionId: authMfaSessionId,
1251
1252
  loading: authLoading,
1252
1253
  loadingMessage: authLoadingMessage,
@@ -1389,18 +1390,34 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
1389
1390
  if (!window.navigator.credentials || !window.PublicKeyCredential) {
1390
1391
  throw new Error("Hardware keys are not supported in this browser");
1391
1392
  }
1392
- const challenge = new Uint8Array(32);
1393
- crypto.getRandomValues(challenge);
1393
+ const challengeResponse = await getMfaWebAuthnChallenge(selectedMethod.value.id);
1394
+ const challengeData = challengeResponse.challenge.publicKey || challengeResponse.challenge;
1395
+ const base64ToUint8Array = (base64) => {
1396
+ if (!base64 || typeof base64 !== "string") {
1397
+ return new Uint8Array(0);
1398
+ }
1399
+ const padding = "=".repeat((4 - base64.length % 4) % 4);
1400
+ const b64 = (base64 + padding).replace(/-/g, "+").replace(/_/g, "/");
1401
+ const rawData = window.atob(b64);
1402
+ const outputArray = new Uint8Array(rawData.length);
1403
+ for (let i = 0; i < rawData.length; ++i) {
1404
+ outputArray[i] = rawData.charCodeAt(i);
1405
+ }
1406
+ return outputArray;
1407
+ };
1394
1408
  const isPasskey = selectedMethod.value.device_type === "passkey";
1395
1409
  const publicKeyCredentialRequestOptions = {
1396
- challenge,
1397
- timeout: isPasskey ? 3e5 : 6e4,
1398
- // Longer timeout for passkeys
1399
- rpId: window.location.hostname,
1400
- allowCredentials: [],
1401
- // Empty to allow any registered credential
1410
+ ...challengeData,
1411
+ challenge: challengeData.challenge ? base64ToUint8Array(challengeData.challenge) : new Uint8Array(32),
1412
+ timeout: isPasskey ? 3e5 : challengeData.timeout || 6e4,
1402
1413
  userVerification: isPasskey ? "required" : "discouraged"
1403
1414
  };
1415
+ if (challengeData.allowCredentials && Array.isArray(challengeData.allowCredentials)) {
1416
+ publicKeyCredentialRequestOptions.allowCredentials = challengeData.allowCredentials.map((cred) => ({
1417
+ ...cred,
1418
+ id: base64ToUint8Array(cred.id)
1419
+ }));
1420
+ }
1404
1421
  const credential = await navigator.credentials.get({
1405
1422
  publicKey: publicKeyCredentialRequestOptions
1406
1423
  });
@@ -1441,10 +1458,11 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
1441
1458
  await verifyMfa(selectedMethod.value.id, JSON.stringify(credentialData));
1442
1459
  emit("success");
1443
1460
  } catch (error) {
1461
+ console.error("Hardware key authentication error:", error);
1444
1462
  emit("error", error instanceof Error ? error.message : "Hardware key authentication failed");
1445
1463
  }
1446
1464
  };
1447
- const __returned__ = { props, emit, mfaLoading, getDeviceTypeIcon, getDeviceTypeName, verifyMfa, sendMfaEmailCode, authMfaSessionId, authLoading, authLoadingMessage, isSendingMfaEmail, isVerifyingMfa, loading: loading2, selectedMethod, verificationCode, verificationError, backupCode, backupCodeError, showBackupCodeInput, emailCodeSent, cooldownActive, cooldownSeconds, get cooldownInterval() {
1465
+ const __returned__ = { props, emit, mfaLoading, getDeviceTypeIcon, getDeviceTypeName, verifyMfa, sendMfaEmailCode, getMfaWebAuthnChallenge, authMfaSessionId, authLoading, authLoadingMessage, isSendingMfaEmail, isVerifyingMfa, loading: loading2, selectedMethod, verificationCode, verificationError, backupCode, backupCodeError, showBackupCodeInput, emailCodeSent, cooldownActive, cooldownSeconds, get cooldownInterval() {
1448
1466
  return cooldownInterval;
1449
1467
  }, set cooldownInterval(v) {
1450
1468
  cooldownInterval = v;