@ibgib/web-gib 0.0.61 → 0.0.62

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 (59) hide show
  1. package/dist/AUTO-GENERATED-version.d.mts +1 -1
  2. package/dist/AUTO-GENERATED-version.mjs +1 -1
  3. package/dist/helpers.web.d.mts +3 -1
  4. package/dist/helpers.web.d.mts.map +1 -1
  5. package/dist/helpers.web.mjs +17 -1
  6. package/dist/helpers.web.mjs.map +1 -1
  7. package/dist/identity/device-delegate-helper.d.mts +48 -0
  8. package/dist/identity/device-delegate-helper.d.mts.map +1 -1
  9. package/dist/identity/device-delegate-helper.mjs +86 -2
  10. package/dist/identity/device-delegate-helper.mjs.map +1 -1
  11. package/dist/identity/device-delegate.respec.mjs +6 -6
  12. package/dist/identity/device-delegate.respec.mjs.map +1 -1
  13. package/dist/identity/passkey-helper.d.mts +72 -0
  14. package/dist/identity/passkey-helper.d.mts.map +1 -0
  15. package/dist/identity/passkey-helper.mjs +237 -0
  16. package/dist/identity/passkey-helper.mjs.map +1 -0
  17. package/dist/identity/passkey.respec.d.mts +2 -0
  18. package/dist/identity/passkey.respec.d.mts.map +1 -0
  19. package/dist/identity/passkey.respec.mjs +169 -0
  20. package/dist/identity/passkey.respec.mjs.map +1 -0
  21. package/dist/index.d.mts +1 -0
  22. package/dist/index.d.mts.map +1 -1
  23. package/dist/index.mjs +1 -0
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/ui/component/identity/add-device/add-device.d.mts.map +1 -1
  26. package/dist/ui/component/identity/add-device/add-device.mjs +1 -0
  27. package/dist/ui/component/identity/add-device/add-device.mjs.map +1 -1
  28. package/dist/ui/component/identity/keystone-creator/keystone-creator.d.mts +18 -1
  29. package/dist/ui/component/identity/keystone-creator/keystone-creator.d.mts.map +1 -1
  30. package/dist/ui/component/identity/keystone-creator/keystone-creator.html +42 -3
  31. package/dist/ui/component/identity/keystone-creator/keystone-creator.mjs +510 -74
  32. package/dist/ui/component/identity/keystone-creator/keystone-creator.mjs.map +1 -1
  33. package/dist/ui/component/identity/keystone-details/keystone-details.d.mts +16 -1
  34. package/dist/ui/component/identity/keystone-details/keystone-details.d.mts.map +1 -1
  35. package/dist/ui/component/identity/keystone-details/keystone-details.html +38 -0
  36. package/dist/ui/component/identity/keystone-details/keystone-details.mjs +946 -122
  37. package/dist/ui/component/identity/keystone-details/keystone-details.mjs.map +1 -1
  38. package/dist/ui/component/identity/remove-device/remove-device.d.mts.map +1 -1
  39. package/dist/ui/component/identity/remove-device/remove-device.mjs +1 -0
  40. package/dist/ui/component/identity/remove-device/remove-device.mjs.map +1 -1
  41. package/dist/ui/ui-helpers.d.mts +3 -0
  42. package/dist/ui/ui-helpers.d.mts.map +1 -1
  43. package/dist/ui/ui-helpers.mjs +110 -6
  44. package/dist/ui/ui-helpers.mjs.map +1 -1
  45. package/package.json +2 -2
  46. package/src/AUTO-GENERATED-version.mts +1 -1
  47. package/src/helpers.web.mts +22 -2
  48. package/src/identity/device-delegate-helper.mts +135 -2
  49. package/src/identity/device-delegate.respec.mts +6 -6
  50. package/src/identity/passkey-helper.mts +304 -0
  51. package/src/identity/passkey.respec.mts +194 -0
  52. package/src/index.mts +1 -0
  53. package/src/ui/component/identity/add-device/add-device.mts +1 -0
  54. package/src/ui/component/identity/keystone-creator/keystone-creator.html +42 -3
  55. package/src/ui/component/identity/keystone-creator/keystone-creator.mts +551 -77
  56. package/src/ui/component/identity/keystone-details/keystone-details.html +38 -0
  57. package/src/ui/component/identity/keystone-details/keystone-details.mts +1011 -131
  58. package/src/ui/component/identity/remove-device/remove-device.mts +1 -0
  59. package/src/ui/ui-helpers.mts +118 -5
