@dexterai/connect 0.19.0 → 0.20.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.
@@ -6,22 +6,21 @@ var BUTTON_CSS = `
6
6
  @keyframes dx-spin { to { transform: rotate(360deg); } }
7
7
  @keyframes dx-pulse { 0%,100% { opacity: 1; } 50% { opacity: .6; } }
8
8
  .dx-btn{
9
- --dx-ember:#f26c18; --dx-ember-2:#ba3a00; --dx-fg:#fff4ea; --dx-radius:0px;
10
9
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:10px;
11
- padding:11px 22px; border:1px solid color-mix(in srgb,var(--dx-ember) 55%,transparent);
12
- border-radius:var(--dx-radius);
13
- background:linear-gradient(135deg,var(--dx-ember),var(--dx-ember-2));
14
- color:var(--dx-fg); font:inherit; font-weight:600; font-size:.78rem; letter-spacing:.12em;
10
+ padding:11px 22px; border:1px solid color-mix(in srgb,var(--dx-ember,#f26c18) 55%,transparent);
11
+ border-radius:var(--dx-radius,0px);
12
+ background:linear-gradient(135deg,var(--dx-ember,#f26c18),var(--dx-ember-2,#ba3a00));
13
+ color:var(--dx-fg,#fff4ea); font:inherit; font-weight:600; font-size:.78rem; letter-spacing:.12em;
15
14
  text-transform:uppercase; cursor:pointer; -webkit-tap-highlight-color:transparent;
16
- box-shadow:0 14px 26px color-mix(in srgb,var(--dx-ember) 24%,transparent);
15
+ box-shadow:0 14px 26px color-mix(in srgb,var(--dx-ember,#f26c18) 24%,transparent);
17
16
  transition:transform .16s ease, box-shadow .16s ease, filter .16s ease, background .16s ease;
18
17
  }
19
- .dx-btn:hover{ transform:translateY(-1px); filter:brightness(1.07); box-shadow:0 20px 34px color-mix(in srgb,var(--dx-ember) 32%,transparent); }
20
- .dx-btn:active{ transform:translateY(0); filter:brightness(.97); box-shadow:0 8px 16px color-mix(in srgb,var(--dx-ember) 22%,transparent); }
21
- .dx-btn:focus-visible{ outline:none; box-shadow:0 0 0 3px color-mix(in srgb,var(--dx-ember) 38%,transparent); }
18
+ .dx-btn:hover{ transform:translateY(-1px); filter:brightness(1.07); box-shadow:0 20px 34px color-mix(in srgb,var(--dx-ember,#f26c18) 32%,transparent); }
19
+ .dx-btn:active{ transform:translateY(0); filter:brightness(.97); box-shadow:0 8px 16px color-mix(in srgb,var(--dx-ember,#f26c18) 22%,transparent); }
20
+ .dx-btn:focus-visible{ outline:none; box-shadow:0 0 0 3px color-mix(in srgb,var(--dx-ember,#f26c18) 38%,transparent); }
22
21
  .dx-btn:disabled{ cursor:default; filter:saturate(.85) brightness(.98); }
23
- .dx-btn--secondary{ background:transparent; color:var(--dx-ember); box-shadow:none; border-color:color-mix(in srgb,var(--dx-ember) 45%,transparent); }
24
- .dx-btn--secondary:hover{ background:color-mix(in srgb,var(--dx-ember) 9%,transparent); filter:none; box-shadow:none; }
22
+ .dx-btn--secondary{ background:transparent; color:var(--dx-ember,#f26c18); box-shadow:none; border-color:color-mix(in srgb,var(--dx-ember,#f26c18) 45%,transparent); }
23
+ .dx-btn--secondary:hover{ background:color-mix(in srgb,var(--dx-ember,#f26c18) 9%,transparent); filter:none; box-shadow:none; }
25
24
  .dx-btn--block{ width:100%; }
26
25
  .dx-btn__mark{ flex-shrink:0; }
27
26
  .dx-btn__spin{ width:15px; height:15px; flex-shrink:0; border-radius:50%;
@@ -29,7 +28,7 @@ var BUTTON_CSS = `
29
28
  animation:dx-spin .7s linear infinite; }
