@strands.gg/accui 1.3.3 → 1.4.0

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.
@@ -1030,7 +1030,11 @@ function useStrandsMfa() {
1030
1030
  const { getUrl } = useStrandsConfig();
1031
1031
  const { currentSession } = useStrandsAuth();
1032
1032
  const hasMfaDevices = computed(() => mfaDevices.value.length > 0);
1033
- const activeMfaDevices = computed(() => mfaDevices.value.filter((d) => d.is_active));
1033
+ const activeMfaDevices = computed(
1034
+ () => mfaDevices.value.filter(
1035
+ (d) => d.is_active && d.device_type !== "hardware" && d.device_type !== "passkey"
1036
+ )
1037
+ );
1034
1038
  const makeAuthenticatedRequest = async (url, options = {}) => {
1035
1039
  if (!currentSession.value?.accessToken) {
1036
1040
  throw new Error("No access token available");
@@ -1265,7 +1269,12 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
1265
1269
  const cooldownActive = ref(false);
1266
1270
  const cooldownSeconds = ref(0);
1267
1271
  let cooldownInterval = null;
1268
- const availableMethods = computed(() => props.availableMfaMethods || []);
1272
+ const availableMethods = computed(() => {
1273
+ const methods = props.availableMfaMethods || [];
1274
+ return methods.filter(
1275
+ (method) => method.device_type !== "hardware" && method.device_type !== "passkey"
1276
+ );
1277
+ });
1269
1278
  watch(() => availableMethods.value, (methods) => {
1270
1279
  if (methods.length === 1) {
1271
1280
  selectedMethod.value = methods[0];
@@ -1511,7 +1520,7 @@ const _hoisted_19$6 = {
1511
1520
  key: 3,
1512
1521
  class: "text-center space-y-4"
1513
1522
  };
1514
- const _hoisted_20$4 = { class: "bg-blue-50 border border-blue-200 rounded-lg p-4" };
1523
+ const _hoisted_20$5 = { class: "bg-blue-50 border border-blue-200 rounded-lg p-4" };
1515
1524
  const _hoisted_21$4 = { class: "flex items-center space-x-3" };
1516
1525
  const _hoisted_22$3 = { class: "text-left" };
1517
1526
  const _hoisted_23$2 = { class: "font-medium text-blue-900" };
@@ -1525,21 +1534,21 @@ const _hoisted_27$2 = {
1525
1534
  key: 4,
1526
1535
  class: "space-y-4"
1527
1536
  };
1528
- const _hoisted_28$2 = {
1537
+ const _hoisted_28$1 = {
1529
1538
  key: 0,
1530
1539
  class: "bg-green-50 border border-green-200 rounded-lg p-4"
1531
1540
  };
1532
- const _hoisted_29$2 = {
1541
+ const _hoisted_29$1 = {
1533
1542
  key: 1,
1534
1543
  class: "text-sm text-gray-600"
1535
1544
  };
1536
- const _hoisted_30$2 = {
1545
+ const _hoisted_30$1 = {
1537
1546
  key: 2,
1538
1547
  class: "flex justify-between text-sm"
1539
1548
  };
1540
- const _hoisted_31$2 = ["disabled"];
1541
- const _hoisted_32$2 = { class: "pt-4 border-t border-gray-200" };
1542
- const _hoisted_33$2 = {
1549
+ const _hoisted_31$1 = ["disabled"];
1550
+ const _hoisted_32$1 = { class: "pt-4 border-t border-gray-200" };
1551
+ const _hoisted_33$1 = {
1543
1552
  key: 3,
1544
1553
  class: "space-y-4 bg-amber-50 border border-amber-200 rounded-lg p-4"
1545
1554
  };
@@ -1748,7 +1757,7 @@ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
1748
1757
  ])) : createCommentVNode("v-if", true),
1749
1758
  createCommentVNode(" Hardware Key & Passkey Authentication "),
1750
1759
  $setup.selectedMethod?.device_type === "hardware" || $setup.selectedMethod?.device_type === "passkey" ? (openBlock(), createElementBlock("div", _hoisted_19$6, [
1751
- createElementVNode("div", _hoisted_20$4, [
1760
+ createElementVNode("div", _hoisted_20$5, [
1752
1761
  createElementVNode("div", _hoisted_21$4, [
1753
1762
  _cache[11] || (_cache[11] = createElementVNode(
1754
1763
  "div",
@@ -1878,7 +1887,7 @@ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
1878
1887
  createCommentVNode(" Code Input "),
1879
1888
  $setup.selectedMethod && $setup.selectedMethod.device_type !== "hardware" && $setup.selectedMethod.device_type !== "passkey" && ($setup.selectedMethod.device_type !== "email" || $setup.emailCodeSent) ? (openBlock(), createElementBlock("div", _hoisted_27$2, [
1880
1889
  createCommentVNode(" Email confirmation "),
1881
- $setup.selectedMethod.device_type === "email" && $setup.emailCodeSent ? (openBlock(), createElementBlock("div", _hoisted_28$2, _cache[14] || (_cache[14] = [
1890
+ $setup.selectedMethod.device_type === "email" && $setup.emailCodeSent ? (openBlock(), createElementBlock("div", _hoisted_28$1, _cache[14] || (_cache[14] = [
1882
1891
  createElementVNode(
1883
1892
  "div",
1884
1893
  { class: "flex items-start space-x-2" },
@@ -1919,21 +1928,21 @@ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
1919
1928
  createCommentVNode(" TOTP Help "),
1920
1929
  $setup.selectedMethod.device_type === "totp" ? (openBlock(), createElementBlock(
1921
1930
  "div",
1922
- _hoisted_29$2,
1931
+ _hoisted_29$1,
1923
1932
  ' Open your authenticator app and enter the 6-digit code for "' + toDisplayString($setup.selectedMethod.device_name) + '" ',
1924
1933
  1
1925
1934
  /* TEXT */
1926
1935
  )) : createCommentVNode("v-if", true),
1927
1936
  createCommentVNode(" Email Resend "),
1928
- $setup.selectedMethod.device_type === "email" ? (openBlock(), createElementBlock("div", _hoisted_30$2, [
1937
+ $setup.selectedMethod.device_type === "email" ? (openBlock(), createElementBlock("div", _hoisted_30$1, [
1929
1938
  createElementVNode("button", {
1930
1939
  onClick: $setup.sendEmailCode,
1931
1940
  disabled: $setup.loading || $setup.cooldownActive,
1932
1941
  class: "text-strands-600 hover:text-strands-800 disabled:text-gray-400 disabled:cursor-not-allowed"
1933
- }, toDisplayString($setup.cooldownActive ? `Resend in ${$setup.cooldownSeconds}s` : "Resend Code"), 9, _hoisted_31$2)
1942
+ }, toDisplayString($setup.cooldownActive ? `Resend in ${$setup.cooldownSeconds}s` : "Resend Code"), 9, _hoisted_31$1)
1934
1943
  ])) : createCommentVNode("v-if", true),
1935
1944
  createCommentVNode(" Backup Codes Option "),
1936
- createElementVNode("div", _hoisted_32$2, [
1945
+ createElementVNode("div", _hoisted_32$1, [
1937
1946
  createElementVNode("button", {
1938
1947
  onClick: _cache[3] || (_cache[3] = ($event) => $setup.showBackupCodeInput = !$setup.showBackupCodeInput),
1939
1948
  class: "flex items-center text-sm text-gray-600 hover:text-gray-800 transition-colors"
@@ -1965,7 +1974,7 @@ function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
1965
1974
  ])
1966
1975
  ]),
1967
1976
  createCommentVNode(" Backup Code Input "),
1968
- $setup.showBackupCodeInput ? (openBlock(), createElementBlock("div", _hoisted_33$2, [
1977
+ $setup.showBackupCodeInput ? (openBlock(), createElementBlock("div", _hoisted_33$1, [
1969
1978
  _cache[16] || (_cache[16] = createElementVNode(
1970
1979
  "div",
1971
1980
  { class: "flex items-start space-x-2 mb-3" },
@@ -3407,7 +3416,7 @@ const _hoisted_16$5 = { class: "alert-error" };
3407
3416
  const _hoisted_17$5 = { class: "flex items-start gap-3" };
3408
3417
  const _hoisted_18$5 = { class: "font-medium" };
3409
3418
  const _hoisted_19$5 = { class: "mt-8 text-center" };
3410
- const _hoisted_20$3 = { class: "text-sm text-neutral-600" };
3419
+ const _hoisted_20$4 = { class: "text-sm text-neutral-600" };
3411
3420
  const _hoisted_21$3 = { key: 0 };
3412
3421
  const _hoisted_22$2 = { class: "text-neutral-400 text-sm" };
3413
3422
  function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
@@ -3672,7 +3681,7 @@ function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
3672
3681
  ])) : createCommentVNode("v-if", true),
3673
3682
  createCommentVNode(" Sign in link "),
3674
3683
  createElementVNode("div", _hoisted_19$5, [
3675
- createElementVNode("p", _hoisted_20$3, [
3684
+ createElementVNode("p", _hoisted_20$4, [
3676
3685
  _cache[10] || (_cache[10] = createTextVNode(
3677
3686
  " Already have an account? ",
3678
3687
  -1
@@ -7822,7 +7831,7 @@ const _hoisted_18$3 = {
7822
7831
  class: "space-y-4"
7823
7832
  };
7824
7833
  const _hoisted_19$3 = { class: "text-center" };
7825
- const _hoisted_20$2 = { class: "text-sm text-gray-600 mb-6" };
7834
+ const _hoisted_20$3 = { class: "text-sm text-gray-600 mb-6" };
7826
7835
  const _hoisted_21$2 = { class: "flex justify-end space-x-3 pt-4" };
7827
7836
  function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
7828
7837
  return openBlock(), createBlock($setup["UiModal"], {
@@ -8275,7 +8284,7 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
8275
8284
  )),
8276
8285
  createElementVNode(
8277
8286
  "p",
8278
- _hoisted_20$2,
8287
+ _hoisted_20$3,
8279
8288
  toDisplayString($setup.errorMessage),
8280
8289
  1
8281
8290
  /* TEXT */
@@ -9008,21 +9017,15 @@ const _hoisted_15$2 = { class: "flex flex-col space-y-2 ml-4" };
9008
9017
  const _hoisted_16$2 = { class: "flex items-center justify-between" };
9009
9018
  const _hoisted_17$2 = { class: "flex-shrink-0 w-14 h-14 bg-[var(--strands-primary)] bg-opacity-10 rounded-xl flex items-center justify-center group-hover:bg-[var(--strands-primary)] group-hover:bg-opacity-15 transition-colors" };
9010
9019
  const _hoisted_18$2 = { class: "flex flex-col space-y-2 ml-4" };
9011
- const _hoisted_19$2 = { class: "flex items-center justify-between" };
9012
- const _hoisted_20$1 = { class: "flex-shrink-0 w-14 h-14 bg-[var(--strands-primary)] bg-opacity-10 rounded-xl flex items-center justify-center group-hover:bg-[var(--strands-primary)] group-hover:bg-opacity-15 transition-colors" };
9013
- const _hoisted_21$1 = { class: "flex flex-col space-y-2 ml-4" };
9014
- const _hoisted_22$1 = { class: "flex items-center justify-between" };
9015
- const _hoisted_23$1 = { class: "flex-shrink-0 w-14 h-14 bg-[var(--strands-primary)] bg-opacity-10 rounded-xl flex items-center justify-center group-hover:bg-[var(--strands-primary)] group-hover:bg-opacity-15 transition-colors" };
9016
- const _hoisted_24$1 = { class: "flex flex-col space-y-2 ml-4" };
9017
- const _hoisted_25$1 = { class: "space-y-6" };
9018
- const _hoisted_26$1 = { class: "max-h-96 overflow-y-auto space-y-4 pr-2" };
9019
- const _hoisted_27$1 = { class: "flex items-start justify-between" };
9020
- const _hoisted_28$1 = { class: "flex items-start space-x-4" };
9021
- const _hoisted_29$1 = { class: "min-w-0 flex-1" };
9022
- const _hoisted_30$1 = { class: "font-semibold text-gray-900 text-lg" };
9023
- const _hoisted_31$1 = { class: "text-sm text-gray-600 mt-1" };
9024
- const _hoisted_32$1 = { class: "text-xs text-gray-500 mt-2" };
9025
- const _hoisted_33$1 = { class: "flex flex-col space-y-2 ml-4" };
9020
+ const _hoisted_19$2 = { class: "space-y-6" };
9021
+ const _hoisted_20$2 = { class: "max-h-96 overflow-y-auto space-y-4 pr-2" };
9022
+ const _hoisted_21$1 = { class: "flex items-start justify-between" };
9023
+ const _hoisted_22$1 = { class: "flex items-start space-x-4" };
9024
+ const _hoisted_23$1 = { class: "min-w-0 flex-1" };
9025
+ const _hoisted_24$1 = { class: "font-semibold text-gray-900 text-lg" };
9026
+ const _hoisted_25$1 = { class: "text-sm text-gray-600 mt-1" };
9027
+ const _hoisted_26$1 = { class: "text-xs text-gray-500 mt-2" };
9028
+ const _hoisted_27$1 = { class: "flex flex-col space-y-2 ml-4" };
9026
9029
  function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
9027
9030
  return openBlock(), createElementBlock(
9028
9031
  Fragment,
@@ -9153,7 +9156,7 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
9153
9156
  createCommentVNode(" Tab Content: Add New Device "),
9154
9157
  $setup.activeTab === "add" ? (openBlock(), createElementBlock("div", _hoisted_11$2, [
9155
9158
  createElementVNode("div", null, [
9156
- _cache[21] || (_cache[21] = createElementVNode(
9159
+ _cache[17] || (_cache[17] = createElementVNode(
9157
9160
  "h3",
9158
9161
  { class: "text-xl font-semibold text-gray-900 mb-6" },
9159
9162
  "Choose Your Authentication Method",
@@ -9249,94 +9252,35 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
9249
9252
  ])
9250
9253
  ])
9251
9254
  ]),
9252
- createCommentVNode(" Hardware Key Setup "),
9253
- createElementVNode("div", {
9254
- class: "group p-6 bg-white border border-gray-200 rounded-xl hover:border-gray-300 hover:shadow-md transition-all duration-200 cursor-pointer",
9255
- onClick: $setup.startHardwareKeySetup
9256
- }, [
9257
- createElementVNode("div", _hoisted_19$2, [
9258
- createElementVNode("div", _hoisted_20$1, [
9259
- createVNode($setup["KeyRound"], {
9260
- size: 24,
9261
- class: "text-[var(--strands-primary)]"
9262
- })
9263
- ]),
9264
- _cache[18] || (_cache[18] = createElementVNode(
9265
- "div",
9266
- { class: "flex items-start space-x-4" },
9267
- [
9268
- createElementVNode("div", { class: "min-w-0 flex-1" }, [
9269
- createElementVNode("h4", { class: "font-semibold text-gray-900 text-lg" }, "Hardware Security Key"),
9270
- createElementVNode("p", { class: "text-xs text-gray-500 mt-2" }, " Use YubiKey, FIDO2, or other physical security keys for ultimate protection ")
9271
- ])
9272
- ],
9273
- -1
9274
- /* CACHED */
9275
- )),
9276
- createElementVNode("div", _hoisted_21$1, [
9277
- createVNode($setup["StrandsUiButton"], {
9278
- variant: "primary",
9279
- size: "md",
9280
- onClick: withModifiers($setup.startHardwareKeySetup, ["stop"]),
9281
- disabled: $setup.mfaLoading
9282
- }, {
9283
- default: withCtx(() => _cache[17] || (_cache[17] = [
9284
- createTextVNode(
9285
- " Setup ",
9286
- -1
9287
- /* CACHED */
9288
- )
9289
- ])),
9290
- _: 1,
9291
- __: [17]
9292
- }, 8, ["disabled"])
9293
- ])
9294
- ])
9295
- ]),
9296
- createCommentVNode(" Passkey Setup "),
9297
- createElementVNode("div", {
9298
- class: "group p-6 bg-white border border-gray-200 rounded-xl hover:border-gray-300 hover:shadow-md transition-all duration-200 cursor-pointer",
9299
- onClick: $setup.startPasskeySetup
9300
- }, [
9301
- createElementVNode("div", _hoisted_22$1, [
9302
- createElementVNode("div", _hoisted_23$1, [
9303
- createVNode($setup["Shield"], {
9304
- size: 24,
9305
- class: "text-[var(--strands-primary)]"
9306
- })
9307
- ]),
9308
- _cache[20] || (_cache[20] = createElementVNode(
9309
- "div",
9310
- { class: "flex items-start space-x-4" },
9311
- [
9312
- createElementVNode("div", { class: "min-w-0 flex-1" }, [
9313
- createElementVNode("h4", { class: "font-semibold text-gray-900 text-lg" }, "Passkey"),
9314
- createElementVNode("p", { class: "text-xs text-gray-500 mt-2" }, " Use your device's built-in biometrics, PIN, or cross-device passkeys ")
9315
- ])
9316
- ],
9317
- -1
9318
- /* CACHED */
9319
- )),
9320
- createElementVNode("div", _hoisted_24$1, [
9321
- createVNode($setup["StrandsUiButton"], {
9322
- variant: "primary",
9323
- size: "md",
9324
- onClick: withModifiers($setup.startPasskeySetup, ["stop"]),
9325
- disabled: $setup.mfaLoading
9326
- }, {
9327
- default: withCtx(() => _cache[19] || (_cache[19] = [
9328
- createTextVNode(
9329
- " Setup ",
9330
- -1
9331
- /* CACHED */
9332
- )
9333
- ])),
9334
- _: 1,
9335
- __: [19]
9336
- }, 8, ["disabled"])
9337
- ])
9338
- ])
9339
- ])
9255
+ createCommentVNode(" Hardware Key Setup - Temporarily Disabled "),
9256
+ createCommentVNode(' \n <div class="group p-6 bg-white border border-gray-200 rounded-xl hover:border-gray-300 hover:shadow-md transition-all duration-200 cursor-pointer" @click="startHardwareKeySetup">\n <div class="flex items-center justify-between">\n <div class="flex-shrink-0 w-14 h-14 bg-[var(--strands-primary)] bg-opacity-10 rounded-xl flex items-center justify-center group-hover:bg-[var(--strands-primary)] group-hover:bg-opacity-15 transition-colors">\n <KeyRound :size="24" class="text-[var(--strands-primary)]" />\n </div>\n <div class="flex items-start space-x-4">\n <div class="min-w-0 flex-1">\n <h4 class="font-semibold text-gray-900 text-lg">Hardware Security Key</h4>\n <p class="text-xs text-gray-500 mt-2">\n Use YubiKey, FIDO2, or other physical security keys for ultimate protection\n </p>\n </div>\n </div>\n <div class="flex flex-col space-y-2 ml-4">\n <StrandsUiButton\n variant="primary"\n size="md"\n @click.stop="startHardwareKeySetup"\n :disabled="mfaLoading"\n >\n Setup\n </StrandsUiButton>\n </div>\n </div>\n </div>\n\n <-- Passkey Setup - Temporarily Disabled '),
9257
+ createCommentVNode(`
9258
+ <div class="group p-6 bg-white border border-gray-200 rounded-xl hover:border-gray-300 hover:shadow-md transition-all duration-200 cursor-pointer" @click="startPasskeySetup">
9259
+ <div class="flex items-center justify-between">
9260
+ <div class="flex-shrink-0 w-14 h-14 bg-[var(--strands-primary)] bg-opacity-10 rounded-xl flex items-center justify-center group-hover:bg-[var(--strands-primary)] group-hover:bg-opacity-15 transition-colors">
9261
+ <Shield :size="24" class="text-[var(--strands-primary)]" />
9262
+ </div>
9263
+ <div class="flex items-start space-x-4">
9264
+ <div class="min-w-0 flex-1">
9265
+ <h4 class="font-semibold text-gray-900 text-lg">Passkey</h4>
9266
+ <p class="text-xs text-gray-500 mt-2">
9267
+ Use your device's built-in biometrics, PIN, or cross-device passkeys
9268
+ </p>
9269
+ </div>
9270
+ </div>
9271
+ <div class="flex flex-col space-y-2 ml-4">
9272
+ <StrandsUiButton
9273
+ variant="primary"
9274
+ size="md"
9275
+ @click.stop="startPasskeySetup"
9276
+ :disabled="mfaLoading"
9277
+ >
9278
+ Setup
9279
+ </StrandsUiButton>
9280
+ </div>
9281
+ </div>
9282
+ </div>
9283
+ `)
9340
9284
  ])
9341
9285
  ])
9342
9286
  ])) : $setup.activeTab === "manage" && $setup.activeMfaDevices.length > 0 ? (openBlock(), createElementBlock(
@@ -9344,16 +9288,16 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
9344
9288
  { key: 1 },
9345
9289
  [
9346
9290
  createCommentVNode(" Tab Content: Active Devices "),
9347
- createElementVNode("div", _hoisted_25$1, [
9291
+ createElementVNode("div", _hoisted_19$2, [
9348
9292
  createElementVNode("div", null, [
9349
- _cache[25] || (_cache[25] = createElementVNode(
9293
+ _cache[21] || (_cache[21] = createElementVNode(
9350
9294
  "h3",
9351
9295
  { class: "text-xl font-semibold text-gray-900 mb-6" },
9352
9296
  "Manage Your Active Devices",
9353
9297
  -1
9354
9298
  /* CACHED */
9355
9299
  )),
9356
- createElementVNode("div", _hoisted_26$1, [
9300
+ createElementVNode("div", _hoisted_20$2, [
9357
9301
  (openBlock(true), createElementBlock(
9358
9302
  Fragment,
9359
9303
  null,
@@ -9362,8 +9306,8 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
9362
9306
  key: device.id,
9363
9307
  class: "group p-6 bg-white border border-gray-200 rounded-xl hover:border-gray-300 hover:shadow-md transition-all duration-200"
9364
9308
  }, [
9365
- createElementVNode("div", _hoisted_27$1, [
9366
- createElementVNode("div", _hoisted_28$1, [
9309
+ createElementVNode("div", _hoisted_21$1, [
9310
+ createElementVNode("div", _hoisted_22$1, [
9367
9311
  createElementVNode(
9368
9312
  "div",
9369
9313
  {
@@ -9378,31 +9322,31 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
9378
9322
  2
9379
9323
  /* CLASS */
9380
9324
  ),
9381
- createElementVNode("div", _hoisted_29$1, [
9325
+ createElementVNode("div", _hoisted_23$1, [
9382
9326
  createElementVNode(
9383
9327
  "h4",
9384
- _hoisted_30$1,
9328
+ _hoisted_24$1,
9385
9329
  toDisplayString(device.device_name),
9386
9330
  1
9387
9331
  /* TEXT */
9388
9332
  ),
9389
9333
  createElementVNode(
9390
9334
  "p",
9391
- _hoisted_31$1,
9335
+ _hoisted_25$1,
9392
9336
  toDisplayString($setup.getDeviceTypeName(device.device_type)),
9393
9337
  1
9394
9338
  /* TEXT */
9395
9339
  ),
9396
9340
  createElementVNode(
9397
9341
  "p",
9398
- _hoisted_32$1,
9342
+ _hoisted_26$1,
9399
9343
  " Last used " + toDisplayString($setup.formatLastUsed(device.last_used_at)),
9400
9344
  1
9401
9345
  /* TEXT */
9402
9346
  )
9403
9347
  ])
9404
9348
  ]),
9405
- createElementVNode("div", _hoisted_33$1, [
9349
+ createElementVNode("div", _hoisted_27$1, [
9406
9350
  createCommentVNode(" Backup codes button for TOTP, Hardware Key, and Passkey devices "),
9407
9351
  device.device_type === "totp" || device.device_type === "hardware" || device.device_type === "passkey" ? (openBlock(), createBlock($setup["StrandsUiButton"], {
9408
9352
  key: 0,
@@ -9416,14 +9360,14 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
9416
9360
  size: 14,
9417
9361
  class: "mr-2"
9418
9362
  }),
9419
- _cache[22] || (_cache[22] = createTextVNode(
9363
+ _cache[18] || (_cache[18] = createTextVNode(
9420
9364
  " Backup Codes ",
9421
9365
  -1
9422
9366
  /* CACHED */
9423
9367
  ))
9424
9368
  ]),
9425
9369
  _: 2,
9426
- __: [22]
9370
+ __: [18]
9427
9371
  }, 1032, ["onClick", "disabled"])) : createCommentVNode("v-if", true),
9428
9372
  createCommentVNode(" Test email MFA "),
9429
9373
  device.device_type === "email" ? (openBlock(), createBlock($setup["StrandsUiButton"], {
@@ -9438,14 +9382,14 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
9438
9382
  size: 14,
9439
9383
  class: "mr-2"
9440
9384
  }),
9441
- _cache[23] || (_cache[23] = createTextVNode(
9385
+ _cache[19] || (_cache[19] = createTextVNode(
9442
9386
  " Send Test Code ",
9443
9387
  -1
9444
9388
  /* CACHED */
9445
9389
  ))
9446
9390
  ]),
9447
9391
  _: 2,
9448
- __: [23]
9392
+ __: [19]
9449
9393
  }, 1032, ["onClick", "disabled"])) : createCommentVNode("v-if", true),
9450
9394
  createCommentVNode(" Remove device "),
9451
9395
  createVNode($setup["StrandsUiButton"], {
@@ -9460,14 +9404,14 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
9460
9404
  size: 14,
9461
9405
  class: "mr-2"
9462
9406
  }),
9463
- _cache[24] || (_cache[24] = createTextVNode(
9407
+ _cache[20] || (_cache[20] = createTextVNode(
9464
9408
  " Remove ",
9465
9409
  -1
9466
9410
  /* CACHED */
9467
9411
  ))
9468
9412
  ]),
9469
9413
  _: 2,
9470
- __: [24]
9414
+ __: [20]
9471
9415
  }, 1032, ["onClick", "disabled"])
9472
9416
  ])
9473
9417
  ])
@@ -9993,7 +9937,7 @@ const _hoisted_16$1 = {
9993
9937
  const _hoisted_17$1 = { class: "space-y-3 md:space-y-4" };
9994
9938
  const _hoisted_18$1 = { class: "space-y-4 p-4 bg-gray-50 rounded-xl" };
9995
9939
  const _hoisted_19$1 = { class: "flex items-center justify-between gap-2" };
9996
- const _hoisted_20 = { class: "text-sm text-gray-600" };
9940
+ const _hoisted_20$1 = { class: "text-sm text-gray-600" };
9997
9941
  const _hoisted_21 = {
9998
9942
  key: 0,
9999
9943
  class: "space-y-3 overflow-hidden"
@@ -10255,7 +10199,7 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
10255
10199
  )),
10256
10200
  createElementVNode(
10257
10201
  "p",
10258
- _hoisted_20,
10202
+ _hoisted_20$1,
10259
10203
  "Last updated " + toDisplayString($setup.passwordLastUpdated),
10260
10204
  1
10261
10205
  /* TEXT */
@@ -10898,15 +10842,16 @@ const _hoisted_10 = { class: "flex flex-col items-center text-center space-y-4"
10898
10842
  const _hoisted_11 = { class: "w-16 h-16 bg-[var(--strands-primary)] bg-opacity-10 rounded-xl flex items-center justify-center group-hover:bg-[var(--strands-primary)] group-hover:bg-opacity-15 transition-colors" };
10899
10843
  const _hoisted_12 = { class: "flex flex-col items-center text-center space-y-4" };
10900
10844
  const _hoisted_13 = { class: "w-16 h-16 bg-[var(--strands-primary)] bg-opacity-10 rounded-xl flex items-center justify-center group-hover:bg-[var(--strands-primary)] group-hover:bg-opacity-15 transition-colors" };
10901
- const _hoisted_14 = { class: "flex flex-col items-center text-center space-y-4" };
10902
- const _hoisted_15 = { class: "w-16 h-16 bg-[var(--strands-primary)] bg-opacity-10 rounded-xl flex items-center justify-center group-hover:bg-[var(--strands-primary)] group-hover:bg-opacity-15 transition-colors" };
10903
- const _hoisted_16 = {
10845
+ const _hoisted_14 = { class: "group p-8 border border-gray-300 rounded-xl bg-gray-50 opacity-60 cursor-not-allowed" };
10846
+ const _hoisted_15 = { class: "flex flex-col items-center text-center space-y-4" };
10847
+ const _hoisted_16 = { class: "w-16 h-16 bg-gray-200 rounded-xl flex items-center justify-center" };
10848
+ const _hoisted_17 = {
10904
10849
  key: 1,
10905
10850
  class: "border-t border-gray-200 pt-8"
10906
10851
  };
10907
- const _hoisted_17 = { class: "flex items-center justify-between" };
10908
- const _hoisted_18 = { class: "text-gray-600 text-sm mt-1" };
10909
- const _hoisted_19 = { class: "flex justify-end space-x-3" };
10852
+ const _hoisted_18 = { class: "flex items-center justify-between" };
10853
+ const _hoisted_19 = { class: "text-gray-600 text-sm mt-1" };
10854
+ const _hoisted_20 = { class: "flex justify-end space-x-3" };
10910
10855
  function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
10911
10856
  return openBlock(), createElementBlock(
10912
10857
  Fragment,
@@ -10943,7 +10888,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
10943
10888
  ])
10944
10889
  ]),
10945
10890
  footer: withCtx(() => [
10946
- createElementVNode("div", _hoisted_19, [
10891
+ createElementVNode("div", _hoisted_20, [
10947
10892
  createVNode($setup["StrandsUiButton"], {
10948
10893
  variant: "secondary",
10949
10894
  onClick: $setup.closeModal,
@@ -11092,52 +11037,48 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
11092
11037
  }, 8, ["disabled"])
11093
11038
  ])
11094
11039
  ]),
11095
- createCommentVNode(" Hardware Key Setup "),
11096
- createElementVNode("div", {
11097
- class: "group p-8 border border-gray-200 rounded-xl hover:shadow-lg hover:border-[var(--strands-primary)] transition-all duration-200 cursor-pointer",
11098
- onClick: $setup.startHardwareKeySetup
11099
- }, [
11100
- createElementVNode("div", _hoisted_14, [
11101
- createElementVNode("div", _hoisted_15, [
11040
+ createCommentVNode(" Hardware Key Setup - Temporarily Disabled "),
11041
+ createElementVNode("div", _hoisted_14, [
11042
+ createElementVNode("div", _hoisted_15, [
11043
+ createElementVNode("div", _hoisted_16, [
11102
11044
  createVNode($setup["KeyRound"], {
11103
11045
  size: 28,
11104
- class: "text-[var(--strands-primary)]"
11046
+ class: "text-gray-400"
11105
11047
  })
11106
11048
  ]),
11107
11049
  _cache[12] || (_cache[12] = createElementVNode(
11108
11050
  "div",
11109
11051
  { class: "space-y-2" },
11110
11052
  [
11111
- createElementVNode("h4", { class: "font-semibold text-gray-900 text-lg" }, "Hardware Key & Passkeys"),
11112
- createElementVNode("p", { class: "text-sm text-gray-500 leading-relaxed" }, "Use YubiKey, FIDO2 devices, WebAuthn, or built-in passkeys for maximum security")
11053
+ createElementVNode("h4", { class: "font-semibold text-gray-500 text-lg" }, "Hardware Key & Passkeys"),
11054
+ createElementVNode("p", { class: "text-sm text-gray-400 leading-relaxed" }, "Temporarily unavailable - cross-domain support coming soon")
11113
11055
  ],
11114
11056
  -1
11115
11057
  /* CACHED */
11116
11058
  )),
11117
11059
  createVNode($setup["StrandsUiButton"], {
11118
- variant: "primary",
11060
+ variant: "secondary",
11119
11061
  size: "md",
11120
- onClick: withModifiers($setup.startHardwareKeySetup, ["stop"]),
11121
- disabled: $setup.loading,
11062
+ disabled: "",
11122
11063
  class: "w-full mt-4"
11123
11064
  }, {
11124
11065
  default: withCtx(() => _cache[11] || (_cache[11] = [
11125
11066
  createTextVNode(
11126
- " Setup Hardware Key ",
11067
+ " Coming Soon ",
11127
11068
  -1
11128
11069
  /* CACHED */
11129
11070
  )
11130
11071
  ])),
11131
11072
  _: 1,
11132
11073
  __: [11]
11133
- }, 8, ["disabled"])
11074
+ })
11134
11075
  ])
11135
11076
  ])
11136
11077
  ])
11137
11078
  ]),
11138
11079
  createCommentVNode(" Manage Existing "),
11139
- $setup.activeMfaDevices.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_16, [
11140
- createElementVNode("div", _hoisted_17, [
11080
+ $setup.activeMfaDevices.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_17, [
11081
+ createElementVNode("div", _hoisted_18, [
11141
11082
  createElementVNode("div", null, [
11142
11083
  _cache[14] || (_cache[14] = createElementVNode(
11143
11084
  "h3",
@@ -11148,7 +11089,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
11148
11089
  )),
11149
11090
  createElementVNode(
11150
11091
  "p",
11151
- _hoisted_18,
11092
+ _hoisted_19,
11152
11093
  toDisplayString($setup.activeMfaDevices.length) + " device(s) currently active",
11153
11094
  1
11154
11095
  /* TEXT */