@datatechsolutions/ui 3.4.0 → 3.5.1

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 (105) hide show
  1. package/dist/astrlabe/index.js +107 -107
  2. package/dist/astrlabe/index.mjs +3 -3
  3. package/dist/astrlabe/workflow-canvas.js +3 -3
  4. package/dist/astrlabe/workflow-canvas.mjs +2 -2
  5. package/dist/{chunk-IDEM3DYF.mjs → chunk-2TBNOQ7M.mjs} +3 -3
  6. package/dist/{chunk-IDEM3DYF.mjs.map → chunk-2TBNOQ7M.mjs.map} +1 -1
  7. package/dist/{chunk-45QAUEYT.js → chunk-2UMDWOUY.js} +4 -4
  8. package/dist/{chunk-45QAUEYT.js.map → chunk-2UMDWOUY.js.map} +1 -1
  9. package/dist/{chunk-NAFWHJCM.mjs → chunk-37ZLBCJF.mjs} +6 -6
  10. package/dist/{chunk-NAFWHJCM.mjs.map → chunk-37ZLBCJF.mjs.map} +1 -1
  11. package/dist/{chunk-MO5FBVV3.js → chunk-5AVO5DJO.js} +62 -62
  12. package/dist/{chunk-MO5FBVV3.js.map → chunk-5AVO5DJO.js.map} +1 -1
  13. package/dist/{chunk-X3GW7UPN.mjs → chunk-7OZ4MVEF.mjs} +4 -4
  14. package/dist/{chunk-X3GW7UPN.mjs.map → chunk-7OZ4MVEF.mjs.map} +1 -1
  15. package/dist/{chunk-SQ4KGLBZ.mjs → chunk-CDYNTHUE.mjs} +41 -7
  16. package/dist/chunk-CDYNTHUE.mjs.map +1 -0
  17. package/dist/{chunk-ZKSDDFHG.mjs → chunk-CJGNEALB.mjs} +4 -4
  18. package/dist/{chunk-ZKSDDFHG.mjs.map → chunk-CJGNEALB.mjs.map} +1 -1
  19. package/dist/{chunk-4GDWGWHY.mjs → chunk-CP5QXRXA.mjs} +4 -4
  20. package/dist/{chunk-4GDWGWHY.mjs.map → chunk-CP5QXRXA.mjs.map} +1 -1
  21. package/dist/{chunk-SEYUYGER.mjs → chunk-EGXB3WXT.mjs} +12 -11
  22. package/dist/chunk-EGXB3WXT.mjs.map +1 -0
  23. package/dist/{chunk-UJVDI66K.js → chunk-EI6FIA45.js} +16 -16
  24. package/dist/{chunk-UJVDI66K.js.map → chunk-EI6FIA45.js.map} +1 -1
  25. package/dist/{chunk-AGGOHPMZ.mjs → chunk-EUXHJMGC.mjs} +138 -108
  26. package/dist/chunk-EUXHJMGC.mjs.map +1 -0
  27. package/dist/{chunk-M7KSEUZR.js → chunk-F5UDX6JA.js} +74 -74
  28. package/dist/{chunk-M7KSEUZR.js.map → chunk-F5UDX6JA.js.map} +1 -1
  29. package/dist/{chunk-6MBWKOPF.js → chunk-HVDDCBQ2.js} +33 -33
  30. package/dist/{chunk-6MBWKOPF.js.map → chunk-HVDDCBQ2.js.map} +1 -1
  31. package/dist/{chunk-FSBR4RCK.js → chunk-K4M4B6ME.js} +138 -108
  32. package/dist/chunk-K4M4B6ME.js.map +1 -0
  33. package/dist/{chunk-4ICEQJH4.js → chunk-KIBOX3UQ.js} +53 -53
  34. package/dist/{chunk-4ICEQJH4.js.map → chunk-KIBOX3UQ.js.map} +1 -1
  35. package/dist/{chunk-NCLZKVJK.js → chunk-KRPSTXN5.js} +9 -9
  36. package/dist/{chunk-NCLZKVJK.js.map → chunk-KRPSTXN5.js.map} +1 -1
  37. package/dist/{chunk-NVQWHJQH.mjs → chunk-L5O4NWQO.mjs} +3 -3
  38. package/dist/{chunk-NVQWHJQH.mjs.map → chunk-L5O4NWQO.mjs.map} +1 -1
  39. package/dist/{chunk-Y2AYFG4E.js → chunk-MT4FJRMD.js} +4 -4
  40. package/dist/{chunk-Y2AYFG4E.js.map → chunk-MT4FJRMD.js.map} +1 -1
  41. package/dist/{chunk-CF7GOUBQ.js → chunk-OWJIKCR2.js} +13 -13
  42. package/dist/{chunk-CF7GOUBQ.js.map → chunk-OWJIKCR2.js.map} +1 -1
  43. package/dist/{chunk-RFRXS4PC.mjs → chunk-PFHXKWFT.mjs} +3 -3
  44. package/dist/{chunk-RFRXS4PC.mjs.map → chunk-PFHXKWFT.mjs.map} +1 -1
  45. package/dist/{chunk-BW67WFHT.mjs → chunk-PI2C3S6A.mjs} +3 -3
  46. package/dist/{chunk-BW67WFHT.mjs.map → chunk-PI2C3S6A.mjs.map} +1 -1
  47. package/dist/{chunk-ERCDMBRT.js → chunk-PYQLY2RH.js} +168 -167
  48. package/dist/chunk-PYQLY2RH.js.map +1 -0
  49. package/dist/{chunk-UE2RDQIK.js → chunk-QIUVK4BI.js} +77 -77
  50. package/dist/{chunk-UE2RDQIK.js.map → chunk-QIUVK4BI.js.map} +1 -1
  51. package/dist/{chunk-RLVOG5OQ.mjs → chunk-R3Q5RXXO.mjs} +3 -3
  52. package/dist/{chunk-RLVOG5OQ.mjs.map → chunk-R3Q5RXXO.mjs.map} +1 -1
  53. package/dist/{chunk-QBFE7ABE.mjs → chunk-R6O57NTJ.mjs} +6 -6
  54. package/dist/{chunk-QBFE7ABE.mjs.map → chunk-R6O57NTJ.mjs.map} +1 -1
  55. package/dist/{chunk-TUQLZ4QD.js → chunk-RQBTLFYH.js} +5 -5
  56. package/dist/{chunk-TUQLZ4QD.js.map → chunk-RQBTLFYH.js.map} +1 -1
  57. package/dist/{chunk-YV7F7IXG.js → chunk-SFFSXC5E.js} +36 -36
  58. package/dist/{chunk-YV7F7IXG.js.map → chunk-SFFSXC5E.js.map} +1 -1
  59. package/dist/{chunk-RLLP7VQJ.js → chunk-U6XA2OYE.js} +63 -29
  60. package/dist/chunk-U6XA2OYE.js.map +1 -0
  61. package/dist/{chunk-CUWPLPVY.mjs → chunk-ULEPJXTN.mjs} +3 -3
  62. package/dist/{chunk-CUWPLPVY.mjs.map → chunk-ULEPJXTN.mjs.map} +1 -1
  63. package/dist/{chunk-PGVZKMOA.js → chunk-VMIAMBCP.js} +39 -39
  64. package/dist/{chunk-PGVZKMOA.js.map → chunk-VMIAMBCP.js.map} +1 -1
  65. package/dist/{chunk-VV6SYMPM.mjs → chunk-WKCR4KVQ.mjs} +3 -3
  66. package/dist/{chunk-VV6SYMPM.mjs.map → chunk-WKCR4KVQ.mjs.map} +1 -1
  67. package/dist/{chunk-AL73YAV4.mjs → chunk-YV2SE5LS.mjs} +3 -3
  68. package/dist/{chunk-AL73YAV4.mjs.map → chunk-YV2SE5LS.mjs.map} +1 -1
  69. package/dist/index.d.mts +63 -16
  70. package/dist/index.d.ts +63 -16
  71. package/dist/index.js +704 -704
  72. package/dist/index.mjs +1 -1
  73. package/dist/platform/admin/index.js +10 -10
  74. package/dist/platform/admin/index.mjs +4 -4
  75. package/dist/platform/agents-workspace.js +6 -6
  76. package/dist/platform/agents-workspace.mjs +5 -5
  77. package/dist/platform/app-shell.js +3 -3
  78. package/dist/platform/app-shell.mjs +2 -2
  79. package/dist/platform/auth/index.js +27 -27
  80. package/dist/platform/auth/index.mjs +4 -4
  81. package/dist/platform/billing/index.js +3 -3
  82. package/dist/platform/billing/index.mjs +2 -2
  83. package/dist/platform/impersonation/index.js +3 -3
  84. package/dist/platform/impersonation/index.mjs +2 -2
  85. package/dist/platform/index.d.mts +1 -1
  86. package/dist/platform/index.d.ts +1 -1
  87. package/dist/platform/index.js +82 -82
  88. package/dist/platform/index.mjs +18 -18
  89. package/dist/platform/pages/index.d.mts +8 -0
  90. package/dist/platform/pages/index.d.ts +8 -0
  91. package/dist/platform/pages/index.js +317 -201
  92. package/dist/platform/pages/index.js.map +1 -1
  93. package/dist/platform/pages/index.mjs +143 -27
  94. package/dist/platform/pages/index.mjs.map +1 -1
  95. package/dist/platform/settings/index.js +7 -7
  96. package/dist/platform/settings/index.mjs +6 -6
  97. package/dist/platform/workflow-canvas-shell.js +4 -4
  98. package/dist/platform/workflow-canvas-shell.mjs +3 -3
  99. package/package.json +1 -1
  100. package/dist/chunk-AGGOHPMZ.mjs.map +0 -1
  101. package/dist/chunk-ERCDMBRT.js.map +0 -1
  102. package/dist/chunk-FSBR4RCK.js.map +0 -1
  103. package/dist/chunk-RLLP7VQJ.js.map +0 -1
  104. package/dist/chunk-SEYUYGER.mjs.map +0 -1
  105. package/dist/chunk-SQ4KGLBZ.mjs.map +0 -1
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunk45QAUEYT_js = require('./chunk-45QAUEYT.js');
5
- var chunkFSBR4RCK_js = require('./chunk-FSBR4RCK.js');
4
+ var chunk2UMDWOUY_js = require('./chunk-2UMDWOUY.js');
5
+ var chunkK4M4B6ME_js = require('./chunk-K4M4B6ME.js');
6
6
  var chunkUZ3CMNUJ_js = require('./chunk-UZ3CMNUJ.js');