30
29
  .dx-btn__doing{ animation:dx-pulse 1.4s ease-in-out infinite; }
31
30
  .dx-chip{ display:inline-flex; align-items:center; gap:8px; padding:6px 10px; font:inherit;
32
- font-variant-numeric:tabular-nums; border-radius:var(--dx-radius,0);
31
+ font-variant-numeric:tabular-nums; border-radius:var(--dx-radius,0px);
33
32
  border:1px solid color-mix(in srgb,var(--dx-ember,#f26c18) 35%,transparent); }
34
33
  .dx-chip__dot{ width:7px; height:7px; border-radius:50%; background:var(--dx-ember,#f26c18); }
35
34
  .dx-chip__bal{ font-weight:600; opacity:.85; }
package/dist/react.d.ts CHANGED
@@ -149,8 +149,10 @@ interface DexterWalletMenuProps {
149
149
  avatarInitial?: string;
150
150
  /** "Manage wallet" → the consumer's wallet page. Row hidden if omitted. */
151
151
  onManageWallet?: () => void;
152
- /** "Start fresh" → the consumer ejects/resets (guard + perform on its side). Row hidden if omitted. */
152
+ /** Eject row → the consumer ejects/resets (guard + perform on its side). Row hidden if omitted. */
153
153
  onStartFresh?: () => void;
154
+ /** Label for the eject/reset row. Default "Eject wallet". */
155
+ startFreshLabel?: string;
154
156
  /** Sign-in/save UI revealed when "Save your wallet" is tapped (e.g. <SignInWithDexter/>). Row hidden if omitted. */
155
157
  saveSlot?: ReactNode;
156
158
  /** Short hint shown above the save UI. */
package/dist/react.js CHANGED
@@ -22,7 +22,7 @@ import {
22
22
  DexterMark,
23
23
  cx,
24
24
  ensureDexterButtonStyles
25
- } from "./chunk-S7G2ZZOO.js";
25
+ } from "./chunk-2WETR5DJ.js";
26
26
 
27
27
  // src/useSignInWithDexter.ts
28
28
  import { useCallback, useEffect, useMemo, useState } from "react";
@@ -235,35 +235,34 @@ import { useEffect as useEffect4 } from "react";
235
235
  var STYLE_ID = "dexter-connect-wallet-kit-styles";
236
236
  var WALLET_KIT_CSS = `
237
237
  .dx-wchip{
238
- --dx-ember:#f26c18; --dx-ember-2:#ba3a00; --dx-fg:#fff4ea; --dx-radius:0px;
239
238
  display:inline-flex; align-items:center; gap:9px; max-width:240px;
240
239
  padding:6px 12px 6px 7px; font:inherit; font-weight:600; font-size:.74rem;
241
240
  letter-spacing:.1em; text-transform:uppercase; cursor:pointer; background:transparent;
242
- color:inherit; border:1px solid color-mix(in srgb,var(--dx-ember) 42%,transparent);
243
- border-radius:var(--dx-radius); -webkit-tap-highlight-color:transparent;
241
+ color:inherit; border:1px solid color-mix(in srgb,var(--dx-ember,#f26c18) 42%,transparent);
242
+ border-radius:var(--dx-radius,0px); -webkit-tap-highlight-color:transparent;
244
243
  transition:filter .16s ease, box-shadow .16s ease, border-color .16s ease;
245
244
  }
246
- .dx-wchip:hover{ filter:brightness(1.08); box-shadow:0 8px 18px color-mix(in srgb,var(--dx-ember) 18%,transparent); }
247
- .dx-wchip:focus-visible{ outline:none; box-shadow:0 0 0 3px color-mix(in srgb,var(--dx-ember) 34%,transparent); }
245
+ .dx-wchip:hover{ filter:brightness(1.08); box-shadow:0 8px 18px color-mix(in srgb,var(--dx-ember,#f26c18) 18%,transparent); }
246
+ .dx-wchip:focus-visible{ outline:none; box-shadow:0 0 0 3px color-mix(in srgb,var(--dx-ember,#f26c18) 34%,transparent); }
248
247
  .dx-wchip--signedout{ border-color:color-mix(in srgb,currentColor 22%,transparent); padding-left:12px; }
249
248
  .dx-wchip__avatar{
250
249
  width:22px; height:22px; flex-shrink:0; display:inline-flex; align-items:center; justify-content:center;
251
250
  border-radius:50%; overflow:hidden; font-size:.72rem; font-weight:700; letter-spacing:0; line-height:1;
252
- background:linear-gradient(135deg,var(--dx-ember),var(--dx-ember-2)); color:var(--dx-fg);
251
+ background:linear-gradient(135deg,var(--dx-ember,#f26c18),var(--dx-ember-2,#ba3a00)); color:var(--dx-fg,#fff4ea);
253
252
  }
254
253
  .dx-wchip__avatar img{ width:100%; height:100%; object-fit:cover; }
255
254
  .dx-wchip__label{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
256
255
 
257
- .dx-wmenu{ --dx-ember:#f26c18; --dx-ember-2:#ba3a00; --dx-fg:#fff4ea; display:flex; flex-direction:column; min-width:248px; }
256
+ .dx-wmenu{ display:flex; flex-direction:column; min-width:248px; }
258
257
  .dx-wmenu__id{ display:flex; align-items:center; gap:10px; padding:13px 15px; border-bottom:1px solid color-mix(in srgb,currentColor 12%,transparent); }
259
- .dx-wmenu__avatar{ width:32px; height:32px; flex-shrink:0; display:inline-flex; align-items:center; justify-content:center; border-radius:50%; font-weight:700; font-size:.85rem; line-height:1; background:linear-gradient(135deg,var(--dx-ember),var(--dx-ember-2)); color:var(--dx-fg); }
258
+ .dx-wmenu__avatar{ width:32px; height:32px; flex-shrink:0; display:inline-flex; align-items:center; justify-content:center; border-radius:50%; font-weight:700; font-size:.85rem; line-height:1; background:linear-gradient(135deg,var(--dx-ember,#f26c18),var(--dx-ember-2,#ba3a00)); color:var(--dx-fg,#fff4ea); }
260
259
  .dx-wmenu__meta{ display:flex; flex-direction:column; gap:2px; min-width:0; }
261
260
  .dx-wmenu__name{ font-weight:700; font-size:.9rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
262
261
  .dx-wmenu__sub{ font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; opacity:.55; }
263
262
  .dx-wmenu__list{ display:flex; flex-direction:column; padding:6px; }
264
263
  .dx-wmenu__item{ display:flex; align-items:center; justify-content:space-between; gap:10px; width:100%; padding:10px 12px; font:inherit; font-size:.82rem; font-weight:600; text-align:left; background:transparent; border:none; color:inherit; cursor:pointer; transition:background .12s ease; }
265
- .dx-wmenu__item:hover{ background:color-mix(in srgb,var(--dx-ember) 10%,transparent); }
266
- .dx-wmenu__item--danger{ color:#e5552e; }
264
+ .dx-wmenu__item:hover{ background:color-mix(in srgb,var(--dx-ember,#f26c18) 10%,transparent); }
265
+ .dx-wmenu__item--danger{ color:var(--dx-danger,#e5552e); }
267
266
  .dx-wmenu__icon{ opacity:.45; font-size:.9rem; }
268
267
  .dx-wmenu__back{ border-bottom:1px solid color-mix(in srgb,currentColor 10%,transparent); opacity:.85; }
269
268
  .dx-wmenu__save{ display:flex; flex-direction:column; gap:9px; padding:13px 15px; }
@@ -304,7 +303,16 @@ function DexterWalletChip(props) {
304
303
  import { useEffect as useEffect5, useState as useState3 } from "react";
305
304
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
306
305
  function DexterWalletMenu(props) {
307
- const { walletLabel, avatarInitial, onManageWallet, onStartFresh, saveSlot, saveHint, className } = props;
306
+ const {
307
+ walletLabel,
308
+ avatarInitial,
309
+ onManageWallet,
310
+ onStartFresh,
311
+ startFreshLabel = "Eject wallet",
312
+ saveSlot,
313
+ saveHint,
314
+ className
315
+ } = props;
308
316
  useEffect5(ensureWalletKitStyles, []);
309
317
  const [showSave, setShowSave] = useState3(false);
310
318
  const initial = (avatarInitial ?? walletLabel.trim().charAt(0) ?? "D").toUpperCase();
@@ -349,7 +357,7 @@ function DexterWalletMenu(props) {
349
357
  className: "dx-wmenu__item dx-wmenu__item--danger",
350
358
  onClick: onStartFresh,
351
359
  children: [
352
- /* @__PURE__ */ jsx3("span", { children: "Start fresh" }),
360
+ /* @__PURE__ */ jsx3("span", { children: startFreshLabel }),
353
361
  /* @__PURE__ */ jsx3("span", { className: "dx-wmenu__icon", "aria-hidden": "true", children: "\u27F5" })
354
362
  ]
355
363
  }
@@ -378,39 +386,37 @@ import { useEffect as useEffect6, useState as useState4 } from "react";
378
386
  var STYLE_ID2 = "dexter-connect-consent-styles";
379
387
  var CONSENT_CSS = `
380
388
  .dx-allow{
381
- --dx-ember:#f26c18; --dx-ember-2:#ba3a00; --dx-fg:#fff4ea; --dx-radius:0px;
382
389
  display:flex; flex-wrap:wrap; gap:8px; align-items:center;
383
390
  }
384
391
  .dx-allow__chip{
385
392
  display:inline-flex; align-items:center; justify-content:center; padding:9px 15px;
386
393
  font:inherit; font-weight:600; font-size:.78rem; letter-spacing:.12em; text-transform:uppercase;
387
394
  font-variant-numeric:tabular-nums; cursor:pointer; background:transparent; color:inherit;
388
- border:1px solid color-mix(in srgb,var(--dx-ember) 45%,transparent);
395
+ border:1px solid color-mix(in srgb,var(--dx-ember,#f26c18) 45%,transparent);
389
396
  border-radius:var(--dx-radius,0px); -webkit-tap-highlight-color:transparent;
390
397
  transition:filter .16s ease, box-shadow .16s ease, border-color .16s ease, background .16s ease, color .16s ease;
391
398
  }
392
- .dx-allow__chip:hover{ border-color:color-mix(in srgb,var(--dx-ember) 70%,transparent); filter:brightness(1.05); }
393
- .dx-allow__chip:focus-visible{ outline:none; box-shadow:0 0 0 3px color-mix(in srgb,var(--dx-ember) 34%,transparent); }
399
+ .dx-allow__chip:hover{ border-color:color-mix(in srgb,var(--dx-ember,#f26c18) 70%,transparent); filter:brightness(1.05); }
400
+ .dx-allow__chip:focus-visible{ outline:none; box-shadow:0 0 0 3px color-mix(in srgb,var(--dx-ember,#f26c18) 34%,transparent); }
394
401
  .dx-allow__chip--active{
395
402
  background:linear-gradient(135deg,var(--dx-ember,#f26c18),var(--dx-ember-2,#ba3a00));
396
- color:var(--dx-fg,#fff4ea); border-color:color-mix(in srgb,var(--dx-ember) 55%,transparent);
397
- box-shadow:0 10px 22px color-mix(in srgb,var(--dx-ember) 22%,transparent);
403
+ color:var(--dx-fg,#fff4ea); border-color:color-mix(in srgb,var(--dx-ember,#f26c18) 55%,transparent);
404
+ box-shadow:0 10px 22px color-mix(in srgb,var(--dx-ember,#f26c18) 22%,transparent);
398
405
  }
399
406
  .dx-allow__input{
400
407
  flex:1 1 130px; min-width:120px; padding:9px 13px; font:inherit; font-size:.9rem;
401
408
  font-variant-numeric:tabular-nums; color:inherit; background:transparent;
402
- border:1px solid color-mix(in srgb,var(--dx-ember) 45%,transparent);
409
+ border:1px solid color-mix(in srgb,var(--dx-ember,#f26c18) 45%,transparent);
403
410
  border-radius:var(--dx-radius,0px); -webkit-tap-highlight-color:transparent;
404
411
  transition:border-color .16s ease, box-shadow .16s ease;
405
412
  }
406
413
  .dx-allow__input:focus, .dx-allow__input:focus-visible{
407
- outline:none; border-color:color-mix(in srgb,var(--dx-ember) 70%,transparent);
408
- box-shadow:0 0 0 3px color-mix(in srgb,var(--dx-ember) 30%,transparent);
414
+ outline:none; border-color:color-mix(in srgb,var(--dx-ember,#f26c18) 70%,transparent);
415
+ box-shadow:0 0 0 3px color-mix(in srgb,var(--dx-ember,#f26c18) 30%,transparent);
409
416
  }
410
417
  .dx-allow__input::placeholder{ color:currentColor; opacity:.5; letter-spacing:.02em; text-transform:none; }
411
418
 
412
419
  .dx-cwp{
413
- --dx-ember:#f26c18; --dx-ember-2:#ba3a00; --dx-fg:#fff4ea; --dx-radius:0px;
414
420
  display:flex; flex-direction:column; gap:16px; font:inherit;
415
421
  }
416
422
  .dx-cwp__field{ display:flex; flex-direction:column; gap:8px; }
@@ -421,12 +427,12 @@ var CONSENT_CSS = `
421
427
  -webkit-tap-highlight-color:transparent; transition:border-color .16s ease, box-shadow .16s ease;
422
428
  }
423
429
  .dx-cwp__name:focus, .dx-cwp__name:focus-visible{
424
- outline:none; border-color:color-mix(in srgb,var(--dx-ember) 60%,transparent);
425
- box-shadow:0 0 0 3px color-mix(in srgb,var(--dx-ember) 26%,transparent);
430
+ outline:none; border-color:color-mix(in srgb,var(--dx-ember,#f26c18) 60%,transparent);
431
+ box-shadow:0 0 0 3px color-mix(in srgb,var(--dx-ember,#f26c18) 26%,transparent);
426
432
  }
427
433
  .dx-cwp__name::placeholder{ color:currentColor; opacity:.42; }
428
434
  .dx-cwp__fine{ font-size:.76rem; line-height:1.5; opacity:.66; }
429
- .dx-cwp__err{ font-size:.78rem; line-height:1.45; color:#e5552e; }
435
+ .dx-cwp__err{ font-size:.78rem; line-height:1.45; color:var(--dx-danger,#e5552e); }
430
436
  `;
431
437
  function ensureConsentStyles() {
432
438
  if (typeof document === "undefined") return;
package/dist/worldid.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DexterButton,
3
3
  ensureDexterButtonStyles
4
- } from "./chunk-S7G2ZZOO.js";
4
+ } from "./chunk-2WETR5DJ.js";
5
5
 
6
6
  // src/worldid.tsx
7
7
  import { useEffect, useState } from "react";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dexterai/connect",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "description": "Sign in with Dexter — passkey connector. Composes @dexterai/vault.",
5
5
  "type": "module",
6
6
  "exports": {