@@ -30,6 +30,12 @@ interface KeystoneCreatorElements extends ElementsBase {
30
30
  inputEmail: HTMLInputElement;
31
31
  inputSecret: HTMLInputElement;
32
32
  checkboxMakeActive: HTMLInputElement;
33
+ inputPasskeyUsername: HTMLInputElement;
34
+ inputPasskeyDescription: HTMLInputElement;
35
+ inputPasskeyEmail: HTMLInputElement;
36
+ inputPasskeyName: HTMLInputElement;
37
+ checkboxPasskeyMakeActive: HTMLInputElement;
38
+ btnGeneratePasskey: HTMLButtonElement;
33
39
  statusArea: HTMLDivElement;
34
40
  statusText: HTMLParagraphElement;
35
41
  }
@@ -39,11 +45,13 @@ interface KeystoneCreatorElements extends ElementsBase {
39
45
  export declare class KeystoneCreatorComponentInstance extends IbGibFormInstanceBase<IbGib_V1, KeystoneCreatorElements> implements IbGibDynamicComponentInstance<IbGib_V1, KeystoneCreatorElements> {
40
46
  protected lc: string;
41
47
  private hasExistingIdentities;
48
+ private resendCooldownInterval;
42
49
  constructor();
43
50
  initialize(opts: IbGibDynamicComponentInstanceInitOpts): Promise<void>;
51
+ disconnected(): Promise<void>;
52
+ private startResendCooldownTimer;
44
53
  created(): Promise<void>;
45
54
  private checkExistingIdentities;
46
- disconnected(): Promise<void>;
47
55
  private initHandlers;
48
56
  private setButtonLoading;
49
57
  /**
@@ -57,12 +65,21 @@ export declare class KeystoneCreatorComponentInstance extends IbGibFormInstanceB
57
65
  * Validates quick email input and dispatches a 6-digit OTP code to the user's inbox.
58
66
  */
59
67
  protected handleQuickSendCode(): Promise<void>;
68
+ /**
69
+ * Triggered by the "Resend Code" button in the quick email panel.
70
+ */
71
+ protected handleQuickResendCode(): Promise<void>;
60
72
  /**
61
73
  * Triggered by the "Verify Code" button.
62
74
  * Submits 6-digit OTP code to custodian server, builds local sync delegate keystone,
63
75
  * registers delegate on server, and finalizes onboarding.
64
76
  */
65
77
  protected handleQuickVerifyCode(): Promise<void>;
78
+ /**
79
+ * Triggered by the "Create Identity with Passkey / Biometrics" button.
80
+ * Orchestrates: WebAuthn Credential -> PRF Secret Evaluation -> Local Passkey Genesis -> Graph Collection -> Server Sync.
81
+ */
82
+ protected handleGeneratePasskey(): Promise<void>;
66
83
  /**
67
84
  * Triggered by the "Generate" button.
68
85
  * Orchestrates: Secret -> Local Genesis -> Graph Collection -> Server Sync.
@@ -1 +1 @@
1
- {"version":3,"file":"keystone-creator.d.mts","sourceRoot":"","sources":["../../../../../src/ui/component/identity/keystone-creator/keystone-creator.mts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAa3D,OAAO,EAAE,6BAA6B,EAAE,qBAAqB,EAAG,MAAM,yCAAyC,CAAC;AAChH,OAAO,EACH,YAAY,EAAE,6BAA6B,EAC3C,qCAAqC,EACxC,MAAM,2BAA2B,CAAC;AASnC,eAAO,MAAM,+BAA+B,2BAA2B,CAAC;AAExE;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,6BAA6B;IAC3E,SAAS,CAAC,EAAE,EAAE,MAAM,CAAoC;IAExD,WAAW,CAAC,EAAE,MAAM,CAAsD;IAC1E,aAAa,SAAmC;IAEhD,cAKC;IAEK,cAAc,CAAC,EACjB,IAAI,EACJ,SAAS,EACZ,EAAE;QACC,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,SAAS,CAAC;KACxB,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAUzC;CACJ;AAED;;GAEG;AACH,UAAU,uBAAwB,SAAQ,YAAY;IAClD,WAAW,EAAE,cAAc,CAAC;IAC5B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,aAAa,EAAE,iBAAiB,CAAC;IACjC,YAAY,EAAE,cAAc,CAAC;IAC7B,cAAc,EAAE,WAAW,CAAC;IAC5B,aAAa,EAAE,gBAAgB,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,kBAAkB,EAAE,gBAAgB,CAAC;IACrC,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,EAAE,oBAAoB,CAAC;CACpC;AAED;;GAEG;AACH,qBAAa,gCACT,SAAQ,qBAAqB,CAAC,QAAQ,EAAE,uBAAuB,CAC/D,YAAW,6BAA6B,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAE3E,SAAS,CAAC,EAAE,EAAE,MAAM,CAAwC;IAC5D,OAAO,CAAC,qBAAqB,CAAS;IAEtC,cAEC;IAEc,UAAU,CAAC,IAAI,EAAE,qCAAqC,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpF;IAEc,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA0BtC;YAEa,uBAAuB;IAgCtB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3C;IAED,OAAO,CAAC,YAAY;IAgFpB,OAAO,CAAC,gBAAgB;IAQxB;;;;OAIG;IACH,UAAgB,cAAc,CAAC,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA0G7E;IAED;;;OAGG;IACH,UAAgB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoCnD;IAED;;;;OAIG;IACH,UAAgB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0GrD;IAED;;;OAGG;IACH,UAAgB,cAAc,kBA6U7B;IAED;;;OAGG;YACW,0BAA0B;IAwIxC,OAAO,CAAC,eAAe;IA0BvB,UAAyB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAEjD;IAEc,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;CACJ"}
1
+ {"version":3,"file":"keystone-creator.d.mts","sourceRoot":"","sources":["../../../../../src/ui/component/identity/keystone-creator/keystone-creator.mts"],"names":[],"mappings":"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"}
@@ -4,11 +4,13 @@
4
4
  <!-- Mode Selector Tabs -->
5
5
  <div class="mode-tabs">
6
6
  <button id="tab-quick" class="mode-tab active">⚡ Quick (Passwordless)</button>
7
+ <button id="tab-passkey" class="mode-tab">🛡️ Passkey / Hardware</button>
7
8
  <button id="tab-password" class="mode-tab">🔑 Password-based</button>
8
9
  </div>
9
10
 
10
11
  <!-- Mode Subtitles -->
11
12
  <p id="subtitle-quick" class="subtitle">⚡ Skip passwords — sign in with Google, GitHub, or an Email code. You can always set up a password later.</p>
13
+ <p id="subtitle-passkey" class="subtitle hidden">🛡️ Sovereign & Passwordless — secure your identity with Touch ID, Windows Hello, or a YubiKey.</p>
12
14
  <p id="subtitle-password" class="subtitle hidden">🔑 Full local ownership — your password never leaves your device. You can link Google or GitHub later.</p>
13
15
 
14
16
  <div class="content">
@@ -49,12 +51,49 @@
49
51
  <div style="display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center;">
50
52
  <input type="text" id="input-quick-otp" maxlength="6" placeholder="123456" class="text-input" style="font-family: monospace; font-size: 1.2rem; letter-spacing: 4px; text-align: center; max-width: 160px;">
51
53
  <button id="btn-quick-verify-code" class="action-btn" style="white-space: nowrap; width: auto;">Verify Code</button>
54
+ <button id="btn-quick-resend-code" class="action-btn secondary" type="button" style="white-space: nowrap; width: auto; font-size: 0.85rem; padding: 0.4rem 0.8rem; background: #45475a; color: #cdd6f4;">Resend Code</button>
52
55
  </div>
53
56
  </div>
54
57
  </div>
55
58
 
56
59
  <!-- ----------------------------------------------------------------- -->
57
- <!-- Tab 2: Password-based Content -->
60
+ <!-- Tab 2: Passkey / Hardware Biometrics Content -->
61
+ <!-- ----------------------------------------------------------------- -->
62
+ <div id="panel-passkey" class="tab-panel hidden">
63
+ <div class="input-group">
64
+ <label for="input-passkey-username">Username</label>
65
+ <input type="text" id="input-passkey-username" placeholder="Enter your username..." class="text-input">
66
+ </div>
67
+
68
+ <div class="input-group">
69
+ <label for="input-passkey-description">Description (Optional)</label>
70
+ <input type="text" id="input-passkey-description" placeholder="Enter an optional description..." class="text-input">
71
+ </div>
72
+
73
+ <div class="input-group">
74
+ <label for="input-passkey-email">Primary Email (Optional)</label>
75
+ <input type="email" id="input-passkey-email" placeholder="Enter your primary email address..." class="text-input">
76
+ </div>
77
+
78
+ <div class="input-group">
79
+ <label for="input-passkey-name">Passkey / Device Label</label>
80
+ <input type="text" id="input-passkey-name" placeholder="e.g. MacBook Touch ID, YubiKey 5Ci, Android Phone..." class="text-input">
81
+ </div>
82
+
83
+ <div class="checkbox-group" style="margin-top: 0.5rem; margin-bottom: 1rem; display: flex; align-items: center; gap: 0.5rem;">
84
+ <input type="checkbox" id="checkbox-passkey-make-active" checked style="cursor: pointer; width: 1rem; height: 1rem;">
85
+ <label for="checkbox-passkey-make-active" style="cursor: pointer; font-size: 0.9rem; user-select: none;">Make this the active identity</label>
86
+ </div>
87
+
88
+ <div class="action-row">
89
+ <button id="btn-generate-passkey" class="action-btn">
90
+ 🛡️ Create Identity with Passkey / Biometrics
91
+ </button>
92
+ </div>
93
+ </div>
94
+
95
+ <!-- ----------------------------------------------------------------- -->
96
+ <!-- Tab 3: Password-based Content -->
58
97
  <!-- ----------------------------------------------------------------- -->
59
98
  <div id="panel-password" class="tab-panel hidden">
60
99
  <div class="input-group">
@@ -99,8 +138,8 @@
99
138
  <p style="font-size: 0.82rem; color: #a6adc8; margin-top: 0.25rem; margin-bottom: 0.75rem;">A 6-digit verification code was sent to your email. Enter it below to activate your identity:</p>
100
139
  <div style="display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center;">
101
140
  <input type="text" id="input-verify-code" maxlength="6" placeholder="123456" class="text-input" style="font-family: monospace; font-size: 1.2rem; letter-spacing: 4px; text-align: center; max-width: 160px;">
102
- <button id="btn-submit-code" class="action-btn" style="white-space: nowrap;">Verify Code</button>
103
- <button id="btn-resend-code" class="action-btn" style="white-space: nowrap; background: #45475a; color: #cdd6f4;">Resend Code</button>
141
+ <button id="btn-submit-code" class="action-btn" style="white-space: nowrap; width: auto;">Verify Code</button>
142
+ <button id="btn-resend-code" class="action-btn secondary" type="button" style="white-space: nowrap; width: auto; font-size: 0.85rem; padding: 0.4rem 0.8rem; background: #45475a; color: #cdd6f4;">Resend Code</button>
104
143
  </div>
105
144
  </div>
106
145