7
7
  var chunkYXN2K77G_js = require('./chunk-YXN2K77G.js');
8
8
  var react = require('react');
@@ -39,7 +39,7 @@ function MfaSetup({
39
39
  onVerifySetup
40
40
  }) {
41
41
  const t = chunkYXN2K77G_js.useTranslations("windsock");
42
- const { client } = chunkFSBR4RCK_js.useAuth();
42
+ const { client } = chunkK4M4B6ME_js.useAuth();
43
43
  const setupSteps = [
44
44
  {
45
45
  id: "method",
@@ -161,7 +161,7 @@ function MfaSetup({
161
161
  }
162
162
  })();
163
163
  return /* @__PURE__ */ jsxRuntime.jsxs(
164
- chunkFSBR4RCK_js.StepFormPage,
164
+ chunkK4M4B6ME_js.StepFormPage,
165
165
  {
166
166
  title: t("mfa.setup.title"),
167
167
  subtitle: enforcement === "required" ? t("mfa.setup.subtitleRequired") : t("mfa.setup.subtitleOptional"),
@@ -178,7 +178,7 @@ function MfaSetup({
178
178
  canAdvance,
179
179
  children: [
180
180
  currentStep === 0 && /* @__PURE__ */ jsxRuntime.jsx(
181
- chunkFSBR4RCK_js.OptionGrid,
181
+ chunkK4M4B6ME_js.OptionGrid,
182
182
  {
183
183
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ShieldCheckIcon, { className: "h-4 w-4" }),
184
184
  title: t("mfa.setup.methodGridTitle"),
@@ -194,7 +194,7 @@ function MfaSetup({
194
194
  columns: 2
195
195
  }
196
196
  ),
197
- currentStep === 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Spinner, {}) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
197
+ currentStep === 1 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center py-8", children: /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Spinner, {}) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
198
198
  qrCodeUri && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-xl bg-white p-4", children: /* @__PURE__ */ jsxRuntime.jsx(
199
199
  "img",
200
200
  {
@@ -210,7 +210,7 @@ function MfaSetup({
210
210
  ] }) }),
211
211
  currentStep === 2 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
212
212
  /* @__PURE__ */ jsxRuntime.jsx(
213
- chunk45QAUEYT_js.OtpInput,
213
+ chunk2UMDWOUY_js.OtpInput,
214
214
  {
215
215
  value: verifyCode,
216
216
  onChange: setVerifyCode,
@@ -220,18 +220,18 @@ function MfaSetup({
220
220
  autoFocus: true
221
221
  }
222
222
  ),
223
- isLoading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Spinner, {}) })
223
+ isLoading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Spinner, {}) })
224
224
  ] }),
225
225
  currentStep === 3 && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
226
226
  /* @__PURE__ */ jsxRuntime.jsx(
227
- chunk45QAUEYT_js.BackupCodeGrid,
227
+ chunk2UMDWOUY_js.BackupCodeGrid,
228
228
  {
229
229
  codes: backupCodes,
230
230
  revealed: true
231
231
  }
232
232
  ),
233
233
  /* @__PURE__ */ jsxRuntime.jsx(
234
- chunkFSBR4RCK_js.FormCheckbox,
234
+ chunkK4M4B6ME_js.FormCheckbox,
235
235
  {
236
236
  label: t("mfa.setup.backupCodesSavedConfirm"),
237
237
  checked: savedBackupCodes,
@@ -252,7 +252,7 @@ function MfaManage({
252
252
  }) {
253
253
  const t = chunkYXN2K77G_js.useTranslations("windsock");
254
254
  const format = chunkYXN2K77G_js.useFormatter();
255
- const { client } = chunkFSBR4RCK_js.useAuth();
255
+ const { client } = chunkK4M4B6ME_js.useAuth();
256
256
  const [isBackupSheetOpen, setIsBackupSheetOpen] = react.useState(false);
257
257
  const [newBackupCodes, setNewBackupCodes] = react.useState([]);
258
258
  const [isRegenerating, setIsRegenerating] = react.useState(false);
@@ -324,20 +324,20 @@ function MfaManage({
324
324
  }, [onEnroll]);
325
325
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
326
326
  /* @__PURE__ */ jsxRuntime.jsx(
327
- chunkFSBR4RCK_js.SectionCard,
327
+ chunkK4M4B6ME_js.SectionCard,
328
328
  {
329
329
  header: {
330
330
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ShieldCheckIcon, { className: "h-5 w-5 text-white" }),
331
331
  title: t("mfa.manage.title"),
332
332
  subtitle: t("mfa.manage.subtitle"),
333
333
  gradient: "from-emerald-500 via-teal-500 to-cyan-500",
334
- rightContent: mfaEnabled ? /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.StatusBadge, { status: "active", label: t("mfa.manage.statusEnabled"), size: "sm" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.StatusBadge, { status: "inactive", label: t("mfa.manage.statusDisabled"), size: "sm" })
334
+ rightContent: mfaEnabled ? /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.StatusBadge, { status: "active", label: t("mfa.manage.statusEnabled"), size: "sm" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.StatusBadge, { status: "inactive", label: t("mfa.manage.statusDisabled"), size: "sm" })
335
335
  },
336
336
  padded: false,
337
337
  children: !mfaEnabled ? (
338
338
  /* MFA not enabled — show empty state with enable CTA */
339
339
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
340
- chunkFSBR4RCK_js.EmptyState,
340
+ chunkK4M4B6ME_js.EmptyState,
341
341
  {
342
342
  message: t("mfa.manage.emptyStateMessage"),
343
343
  description: t("mfa.manage.emptyStateDescription"),
@@ -352,11 +352,11 @@ function MfaManage({
352
352
  ) : (
353
353
  /* MFA enabled — show enrolled methods list + action buttons */
354
354
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 p-4 sm:p-6", children: [
355
- enrolledMethods.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.ListCard, { children: enrolledMethods.map((method, index) => /* @__PURE__ */ jsxRuntime.jsxs(
356
- chunkFSBR4RCK_js.ListCardItem,
355
+ enrolledMethods.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.ListCard, { children: enrolledMethods.map((method, index) => /* @__PURE__ */ jsxRuntime.jsxs(
356
+ chunkK4M4B6ME_js.ListCardItem,
357
357
  {
358
358
  leading: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-9 w-9 rounded-xl bg-gradient-to-br from-emerald-500 to-teal-600 flex items-center justify-center shadow-sm", children: /* @__PURE__ */ jsxRuntime.jsx(outline.ShieldCheckIcon, { className: "h-5 w-5 text-white" }) }),
359
- trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.StatusBadge, { status: "active", label: t("mfa.manage.methodStatusActive"), size: "sm" }),
359
+ trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.StatusBadge, { status: "active", label: t("mfa.manage.methodStatusActive"), size: "sm" }),
360
360
  children: [
361
361
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium text-gray-900 dark:text-white", children: method.label }),
362
362
  method.createdAt && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-0.5", children: t("mfa.manage.methodEnrolledAt", {
@@ -372,7 +372,7 @@ function MfaManage({
372
372
  )) }),
373
373
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 sm:flex-row sm:gap-3", children: [
374
374
  onEnroll && /* @__PURE__ */ jsxRuntime.jsxs(
375
- chunkFSBR4RCK_js.Button,
375
+ chunkK4M4B6ME_js.Button,
376
376
  {
377
377
  color: "ios-glass-blue",
378
378
  onClick: handleEnroll,
@@ -384,7 +384,7 @@ function MfaManage({
384
384
  }
385
385
  ),
386
386
  /* @__PURE__ */ jsxRuntime.jsxs(
387
- chunkFSBR4RCK_js.Button,
387
+ chunkK4M4B6ME_js.Button,
388
388
  {
389
389
  outline: true,
390
390
  onClick: handleOpenBackupSheet,
@@ -398,7 +398,7 @@ function MfaManage({
398
398
  }
399
399
  ),
400
400
  /* @__PURE__ */ jsxRuntime.jsx(
401
- chunkFSBR4RCK_js.Button,
401
+ chunkK4M4B6ME_js.Button,
402
402
  {
403
403
  color: "ios-glass-red",
404
404
  onClick: handleRequestDisable,
@@ -412,7 +412,7 @@ function MfaManage({
412
412
  }
413
413
  ),
414
414
  /* @__PURE__ */ jsxRuntime.jsx(
415
- chunkFSBR4RCK_js.Sheet,
415
+ chunkK4M4B6ME_js.Sheet,
416
416
  {
417
417
  open: isBackupSheetOpen,
418
418
  onClose: handleCloseBackupSheet,
@@ -422,14 +422,14 @@ function MfaManage({
422
422
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 p-4 sm:p-6", children: [
423
423
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-gray-500 dark:text-gray-400", children: t("mfa.manage.backupCodesSheetDescription") }),
424
424
  /* @__PURE__ */ jsxRuntime.jsx(
425
- chunk45QAUEYT_js.BackupCodeGrid,
425
+ chunk2UMDWOUY_js.BackupCodeGrid,
426
426
  {
427
427
  codes: newBackupCodes,
428
428
  revealed: true
429
429
  }
430
430
  ),
431
431
  /* @__PURE__ */ jsxRuntime.jsx(
432
- chunkFSBR4RCK_js.Button,
432
+ chunkK4M4B6ME_js.Button,
433
433
  {
434
434
  color: "ios-glass-blue",
435
435
  fullWidth: true,
@@ -441,7 +441,7 @@ function MfaManage({
441
441
  }
442
442
  ),
443
443
  /* @__PURE__ */ jsxRuntime.jsx(
444
- chunkFSBR4RCK_js.Sheet,
444
+ chunkK4M4B6ME_js.Sheet,
445
445
  {
446
446
  open: isConfirmDisableOpen,
447
447
  onClose: handleCancelDisable,
@@ -454,7 +454,7 @@ function MfaManage({
454
454
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-gray-500 dark:text-gray-400", children: t("mfa.manage.confirmDisableDescription") })
455
455
  ] }),
456
456
  /* @__PURE__ */ jsxRuntime.jsx(
457
- chunkFSBR4RCK_js.PasswordInput,
457
+ chunkK4M4B6ME_js.PasswordInput,
458
458
  {
459
459
  label: t("mfa.manage.disablePasswordLabel"),
460
460
  value: disablePassword,
@@ -468,7 +468,7 @@ function MfaManage({
468
468
  disableError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-red-600 dark:text-red-400", role: "alert", children: disableError }),
469
469
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-3", children: [
470
470
  /* @__PURE__ */ jsxRuntime.jsx(
471
- chunkFSBR4RCK_js.Button,
471
+ chunkK4M4B6ME_js.Button,
472
472
  {
473
473
  outline: true,
474
474
  onClick: handleCancelDisable,
@@ -478,7 +478,7 @@ function MfaManage({
478
478
  }
479
479
  ),
480
480
  /* @__PURE__ */ jsxRuntime.jsx(
481
- chunkFSBR4RCK_js.Button,
481
+ chunkK4M4B6ME_js.Button,
482
482
  {
483
483
  color: "ios-glass-red",
484
484
  onClick: handleConfirmDisable,
@@ -498,7 +498,7 @@ var ALL_TABS = ["profile", "security", "sessions", "linked-accounts"];
498
498
  function ProfileTabContent({ onProfileUpdate }) {
499
499
  const t = chunkYXN2K77G_js.useTranslations("windsock");
500
500
  const currentLocale = chunkYXN2K77G_js.useLocale();
501
- const { user, client } = chunkFSBR4RCK_js.useAuth();
501
+ const { user, client } = chunkK4M4B6ME_js.useAuth();
502
502
  const [name, setName] = react.useState(user?.name ?? "");
503
503
  const [avatarPreview, setAvatarPreview] = react.useState(user?.image ?? null);
504
504
  const [isUploadingAvatar, setIsUploadingAvatar] = react.useState(false);
@@ -571,7 +571,7 @@ function ProfileTabContent({ onProfileUpdate }) {
571
571
  }, [name, selectedLocale, currentLocale, user, onProfileUpdate, client, t]);
572
572
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
573
573
  /* @__PURE__ */ jsxRuntime.jsx(
574
- chunkFSBR4RCK_js.SectionCard,
574
+ chunkK4M4B6ME_js.SectionCard,
575
575
  {
576
576
  header: {
577
577
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.UserIcon, { className: "h-5 w-5 text-white" }),
@@ -579,7 +579,7 @@ function ProfileTabContent({ onProfileUpdate }) {
579
579
  subtitle: t("userProfile.profile.subtitle"),
580
580
  gradient: "from-blue-500 via-indigo-500 to-violet-500"
581
581
  },
582
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFSBR4RCK_js.BaseForm, { onSubmit: handleSave, submitLabel: t("userProfile.profile.saveButton"), showFooter: false, children: [
582
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkK4M4B6ME_js.BaseForm, { onSubmit: handleSave, submitLabel: t("userProfile.profile.saveButton"), showFooter: false, children: [
583
583
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-3 pb-4", children: [
584
584
  /* @__PURE__ */ jsxRuntime.jsxs(
585
585
  "button",
@@ -590,7 +590,7 @@ function ProfileTabContent({ onProfileUpdate }) {
590
590
  className: "group relative",
591
591
  children: [
592
592
  /* @__PURE__ */ jsxRuntime.jsx(
593
- chunkFSBR4RCK_js.Avatar,
593
+ chunkK4M4B6ME_js.Avatar,
594
594
  {
595
595
  src: avatarPreview ?? void 0,
596
596
  initials: user?.name?.slice(0, 2).toUpperCase() ?? user?.email?.slice(0, 2).toUpperCase(),
@@ -598,7 +598,7 @@ function ProfileTabContent({ onProfileUpdate }) {
598
598
  className: "h-20 w-20 text-2xl"
599
599
  }
600
600
  ),
601
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center rounded-full bg-black/0 transition group-hover:bg-black/40", children: isUploadingAvatar ? /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.InlineSpinner, {}) : /* @__PURE__ */ jsxRuntime.jsx(outline.CameraIcon, { className: "h-6 w-6 text-white opacity-0 transition group-hover:opacity-100" }) })
601
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 flex items-center justify-center rounded-full bg-black/0 transition group-hover:bg-black/40", children: isUploadingAvatar ? /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.InlineSpinner, {}) : /* @__PURE__ */ jsxRuntime.jsx(outline.CameraIcon, { className: "h-6 w-6 text-white opacity-0 transition group-hover:opacity-100" }) })
602
602
  ]
603
603
  }
604
604
  ),
@@ -615,7 +615,7 @@ function ProfileTabContent({ onProfileUpdate }) {
615
615
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: t("userProfile.profile.avatarHint") })
616
616
  ] }),
617
617
  /* @__PURE__ */ jsxRuntime.jsx(
618
- chunkFSBR4RCK_js.Input,
618
+ chunkK4M4B6ME_js.Input,
619
619
  {
620
620
  label: t("userProfile.profile.nameLabel"),
621
621
  value: name,
@@ -625,7 +625,7 @@ function ProfileTabContent({ onProfileUpdate }) {
625
625
  }
626
626
  ),
627
627
  /* @__PURE__ */ jsxRuntime.jsx(
628
- chunkFSBR4RCK_js.Input,
628
+ chunkK4M4B6ME_js.Input,
629
629
  {
630
630
  label: t("userProfile.profile.emailLabel"),
631
631
  type: "email",
@@ -638,7 +638,7 @@ function ProfileTabContent({ onProfileUpdate }) {
638
638
  saveError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-red-600 dark:text-red-400", children: saveError }),
639
639
  saveSuccess && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-green-600 dark:text-green-400", children: t("userProfile.profile.saveSuccess") }),
640
640
  /* @__PURE__ */ jsxRuntime.jsx(
641
- chunkFSBR4RCK_js.Button,
641
+ chunkK4M4B6ME_js.Button,
642
642
  {
643
643
  type: "submit",
644
644
  color: "ios-glass-blue",
@@ -652,7 +652,7 @@ function ProfileTabContent({ onProfileUpdate }) {
652
652
  }
653
653
  ),
654
654
  /* @__PURE__ */ jsxRuntime.jsxs(
655
- chunkFSBR4RCK_js.SectionCard,
655
+ chunkK4M4B6ME_js.SectionCard,
656
656
  {
657
657
  header: {
658
658
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.GlobeAltIcon, { className: "h-5 w-5 text-white" }),
@@ -683,7 +683,7 @@ function ProfileTabContent({ onProfileUpdate }) {
683
683
  );
684
684
  }) }),
685
685
  selectedLocale !== currentLocale && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: /* @__PURE__ */ jsxRuntime.jsx(
686
- chunkFSBR4RCK_js.Button,
686
+ chunkK4M4B6ME_js.Button,
687
687
  {
688
688
  type: "button",
689
689
  color: "ios-glass-blue",
@@ -701,7 +701,7 @@ function ProfileTabContent({ onProfileUpdate }) {
701
701
  }
702
702
  function SecurityTabContent() {
703
703
  const t = chunkYXN2K77G_js.useTranslations("windsock");
704
- const { client, user, refresh } = chunkFSBR4RCK_js.useAuth();
704
+ const { client, user, refresh } = chunkK4M4B6ME_js.useAuth();
705
705
  const [showMfaSetup, setShowMfaSetup] = react.useState(false);
706
706
  const [currentPassword, setCurrentPassword] = react.useState("");
707
707
  const [newPassword, setNewPassword] = react.useState("");
@@ -765,7 +765,7 @@ function SecurityTabContent() {
765
765
  }
766
766
  ),
767
767
  /* @__PURE__ */ jsxRuntime.jsx(
768
- chunkFSBR4RCK_js.SectionCard,
768
+ chunkK4M4B6ME_js.SectionCard,
769
769
  {
770
770
  header: {
771
771
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.UserIcon, { className: "h-5 w-5 text-white" }),
@@ -773,9 +773,9 @@ function SecurityTabContent() {
773
773
  subtitle: t("userProfile.security.changePasswordSubtitle"),
774
774
  gradient: "from-blue-500 via-sky-500 to-cyan-500"
775
775
  },
776
- children: /* @__PURE__ */ jsxRuntime.jsxs(chunkFSBR4RCK_js.BaseForm, { onSubmit: handleChangePassword, submitLabel: t("userProfile.security.changePasswordButton"), showFooter: false, children: [
776
+ children: /* @__PURE__ */ jsxRuntime.jsxs(chunkK4M4B6ME_js.BaseForm, { onSubmit: handleChangePassword, submitLabel: t("userProfile.security.changePasswordButton"), showFooter: false, children: [
777
777
  /* @__PURE__ */ jsxRuntime.jsx(
778
- chunkFSBR4RCK_js.PasswordInput,
778
+ chunkK4M4B6ME_js.PasswordInput,
779
779
  {
780
780
  label: t("userProfile.security.currentPasswordLabel"),
781
781
  value: currentPassword,
@@ -785,7 +785,7 @@ function SecurityTabContent() {
785
785
  }
786
786
  ),
787
787
  /* @__PURE__ */ jsxRuntime.jsx(
788
- chunkFSBR4RCK_js.PasswordInput,
788
+ chunkK4M4B6ME_js.PasswordInput,
789
789
  {
790
790
  label: t("userProfile.security.newPasswordLabel"),
791
791
  value: newPassword,
@@ -794,9 +794,9 @@ function SecurityTabContent() {
794
794
  autoComplete: "new-password"
795
795
  }
796
796
  ),
797
- /* @__PURE__ */ jsxRuntime.jsx(chunk45QAUEYT_js.PasswordStrengthMeter, { password: newPassword }),
797
+ /* @__PURE__ */ jsxRuntime.jsx(chunk2UMDWOUY_js.PasswordStrengthMeter, { password: newPassword }),
798
798
  /* @__PURE__ */ jsxRuntime.jsx(
799
- chunkFSBR4RCK_js.PasswordInput,
799
+ chunkK4M4B6ME_js.PasswordInput,
800
800
  {
801
801
  label: t("userProfile.security.confirmPasswordLabel"),
802
802
  value: confirmPassword,
@@ -808,7 +808,7 @@ function SecurityTabContent() {
808
808
  passwordError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-red-600 dark:text-red-400", children: passwordError }),
809
809
  passwordSuccess && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-green-600 dark:text-green-400", children: t("userProfile.security.changePasswordSuccess") }),
810
810
  /* @__PURE__ */ jsxRuntime.jsx(
811
- chunkFSBR4RCK_js.Button,
811
+ chunkK4M4B6ME_js.Button,
812
812
  {
813
813
  type: "submit",
814
814
  color: "ios-glass-blue",
@@ -826,7 +826,7 @@ function SecurityTabContent() {
826
826
  function SessionsTabContent() {
827
827
  const t = chunkYXN2K77G_js.useTranslations("windsock");
828
828
  const format = chunkYXN2K77G_js.useFormatter();
829
- const { client } = chunkFSBR4RCK_js.useAuth();
829
+ const { client } = chunkK4M4B6ME_js.useAuth();
830
830
  const [sessions, setSessions] = react.useState([]);
831
831
  const [isLoading, setIsLoading] = react.useState(true);
832
832
  const [revokingId, setRevokingId] = react.useState(null);
@@ -869,7 +869,7 @@ function SessionsTabContent() {
869
869
  }
870
870
  }, [client]);
871
871
  return /* @__PURE__ */ jsxRuntime.jsx(
872
- chunkFSBR4RCK_js.SectionCard,
872
+ chunkK4M4B6ME_js.SectionCard,
873
873
  {
874
874
  header: {
875
875
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.ComputerDesktopIcon, { className: "h-5 w-5 text-white" }),
@@ -879,7 +879,7 @@ function SessionsTabContent() {
879
879
  },
880
880
  padded: false,
881
881
  children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 p-8 text-sm text-gray-500 dark:text-gray-400", children: [
882
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.InlineSpinner, {}),
882
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.InlineSpinner, {}),
883
883
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: t("userProfile.sessions.loading") })
884
884
  ] }) : sessions.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-6 text-center text-sm text-gray-500 dark:text-gray-400", children: t("userProfile.sessions.empty") }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full text-sm", children: [
885
885
  /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsxs("tr", { className: "border-b border-gray-200/60 dark:border-white/10", children: [
@@ -891,12 +891,12 @@ function SessionsTabContent() {
891
891
  /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "divide-y divide-gray-200/60 dark:divide-white/10", children: sessions.map((session) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
892
892
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-3 text-gray-900 dark:text-white", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
893
893
  session.device,
894
- session.current && /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.Badge, { color: "green", children: t("userProfile.sessions.currentBadge") })
894
+ session.current && /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.Badge, { color: "green", children: t("userProfile.sessions.currentBadge") })
895
895
  ] }) }),
896
896
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-3 text-gray-500 dark:text-gray-400", children: session.location }),
897
897
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-3 text-gray-500 dark:text-gray-400", children: format.relativeTime(new Date(session.lastActive)) }),
898
898
  /* @__PURE__ */ jsxRuntime.jsx("td", { className: "px-4 py-3 text-right", children: !session.current && /* @__PURE__ */ jsxRuntime.jsx(
899
- chunkFSBR4RCK_js.Button,
899
+ chunkK4M4B6ME_js.Button,
900
900
  {
901
901
  size: "sm",
902
902
  color: "ios-glass-red",
@@ -913,7 +913,7 @@ function SessionsTabContent() {
913
913
  }
914
914
  function LinkedAccountsTabContent() {
915
915
  const t = chunkYXN2K77G_js.useTranslations("windsock");
916
- const { client } = chunkFSBR4RCK_js.useAuth();
916
+ const { client } = chunkK4M4B6ME_js.useAuth();
917
917
  const [accounts, setAccounts] = react.useState([]);
918
918
  const [isLoading, setIsLoading] = react.useState(true);
919
919
  const [actioningProvider, setActioningProvider] = react.useState(null);
@@ -955,7 +955,7 @@ function LinkedAccountsTabContent() {
955
955
  }, [client]);
956
956
  const providerInitials = (provider) => provider.slice(0, 2).toUpperCase();
957
957
  return /* @__PURE__ */ jsxRuntime.jsx(
958
- chunkFSBR4RCK_js.SectionCard,
958
+ chunkK4M4B6ME_js.SectionCard,
959
959
  {
960
960
  header: {
961
961
  icon: /* @__PURE__ */ jsxRuntime.jsx(outline.LinkIcon, { className: "h-5 w-5 text-white" }),
@@ -965,13 +965,13 @@ function LinkedAccountsTabContent() {
965
965
  },
966
966
  padded: false,
967
967
  children: isLoading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-2 p-8 text-sm text-gray-500 dark:text-gray-400", children: [
968
- /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.InlineSpinner, {}),
968
+ /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.InlineSpinner, {}),
969
969
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: t("userProfile.linkedAccounts.loading") })
970
- ] }) : accounts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-6 text-center text-sm text-gray-500 dark:text-gray-400", children: t("userProfile.linkedAccounts.empty") }) : /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.ListCard, { children: accounts.map((account) => /* @__PURE__ */ jsxRuntime.jsx(
971
- chunkFSBR4RCK_js.ListCardItem,
970
+ ] }) : accounts.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "p-6 text-center text-sm text-gray-500 dark:text-gray-400", children: t("userProfile.linkedAccounts.empty") }) : /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.ListCard, { children: accounts.map((account) => /* @__PURE__ */ jsxRuntime.jsx(
971
+ chunkK4M4B6ME_js.ListCardItem,
972
972
  {
973
973
  leading: /* @__PURE__ */ jsxRuntime.jsx(
974
- chunkFSBR4RCK_js.Avatar,
974
+ chunkK4M4B6ME_js.Avatar,
975
975
  {
976
976
  src: account.logoUrl,
977
977
  initials: providerInitials(account.provider),
@@ -979,7 +979,7 @@ function LinkedAccountsTabContent() {
979
979
  }
980
980
  ),
981
981
  trailing: /* @__PURE__ */ jsxRuntime.jsx(
982
- chunkFSBR4RCK_js.Button,
982
+ chunkK4M4B6ME_js.Button,
983
983
  {
984
984
  size: "sm",
985
985
  color: "ios-glass-red",
@@ -1006,12 +1006,12 @@ function UserProfile({
1006
1006
  onProfileUpdate
1007
1007
  }) {
1008
1008
  const t = chunkYXN2K77G_js.useTranslations("windsock");
1009
- const { status } = chunkFSBR4RCK_js.useAuth();
1009
+ const { status } = chunkK4M4B6ME_js.useAuth();
1010
1010
  const [activeTab, setActiveTab] = react.useState(
1011
1011
  tabs.includes(defaultTab) ? defaultTab : tabs[0] ?? "profile"
1012
1012
  );
1013
1013
  if (status === "loading") {
1014
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsxRuntime.jsx(chunkFSBR4RCK_js.InlineSpinner, {}) });
1014
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ jsxRuntime.jsx(chunkK4M4B6ME_js.InlineSpinner, {}) });
1015
1015
  }
1016
1016
  if (status !== "authenticated") {
1017
1017
  return null;
@@ -1022,7 +1022,7 @@ function UserProfile({
1022
1022
  }));
1023
1023
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-6", children: [
1024
1024
  tabs.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
1025
- chunkFSBR4RCK_js.SegmentedControl,
1025
+ chunkK4M4B6ME_js.SegmentedControl,
1026
1026
  {
1027
1027
  segments,
1028
1028
  value: activeTab,
@@ -1044,5 +1044,5 @@ exports.ProfileTabContent = ProfileTabContent;
1044
1044
  exports.SecurityTabContent = SecurityTabContent;
1045
1045
  exports.SessionsTabContent = SessionsTabContent;
1046
1046
  exports.UserProfile = UserProfile;
1047
- //# sourceMappingURL=chunk-MO5FBVV3.js.map
1048
- //# sourceMappingURL=chunk-MO5FBVV3.js.map
1047
+ //# sourceMappingURL=chunk-5AVO5DJO.js.map
1048
+ //# sourceMappingURL=chunk-5AVO5DJO.js.map