@luminaryworks/auth-react 0.5.0 → 0.6.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.
- package/dist/index.css +173 -4
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +44 -2
- package/dist/index.js +258 -2
- package/dist/index.js.map +1 -1
- package/dist/style.css +173 -4
- package/dist/style.css.map +1 -1
- package/package.json +4 -3
package/dist/index.css
CHANGED
|
@@ -98,8 +98,8 @@
|
|
|
98
98
|
cursor: not-allowed;
|
|
99
99
|
}
|
|
100
100
|
.HeadlessLoginPanel_module_socialStack {
|
|
101
|
-
display:
|
|
102
|
-
|
|
101
|
+
display: grid;
|
|
102
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
103
103
|
gap: 10px;
|
|
104
104
|
font-size: 12px;
|
|
105
105
|
}
|
|
@@ -177,8 +177,8 @@
|
|
|
177
177
|
cursor: not-allowed;
|
|
178
178
|
}
|
|
179
179
|
.HeadlessLoginPanel_module_socialBtn {
|
|
180
|
-
|
|
181
|
-
min-width:
|
|
180
|
+
width: 100%;
|
|
181
|
+
min-width: 0;
|
|
182
182
|
display: flex;
|
|
183
183
|
align-items: center;
|
|
184
184
|
justify-content: center;
|
|
@@ -292,4 +292,173 @@
|
|
|
292
292
|
gap: 8px;
|
|
293
293
|
justify-content: center;
|
|
294
294
|
}
|
|
295
|
+
|
|
296
|
+
/* src/LoginLanguageSwitcher.module.scss */
|
|
297
|
+
.LoginLanguageSwitcher_module_switch {
|
|
298
|
+
position: relative;
|
|
299
|
+
display: inline-flex;
|
|
300
|
+
}
|
|
301
|
+
.LoginLanguageSwitcher_module_trigger {
|
|
302
|
+
display: inline-flex;
|
|
303
|
+
align-items: center;
|
|
304
|
+
gap: 6px;
|
|
305
|
+
height: 32px;
|
|
306
|
+
padding: 0 10px 0 8px;
|
|
307
|
+
border: 1px solid rgba(15, 23, 42, 0.12);
|
|
308
|
+
border-radius: 999px;
|
|
309
|
+
background: rgba(255, 255, 255, 0.86);
|
|
310
|
+
color: #243044;
|
|
311
|
+
font: inherit;
|
|
312
|
+
font-size: 13px;
|
|
313
|
+
line-height: 1;
|
|
314
|
+
cursor: pointer;
|
|
315
|
+
backdrop-filter: blur(8px);
|
|
316
|
+
}
|
|
317
|
+
.LoginLanguageSwitcher_module_trigger:hover,
|
|
318
|
+
.LoginLanguageSwitcher_module_trigger[aria-expanded=true] {
|
|
319
|
+
border-color: var(--lw-login-accent, #1677ff);
|
|
320
|
+
color: #0f172a;
|
|
321
|
+
}
|
|
322
|
+
.LoginLanguageSwitcher_module_icon {
|
|
323
|
+
width: 14px;
|
|
324
|
+
height: 14px;
|
|
325
|
+
display: block;
|
|
326
|
+
}
|
|
327
|
+
.LoginLanguageSwitcher_module_caret {
|
|
328
|
+
width: 10px;
|
|
329
|
+
height: 10px;
|
|
330
|
+
opacity: 0.65;
|
|
331
|
+
}
|
|
332
|
+
.LoginLanguageSwitcher_module_menu {
|
|
333
|
+
position: absolute;
|
|
334
|
+
top: calc(100% + 6px);
|
|
335
|
+
right: 0;
|
|
336
|
+
z-index: 20;
|
|
337
|
+
min-width: 168px;
|
|
338
|
+
margin: 0;
|
|
339
|
+
padding: 6px;
|
|
340
|
+
list-style: none;
|
|
341
|
+
border-radius: 12px;
|
|
342
|
+
background: #fff;
|
|
343
|
+
box-shadow: 0 12px 40px rgba(15, 23, 42, 0.16);
|
|
344
|
+
}
|
|
345
|
+
.LoginLanguageSwitcher_module_item {
|
|
346
|
+
display: block;
|
|
347
|
+
width: 100%;
|
|
348
|
+
border: 0;
|
|
349
|
+
border-radius: 8px;
|
|
350
|
+
padding: 8px 10px;
|
|
351
|
+
background: transparent;
|
|
352
|
+
color: #1f2937;
|
|
353
|
+
font: inherit;
|
|
354
|
+
font-size: 14px;
|
|
355
|
+
text-align: left;
|
|
356
|
+
cursor: pointer;
|
|
357
|
+
}
|
|
358
|
+
.LoginLanguageSwitcher_module_item:hover {
|
|
359
|
+
background: #f3f6fb;
|
|
360
|
+
}
|
|
361
|
+
.LoginLanguageSwitcher_module_itemActive {
|
|
362
|
+
background: color-mix(in srgb, var(--lw-login-accent, #1677ff) 14%, #fff);
|
|
363
|
+
color: var(--lw-login-accent, #1677ff);
|
|
364
|
+
font-weight: 650;
|
|
365
|
+
}
|
|
366
|
+
.LoginLanguageSwitcher_module_onDark {
|
|
367
|
+
border-color: rgba(255, 255, 255, 0.22);
|
|
368
|
+
background: rgba(15, 23, 42, 0.28);
|
|
369
|
+
color: rgba(255, 255, 255, 0.92);
|
|
370
|
+
}
|
|
371
|
+
.LoginLanguageSwitcher_module_onDark:hover,
|
|
372
|
+
.LoginLanguageSwitcher_module_onDark[aria-expanded=true] {
|
|
373
|
+
border-color: rgba(255, 255, 255, 0.55);
|
|
374
|
+
color: #fff;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/* src/LoginCanvas.module.scss */
|
|
378
|
+
.LoginCanvas_module_canvas {
|
|
379
|
+
--lw-login-accent: #1677ff;
|
|
380
|
+
position: relative;
|
|
381
|
+
min-height: 100dvh;
|
|
382
|
+
display: grid;
|
|
383
|
+
place-items: center;
|
|
384
|
+
padding: 56px 20px 24px;
|
|
385
|
+
overflow: hidden;
|
|
386
|
+
background:
|
|
387
|
+
radial-gradient(
|
|
388
|
+
900px 480px at 8% -8%,
|
|
389
|
+
color-mix(in srgb, var(--lw-login-accent) 28%, transparent),
|
|
390
|
+
transparent 58%),
|
|
391
|
+
radial-gradient(
|
|
392
|
+
720px 420px at 100% 12%,
|
|
393
|
+
color-mix(in srgb, var(--lw-login-accent) 16%, transparent),
|
|
394
|
+
transparent 52%),
|
|
395
|
+
linear-gradient(
|
|
396
|
+
165deg,
|
|
397
|
+
var(--lw-login-bg-a, #f4f7fb) 0%,
|
|
398
|
+
var(--lw-login-bg-b, #e7eef6) 100%);
|
|
399
|
+
color: var(--lw-login-ink, #122033);
|
|
400
|
+
}
|
|
401
|
+
.LoginCanvas_module_canvas[data-tone=console] {
|
|
402
|
+
--lw-login-accent: #7eb6ff;
|
|
403
|
+
--lw-login-bg-a: #0e1726;
|
|
404
|
+
--lw-login-bg-b: #1a2740;
|
|
405
|
+
--lw-login-ink: #e8eef8;
|
|
406
|
+
--lw-login-grid: rgba(255, 255, 255, 0.05);
|
|
407
|
+
}
|
|
408
|
+
.LoginCanvas_module_canvas[data-tone=vista] {
|
|
409
|
+
--lw-login-accent: #1677ff;
|
|
410
|
+
--lw-login-bg-a: #f4f7fb;
|
|
411
|
+
--lw-login-bg-b: #dde7f0;
|
|
412
|
+
--lw-login-grid: rgba(11, 18, 32, 0.045);
|
|
413
|
+
}
|
|
414
|
+
.LoginCanvas_module_canvas[data-tone=data] {
|
|
415
|
+
--lw-login-accent: #5aa2ff;
|
|
416
|
+
--lw-login-bg-a: #070b14;
|
|
417
|
+
--lw-login-bg-b: #12203a;
|
|
418
|
+
--lw-login-ink: #e8eefc;
|
|
419
|
+
--lw-login-grid: rgba(255, 255, 255, 0.045);
|
|
420
|
+
}
|
|
421
|
+
.LoginCanvas_module_canvas[data-tone=edu] {
|
|
422
|
+
--lw-login-accent: #f59e0b;
|
|
423
|
+
--lw-login-bg-a: #fff7ed;
|
|
424
|
+
--lw-login-bg-b: #e0e7ff;
|
|
425
|
+
--lw-login-grid: rgba(67, 56, 202, 0.06);
|
|
426
|
+
}
|
|
427
|
+
.LoginCanvas_module_grid {
|
|
428
|
+
position: absolute;
|
|
429
|
+
inset: 0;
|
|
430
|
+
pointer-events: none;
|
|
431
|
+
background-image:
|
|
432
|
+
linear-gradient(var(--lw-login-grid, rgba(15, 23, 42, 0.04)) 1px, transparent 1px),
|
|
433
|
+
linear-gradient(
|
|
434
|
+
90deg,
|
|
435
|
+
var(--lw-login-grid, rgba(15, 23, 42, 0.04)) 1px,
|
|
436
|
+
transparent 1px);
|
|
437
|
+
background-size: 48px 48px;
|
|
438
|
+
mask-image:
|
|
439
|
+
radial-gradient(
|
|
440
|
+
ellipse at center,
|
|
441
|
+
#000 18%,
|
|
442
|
+
transparent 74%);
|
|
443
|
+
}
|
|
444
|
+
.LoginCanvas_module_lang {
|
|
445
|
+
position: fixed;
|
|
446
|
+
top: 14px;
|
|
447
|
+
right: 16px;
|
|
448
|
+
z-index: 5;
|
|
449
|
+
}
|
|
450
|
+
.LoginCanvas_module_decor {
|
|
451
|
+
position: absolute;
|
|
452
|
+
inset: 0;
|
|
453
|
+
pointer-events: none;
|
|
454
|
+
z-index: 0;
|
|
455
|
+
}
|
|
456
|
+
.LoginCanvas_module_slot {
|
|
457
|
+
position: relative;
|
|
458
|
+
z-index: 1;
|
|
459
|
+
width: min(440px, 100%);
|
|
460
|
+
}
|
|
461
|
+
.LoginCanvas_module_slotFill {
|
|
462
|
+
width: min(1120px, 100%);
|
|
463
|
+
}
|
|
295
464
|
/*# sourceMappingURL=index.css.map */
|
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/HeadlessLoginPanel.module.scss"],"sourcesContent":["$ink: #14212b;\n$muted: #4b5c68;\n$hint: #6b7c87;\n$brand: #3d6f8f;\n$brand-deep: #15485c;\n$brand-mid: #1f6f8b;\n$border: #c9d5de;\n$border-soft: #b7c9d4;\n$line: #d5e0e7;\n$divider: #90a0ab;\n$surface: #f7fafc;\n$fallback-bg: #e8eef2;\n$danger: #b42318;\n$footer-line: #e4ebf0;\n$radius-lg: 16px;\n$radius-md: 10px;\n$radius-sm: 4px;\n\n.panel {\n --lw-auth-theme: #1677ff;\n --lw-auth-theme-deep: color-mix(in srgb, var(--lw-auth-theme) 72%, #000);\n width: min(100%, 400px);\n padding: 28px 28px 22px;\n border-radius: $radius-lg;\n background: rgba(255, 255, 255, 0.96);\n color: $ink;\n box-shadow: 0 24px 64px rgba(15, 23, 42, 0.28);\n font-family: \"Segoe UI\", \"PingFang SC\", \"Noto Sans SC\", sans-serif;\n}\n\n.brand {\n display: flex;\n gap: 14px;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.logo {\n border-radius: 12px;\n display: block;\n}\n\n.product {\n margin: 0;\n font-size: 13px;\n font-weight: 650;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--lw-auth-theme);\n}\n\n.title {\n margin: 2px 0 0;\n font-size: 22px;\n font-weight: 700;\n line-height: 1.25;\n}\n\n.subtitle {\n margin: 0 0 18px;\n font-size: 14px;\n line-height: 1.5;\n color: $muted;\n}\n\n.form {\n display: grid;\n gap: 10px;\n}\n\n.channelTabs {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px;\n margin-bottom: 2px;\n}\n\n.channelTab {\n border: 1px solid $border;\n border-radius: $radius-md;\n padding: 8px 10px;\n font-size: 13px;\n font-weight: 650;\n cursor: pointer;\n color: $muted;\n background: $surface;\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.channelTabActive {\n color: var(--lw-auth-theme-deep);\n border-color: var(--lw-auth-theme);\n background: color-mix(in srgb, var(--lw-auth-theme) 10%, #fff);\n}\n\n.codeRow {\n display: grid;\n grid-template-columns: 1fr auto;\n gap: 8px;\n align-items: stretch;\n}\n\n.codeInput {\n min-width: 0;\n}\n\n.secondaryBtn {\n border: 1px solid $border-soft;\n border-radius: $radius-md;\n padding: 0 12px;\n font-size: 13px;\n font-weight: 650;\n cursor: pointer;\n color: $ink;\n background: #fff;\n white-space: nowrap;\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.socialStack {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n font-size: 12px;\n}\n\n.input {\n width: 100%;\n box-sizing: border-box;\n border: 1px solid $border;\n border-radius: $radius-md;\n padding: 10px 12px;\n font-size: 14px;\n outline: none;\n background: $surface;\n\n &:focus {\n border-color: var(--lw-auth-theme);\n }\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.passwordField {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.passwordInput {\n padding-right: 42px;\n}\n\n.passwordToggle {\n position: absolute;\n right: 4px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n border-radius: $radius-sm;\n padding: 0;\n color: #5a6b76;\n background: transparent;\n cursor: pointer;\n\n &:hover:not(:disabled) {\n color: var(--lw-auth-theme);\n background: color-mix(in srgb, var(--lw-auth-theme) 12%, transparent);\n }\n\n &:focus-visible {\n outline: 2px solid var(--lw-auth-theme);\n outline-offset: 1px;\n }\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.primaryBtn {\n border: none;\n border-radius: $radius-md;\n padding: 11px 14px;\n font-size: 14px;\n font-weight: 650;\n cursor: pointer;\n color: #fff;\n background: linear-gradient(135deg, var(--lw-auth-theme) 0%, var(--lw-auth-theme-deep) 100%);\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.socialBtn {\n flex: 1 1 calc(50% - 5px);\n min-width: min(140px, 100%);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n border: 1px solid $border-soft;\n border-radius: $radius-md;\n padding: 11px 10px;\n font-size: 14px;\n font-weight: 650;\n cursor: pointer;\n color: $ink;\n background: #fff;\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.socialLogo {\n flex-shrink: 0;\n display: block;\n}\n\n.logoFallback {\n width: 18px;\n height: 18px;\n border-radius: $radius-sm;\n background: color-mix(in srgb, var(--lw-auth-theme) 14%, #fff);\n color: var(--lw-auth-theme-deep);\n font-size: 11px;\n font-weight: 700;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.cancelBtn {\n margin-top: 10px;\n width: 100%;\n border: none;\n background: transparent;\n color: #5a6b76;\n font-size: 13px;\n cursor: pointer;\n padding: 8px;\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.divider {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 14px 0;\n color: $divider;\n}\n\n.dividerLine {\n flex: 1;\n height: 1px;\n background: $line;\n}\n\n.dividerText {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.hint {\n margin: 10px 0 0;\n font-size: 12px;\n color: $hint;\n line-height: 1.45;\n}\n\n.domainsHint {\n margin: -2px 0 0;\n font-size: 12px;\n line-height: 1.45;\n color: $muted;\n word-break: break-word;\n}\n\n.switchMode {\n margin: 12px 0 0;\n text-align: center;\n}\n\n.switchModeBtn {\n border: none;\n background: transparent;\n color: var(--lw-auth-theme);\n font-size: 13px;\n font-weight: 650;\n cursor: pointer;\n padding: 4px 8px;\n text-decoration: underline;\n text-underline-offset: 3px;\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.error {\n margin: 12px 0 0;\n font-size: 13px;\n color: $danger;\n line-height: 1.4;\n}\n\n.footer {\n margin-top: 18px;\n padding-top: 12px;\n border-top: 1px solid $footer-line;\n font-size: 12px;\n color: $hint;\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n"],"mappings":";AAkBA,CAAAA;AACE,mBAAA;AACA,wBAAA,UAAA,GAAA,IAAA,EAAA,IAAA,iBAAA,GAAA,EAAA;AACA,SAAA,IAAA,IAAA,EAAA;AACA,WAAA,KAAA,KAAA;AACA,iBATU;AAUV,cAAA,KAAA,GAAA,EAAA,GAAA,EAAA,GAAA,EAAA;AACA,SAzBI;AA0BJ,cAAA,EAAA,KAAA,KAAA,KAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AACA;IAAA,UAAA;IAAA,aAAA;IAAA,cAAA;IAAA;;AAGF,CAAAC;AACE,WAAA;AACA,OAAA;AACA,eAAA;AACA,iBAAA;;AAGF,CAAAC;AACE,iBAAA;AACA,WAAA;;AAGF,CAAAC;AACE,UAAA;AACA,aAAA;AACA,eAAA;AACA,kBAAA;AACA,kBAAA;AACA,SAAA,IAAA;;AAGF,CAAAC;AACE,UAAA,IAAA,EAAA;AACA,aAAA;AACA,eAAA;AACA,eAAA;;AAGF,CAAAC;AACE,UAAA,EAAA,EAAA;AACA,aAAA;AACA,eAAA;AACA,SA7DM;;AAgER,CAAAC;AACE,WAAA;AACA,OAAA;;AAGF,CAAAC;AACE,WAAA;AACA,yBAAA,IAAA;AACA,OAAA;AACA,iBAAA;;AAGF,CAAAC;AACE,UAAA,IAAA,MAAA;AACA,iBAhEU;AAiEV,WAAA,IAAA;AACA,aAAA;AACA,eAAA;AACA,UAAA;AACA,SAnFM;AAoFN,cA3EQ;;AA6ER,CAVFA,oCAUE;AACE,WAAA;AACA,UAAA;;AAIJ,CAAAC;AACE,SAAA,IAAA;AACA,gBAAA,IAAA;AACA,cAAA,UAAA,GAAA,IAAA,EAAA,IAAA,iBAAA,GAAA,EAAA;;AAGF,CAAAC;AACE,WAAA;AACA,yBAAA,IAAA;AACA,OAAA;AACA,eAAA;;AAGF,CAAAC;AACE,aAAA;;AAGF,CAAAC;AACE,UAAA,IAAA,MAAA;AACA,iBAjGU;AAkGV,WAAA,EAAA;AACA,aAAA;AACA,eAAA;AACA,UAAA;AACA,SArHI;AAsHJ,cAAA;AACA,eAAA;;AAEA,CAXFA,sCAWE;AACE,WAAA;AACA,UAAA;;AAIJ,CAAAC;AACE,WAAA;AACA,aAAA;AACA,OAAA;AACA,aAAA;;AAGF,CAAAC;AACE,SAAA;AACA,cAAA;AACA,UAAA,IAAA,MAAA;AACA,iBA3HU;AA4HV,WAAA,KAAA;AACA,aAAA;AACA,WAAA;AACA,cApIQ;;AAsIR,CAVFA,+BAUE;AACE,gBAAA,IAAA;;AAGF,CAdFA,+BAcE;AACE,WAAA;AACA,UAAA;;AAIJ,CAAAC;AACE,YAAA;AACA,WAAA;AACA,eAAA;;AAGF,CAAAC;AACE,iBAAA;;AAGF,CAAAC;AACE,YAAA;AACA,SAAA;AACA,OAAA;AACA,aAAA,WAAA;AACA,WAAA;AACA,WAAA;AACA,eAAA;AACA,mBAAA;AACA,SAAA;AACA,UAAA;AACA,UAAA;AACA,iBAhKU;AAiKV,WAAA;AACA,SAAA;AACA,cAAA;AACA,UAAA;;AAEA,CAlBFA,wCAkBE,MAAA,KAAA;AACE,SAAA,IAAA;AACA,cAAA,UAAA,GAAA,IAAA,EAAA,IAAA,iBAAA,GAAA,EAAA;;AAGF,CAvBFA,wCAuBE;AACE,WAAA,IAAA,MAAA,IAAA;AACA,kBAAA;;AAGF,CA5BFA,wCA4BE;AACE,WAAA;AACA,UAAA;;AAIJ,CAAAC;AACE,UAAA;AACA,iBAzLU;AA0LV,WAAA,KAAA;AACA,aAAA;AACA,eAAA;AACA,UAAA;AACA,SAAA;AACA;IAAA;MAAA,MAAA;MAAA,IAAA,iBAAA,EAAA;MAAA,IAAA,sBAAA;;AAEA,CAVFA,oCAUE;AACE,WAAA;AACA,UAAA;;AAIJ,CAAAC;AACE,QAAA,EAAA,EAAA,KAAA,IAAA,EAAA;AACA,aAAA,IAAA,KAAA,EAAA;AACA,WAAA;AACA,eAAA;AACA,mBAAA;AACA,OAAA;AACA,UAAA,IAAA,MAAA;AACA,iBA/MU;AAgNV,WAAA,KAAA;AACA,aAAA;AACA,eAAA;AACA,UAAA;AACA,SAnOI;AAoOJ,cAAA;;AAEA,CAhBFA,mCAgBE;AACE,WAAA;AACA,UAAA;;AAIJ,CAAAC;AACE,eAAA;AACA,WAAA;;AAGF,CAAAC;AACE,SAAA;AACA,UAAA;AACA,iBApOU;AAqOV,cAAA,UAAA,GAAA,IAAA,EAAA,IAAA,iBAAA,GAAA,EAAA;AACA,SAAA,IAAA;AACA,aAAA;AACA,eAAA;AACA,WAAA;AACA,eAAA;AACA,mBAAA;AACA,eAAA;;AAGF,CAAAC;AACE,cAAA;AACA,SAAA;AACA,UAAA;AACA,cAAA;AACA,SAAA;AACA,aAAA;AACA,UAAA;AACA,WAAA;;AAEA,CAVFA,mCAUE;AACE,WAAA;AACA,UAAA;;AAIJ,CAAAC;AACE,WAAA;AACA,eAAA;AACA,OAAA;AACA,UAAA,KAAA;AACA,SA3QQ;;AA8QV,CAAAC;AACE,QAAA;AACA,UAAA;AACA,cAlRK;;AAqRP,CAAAC;AACE,aAAA;AACA,kBAAA;AACA,kBAAA;;AAGF,CAAAC;AACE,UAAA,KAAA,EAAA;AACA,aAAA;AACA,SApSK;AAqSL,eAAA;;AAGF,CAAAC;AACE,UAAA,KAAA,EAAA;AACA,aAAA;AACA,eAAA;AACA,SA7SM;AA8SN,cAAA;;AAGF,CAAAC;AACE,UAAA,KAAA,EAAA;AACA,cAAA;;AAGF,CAAAC;AACE,UAAA;AACA,cAAA;AACA,SAAA,IAAA;AACA,aAAA;AACA,eAAA;AACA,UAAA;AACA,WAAA,IAAA;AACA,mBAAA;AACA,yBAAA;;AAEA,CAXFA,uCAWE;AACE,WAAA;AACA,UAAA;;AAIJ,CAAAC;AACE,UAAA,KAAA,EAAA;AACA,aAAA;AACA,SA/TO;AAgUP,eAAA;;AAGF,CAAAC;AACE,cAAA;AACA,eAAA;AACA,cAAA,IAAA,MAAA;AACA,aAAA;AACA,SAlVK;AAmVL,WAAA;AACA,OAAA;AACA,mBAAA;;","names":["panel","brand","logo","product","title","subtitle","form","channelTabs","channelTab","channelTabActive","codeRow","codeInput","secondaryBtn","socialStack","input","passwordField","passwordInput","passwordToggle","primaryBtn","socialBtn","socialLogo","logoFallback","cancelBtn","divider","dividerLine","dividerText","hint","domainsHint","switchMode","switchModeBtn","error","footer"]}
|
|
1
|
+
{"version":3,"sources":["../src/HeadlessLoginPanel.module.scss","../src/LoginLanguageSwitcher.module.scss","../src/LoginCanvas.module.scss"],"sourcesContent":["$ink: #14212b;\n$muted: #4b5c68;\n$hint: #6b7c87;\n$brand: #3d6f8f;\n$brand-deep: #15485c;\n$brand-mid: #1f6f8b;\n$border: #c9d5de;\n$border-soft: #b7c9d4;\n$line: #d5e0e7;\n$divider: #90a0ab;\n$surface: #f7fafc;\n$fallback-bg: #e8eef2;\n$danger: #b42318;\n$footer-line: #e4ebf0;\n$radius-lg: 16px;\n$radius-md: 10px;\n$radius-sm: 4px;\n\n.panel {\n --lw-auth-theme: #1677ff;\n --lw-auth-theme-deep: color-mix(in srgb, var(--lw-auth-theme) 72%, #000);\n width: min(100%, 400px);\n padding: 28px 28px 22px;\n border-radius: $radius-lg;\n background: rgba(255, 255, 255, 0.96);\n color: $ink;\n box-shadow: 0 24px 64px rgba(15, 23, 42, 0.28);\n font-family: \"Segoe UI\", \"PingFang SC\", \"Noto Sans SC\", sans-serif;\n}\n\n.brand {\n display: flex;\n gap: 14px;\n align-items: center;\n margin-bottom: 12px;\n}\n\n.logo {\n border-radius: 12px;\n display: block;\n}\n\n.product {\n margin: 0;\n font-size: 13px;\n font-weight: 650;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--lw-auth-theme);\n}\n\n.title {\n margin: 2px 0 0;\n font-size: 22px;\n font-weight: 700;\n line-height: 1.25;\n}\n\n.subtitle {\n margin: 0 0 18px;\n font-size: 14px;\n line-height: 1.5;\n color: $muted;\n}\n\n.form {\n display: grid;\n gap: 10px;\n}\n\n.channelTabs {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 6px;\n margin-bottom: 2px;\n}\n\n.channelTab {\n border: 1px solid $border;\n border-radius: $radius-md;\n padding: 8px 10px;\n font-size: 13px;\n font-weight: 650;\n cursor: pointer;\n color: $muted;\n background: $surface;\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.channelTabActive {\n color: var(--lw-auth-theme-deep);\n border-color: var(--lw-auth-theme);\n background: color-mix(in srgb, var(--lw-auth-theme) 10%, #fff);\n}\n\n.codeRow {\n display: grid;\n grid-template-columns: 1fr auto;\n gap: 8px;\n align-items: stretch;\n}\n\n.codeInput {\n min-width: 0;\n}\n\n.secondaryBtn {\n border: 1px solid $border-soft;\n border-radius: $radius-md;\n padding: 0 12px;\n font-size: 13px;\n font-weight: 650;\n cursor: pointer;\n color: $ink;\n background: #fff;\n white-space: nowrap;\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.socialStack {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 10px;\n font-size: 12px;\n}\n\n.input {\n width: 100%;\n box-sizing: border-box;\n border: 1px solid $border;\n border-radius: $radius-md;\n padding: 10px 12px;\n font-size: 14px;\n outline: none;\n background: $surface;\n\n &:focus {\n border-color: var(--lw-auth-theme);\n }\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.passwordField {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.passwordInput {\n padding-right: 42px;\n}\n\n.passwordToggle {\n position: absolute;\n right: 4px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n border-radius: $radius-sm;\n padding: 0;\n color: #5a6b76;\n background: transparent;\n cursor: pointer;\n\n &:hover:not(:disabled) {\n color: var(--lw-auth-theme);\n background: color-mix(in srgb, var(--lw-auth-theme) 12%, transparent);\n }\n\n &:focus-visible {\n outline: 2px solid var(--lw-auth-theme);\n outline-offset: 1px;\n }\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.primaryBtn {\n border: none;\n border-radius: $radius-md;\n padding: 11px 14px;\n font-size: 14px;\n font-weight: 650;\n cursor: pointer;\n color: #fff;\n background: linear-gradient(135deg, var(--lw-auth-theme) 0%, var(--lw-auth-theme-deep) 100%);\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.socialBtn {\n width: 100%;\n min-width: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n border: 1px solid $border-soft;\n border-radius: $radius-md;\n padding: 11px 10px;\n font-size: 14px;\n font-weight: 650;\n cursor: pointer;\n color: $ink;\n background: #fff;\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.socialLogo {\n flex-shrink: 0;\n display: block;\n}\n\n.logoFallback {\n width: 18px;\n height: 18px;\n border-radius: $radius-sm;\n background: color-mix(in srgb, var(--lw-auth-theme) 14%, #fff);\n color: var(--lw-auth-theme-deep);\n font-size: 11px;\n font-weight: 700;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.cancelBtn {\n margin-top: 10px;\n width: 100%;\n border: none;\n background: transparent;\n color: #5a6b76;\n font-size: 13px;\n cursor: pointer;\n padding: 8px;\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.divider {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 14px 0;\n color: $divider;\n}\n\n.dividerLine {\n flex: 1;\n height: 1px;\n background: $line;\n}\n\n.dividerText {\n font-size: 12px;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n}\n\n.hint {\n margin: 10px 0 0;\n font-size: 12px;\n color: $hint;\n line-height: 1.45;\n}\n\n.domainsHint {\n margin: -2px 0 0;\n font-size: 12px;\n line-height: 1.45;\n color: $muted;\n word-break: break-word;\n}\n\n.switchMode {\n margin: 12px 0 0;\n text-align: center;\n}\n\n.switchModeBtn {\n border: none;\n background: transparent;\n color: var(--lw-auth-theme);\n font-size: 13px;\n font-weight: 650;\n cursor: pointer;\n padding: 4px 8px;\n text-decoration: underline;\n text-underline-offset: 3px;\n\n &:disabled {\n opacity: 0.65;\n cursor: not-allowed;\n }\n}\n\n.error {\n margin: 12px 0 0;\n font-size: 13px;\n color: $danger;\n line-height: 1.4;\n}\n\n.footer {\n margin-top: 18px;\n padding-top: 12px;\n border-top: 1px solid $footer-line;\n font-size: 12px;\n color: $hint;\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n",".switch {\n position: relative;\n display: inline-flex;\n}\n\n.trigger {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n height: 32px;\n padding: 0 10px 0 8px;\n border: 1px solid rgba(15, 23, 42, 0.12);\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.86);\n color: #243044;\n font: inherit;\n font-size: 13px;\n line-height: 1;\n cursor: pointer;\n backdrop-filter: blur(8px);\n\n &:hover,\n &[aria-expanded=\"true\"] {\n border-color: var(--lw-login-accent, #1677ff);\n color: #0f172a;\n }\n}\n\n.icon {\n width: 14px;\n height: 14px;\n display: block;\n}\n\n.caret {\n width: 10px;\n height: 10px;\n opacity: 0.65;\n}\n\n.menu {\n position: absolute;\n top: calc(100% + 6px);\n right: 0;\n z-index: 20;\n min-width: 168px;\n margin: 0;\n padding: 6px;\n list-style: none;\n border-radius: 12px;\n background: #fff;\n box-shadow: 0 12px 40px rgba(15, 23, 42, 0.16);\n}\n\n.item {\n display: block;\n width: 100%;\n border: 0;\n border-radius: 8px;\n padding: 8px 10px;\n background: transparent;\n color: #1f2937;\n font: inherit;\n font-size: 14px;\n text-align: left;\n cursor: pointer;\n\n &:hover {\n background: #f3f6fb;\n }\n}\n\n.itemActive {\n background: color-mix(in srgb, var(--lw-login-accent, #1677ff) 14%, #fff);\n color: var(--lw-login-accent, #1677ff);\n font-weight: 650;\n}\n\n.onDark {\n border-color: rgba(255, 255, 255, 0.22);\n background: rgba(15, 23, 42, 0.28);\n color: rgba(255, 255, 255, 0.92);\n\n &:hover,\n &[aria-expanded=\"true\"] {\n border-color: rgba(255, 255, 255, 0.55);\n color: #fff;\n }\n}\n",".canvas {\n --lw-login-accent: #1677ff;\n position: relative;\n min-height: 100dvh;\n display: grid;\n place-items: center;\n padding: 56px 20px 24px;\n overflow: hidden;\n background:\n radial-gradient(900px 480px at 8% -8%, color-mix(in srgb, var(--lw-login-accent) 28%, transparent), transparent 58%),\n radial-gradient(720px 420px at 100% 12%, color-mix(in srgb, var(--lw-login-accent) 16%, transparent), transparent 52%),\n linear-gradient(165deg, var(--lw-login-bg-a, #f4f7fb) 0%, var(--lw-login-bg-b, #e7eef6) 100%);\n color: var(--lw-login-ink, #122033);\n}\n\n.canvas[data-tone=\"console\"] {\n --lw-login-accent: #7eb6ff;\n --lw-login-bg-a: #0e1726;\n --lw-login-bg-b: #1a2740;\n --lw-login-ink: #e8eef8;\n --lw-login-grid: rgba(255, 255, 255, 0.05);\n}\n\n.canvas[data-tone=\"vista\"] {\n --lw-login-accent: #1677ff;\n --lw-login-bg-a: #f4f7fb;\n --lw-login-bg-b: #dde7f0;\n --lw-login-grid: rgba(11, 18, 32, 0.045);\n}\n\n.canvas[data-tone=\"data\"] {\n --lw-login-accent: #5aa2ff;\n --lw-login-bg-a: #070b14;\n --lw-login-bg-b: #12203a;\n --lw-login-ink: #e8eefc;\n --lw-login-grid: rgba(255, 255, 255, 0.045);\n}\n\n.canvas[data-tone=\"edu\"] {\n --lw-login-accent: #f59e0b;\n --lw-login-bg-a: #fff7ed;\n --lw-login-bg-b: #e0e7ff;\n --lw-login-grid: rgba(67, 56, 202, 0.06);\n}\n\n.grid {\n position: absolute;\n inset: 0;\n pointer-events: none;\n background-image:\n linear-gradient(var(--lw-login-grid, rgba(15, 23, 42, 0.04)) 1px, transparent 1px),\n linear-gradient(90deg, var(--lw-login-grid, rgba(15, 23, 42, 0.04)) 1px, transparent 1px);\n background-size: 48px 48px;\n mask-image: radial-gradient(ellipse at center, #000 18%, transparent 74%);\n}\n\n.lang {\n position: fixed;\n top: 14px;\n right: 16px;\n z-index: 5;\n}\n\n.decor {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n}\n\n.slot {\n position: relative;\n z-index: 1;\n width: min(440px, 100%);\n}\n\n.slotFill {\n width: min(1120px, 100%);\n}\n"],"mappings":"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","names":["panel","brand","logo","product","title","subtitle","form","channelTabs","channelTab","channelTabActive","codeRow","codeInput","secondaryBtn","socialStack","input","passwordField","passwordInput","passwordToggle","primaryBtn","socialBtn","socialLogo","logoFallback","cancelBtn","divider","dividerLine","dividerText","hint","domainsHint","switchMode","switchModeBtn","error","footer","switch","trigger","icon","caret","menu","item","itemActive","onDark","canvas","grid","lang","decor","slot","slotFill"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -477,6 +477,11 @@ interface HeadlessLoginPanelProps {
|
|
|
477
477
|
productName: string;
|
|
478
478
|
logoSrc?: string;
|
|
479
479
|
labels?: HeadlessLoginLabels;
|
|
480
|
+
/**
|
|
481
|
+
* Card copy locale (`en` | `zh-CN` | `zh-TW` | `es`, plus `zh` → zh-CN).
|
|
482
|
+
* Explicit `labels` still override individual keys.
|
|
483
|
+
*/
|
|
484
|
+
locale?: string;
|
|
480
485
|
returnUrl?: string;
|
|
481
486
|
/** Prefer popup (default) for reauth; redirect for full-page SPA; external for desktop/mobile system browser (RFC 8252). */
|
|
482
487
|
mode?: "popup" | "redirect" | "external";
|
|
@@ -541,7 +546,7 @@ interface HeadlessLoginPanelProps {
|
|
|
541
546
|
}
|
|
542
547
|
/** Shared default accent for product login panels (shared/brand --lw-primary). */
|
|
543
548
|
declare const DEFAULT_LOGIN_THEME_COLOR = "#1677ff";
|
|
544
|
-
declare function HeadlessLoginPanel({ config, experienceAdapter: experienceAdapterProp, productName, logoSrc, labels: labelsProp, returnUrl, mode, openExternalUrl, showSocialConnectors, showRegister, registerEmailPolicy: registerEmailPolicyProp, fetchRegisterPolicy, getCaptchaToken, socialProviders, showCancel, onCancel, onOidcSession, onExperienceRedirect, footer, className, style, themeColor, }: HeadlessLoginPanelProps): react.JSX.Element;
|
|
549
|
+
declare function HeadlessLoginPanel({ config, experienceAdapter: experienceAdapterProp, productName, logoSrc, labels: labelsProp, locale, returnUrl, mode, openExternalUrl, showSocialConnectors, showRegister, registerEmailPolicy: registerEmailPolicyProp, fetchRegisterPolicy, getCaptchaToken, socialProviders, showCancel, onCancel, onOidcSession, onExperienceRedirect, footer, className, style, themeColor, }: HeadlessLoginPanelProps): react.JSX.Element;
|
|
545
550
|
|
|
546
551
|
interface ReauthOverlayProps {
|
|
547
552
|
config: Partial<LuminaryIdpConfig>;
|
|
@@ -584,6 +589,43 @@ declare function useAuthGate(): AuthGateContextValue;
|
|
|
584
589
|
/** Optional hook — returns null outside provider (for shared API helpers). */
|
|
585
590
|
declare function useAuthGateOptional(): AuthGateContextValue | null;
|
|
586
591
|
|
|
592
|
+
/** Locales shipped with the shared login card. Products may pass a wider menu. */
|
|
593
|
+
type LoginLocale = "en" | "zh-CN" | "zh-TW" | "es";
|
|
594
|
+
interface LoginLocaleOption {
|
|
595
|
+
code: string;
|
|
596
|
+
label: string;
|
|
597
|
+
short: string;
|
|
598
|
+
}
|
|
599
|
+
declare const DEFAULT_LOGIN_LOCALES: readonly LoginLocaleOption[];
|
|
600
|
+
/** Normalize product locale tags (`zh`, `zh-Hans`) onto the card dictionary. */
|
|
601
|
+
declare function normalizeLoginLocale(locale: string | undefined): LoginLocale;
|
|
602
|
+
/** Card copy for a locale. English is the panel default, so `en` returns `{}`. */
|
|
603
|
+
declare function loginLabels(locale: string | undefined): HeadlessLoginLabels;
|
|
604
|
+
|
|
605
|
+
interface LoginLanguageSwitcherProps {
|
|
606
|
+
locale: string;
|
|
607
|
+
onChange: (locale: string) => void;
|
|
608
|
+
locales?: readonly LoginLocaleOption[];
|
|
609
|
+
/** Accessible name, e.g. "Language" / "语言". */
|
|
610
|
+
label?: string;
|
|
611
|
+
variant?: "default" | "onDark";
|
|
612
|
+
}
|
|
613
|
+
declare function LoginLanguageSwitcher({ locale, onChange, locales, label, variant, }: LoginLanguageSwitcherProps): react.JSX.Element;
|
|
614
|
+
|
|
615
|
+
type LoginCanvasTone = "console" | "vista" | "data" | "edu";
|
|
616
|
+
interface LoginCanvasProps {
|
|
617
|
+
tone: LoginCanvasTone;
|
|
618
|
+
locale: string;
|
|
619
|
+
onLocaleChange: (locale: string) => void;
|
|
620
|
+
locales?: readonly LoginLocaleOption[];
|
|
621
|
+
languageLabel?: string;
|
|
622
|
+
/** Full-width slot for split layouts (hero + card). Default centers a single card. */
|
|
623
|
+
fill?: boolean;
|
|
624
|
+
decor?: ReactNode;
|
|
625
|
+
children: ReactNode;
|
|
626
|
+
}
|
|
627
|
+
declare function LoginCanvas({ tone, locale, onLocaleChange, locales, languageLabel, fill, decor, children, }: LoginCanvasProps): react.JSX.Element;
|
|
628
|
+
|
|
587
629
|
interface PostLoginPathOptions {
|
|
588
630
|
/** sessionStorage key (product-scoped), e.g. `dv:postLoginPath` */
|
|
589
631
|
storageKey: string;
|
|
@@ -604,4 +646,4 @@ declare function createPostLoginPathHelpers(options: PostLoginPathOptions): {
|
|
|
604
646
|
isUnsafeReturnPath: (path: string) => boolean;
|
|
605
647
|
};
|
|
606
648
|
|
|
607
|
-
export { type AuthGateConfig, type AuthGatePhase, AuthGateProvider, type AuthGateProviderProps, type AuthGateSnapshot, DEFAULT_DISPOSABLE_EMAIL_BLOCKLIST, DEFAULT_LOGIN_THEME_COLOR, DEFAULT_REGISTER_EMAIL_ALLOWLIST, type ExperienceEmailSignUpCompleteInput, type ExperienceEmailSignUpSendCodeInput, type ExperienceEmailSignUpSendCodeResult, type ExperienceIdentifierType, type ExperiencePasswordSignInInput, type ExperiencePasswordSignInResult, type ExperiencePasswordSignUpInput, type ExperiencePasswordSignUpResult, type ExperienceSocialConnector, type FetchSocialConnectorsInput, type HeadlessLoginLabels, HeadlessLoginPanel, type HeadlessLoginPanelProps, HostedOidcExperienceAdapter, LOGIN_EXPERIENCE_CAPABILITIES, type LoginExperienceAdapter, type LoginExperienceCapability, type LoginExperienceProvider, LogtoExperienceAdapter, LuminaryAuthProvider, type LuminaryAuthProviderProps, type LuminaryAuthSession, type LuminaryIdpConfig, type PostLoginPathOptions, type PublicRegisterPolicyResponse, ReauthOverlay, type ReauthOverlayProps, type RegisterEmailDecision, type RegisterEmailMode, type RegisterEmailPolicy, type RegisterEmailPolicyInput, type SignInOptions, type SocialProviderTarget, type SocialSignInRequest, type UnauthorizedDisposition, authGate, clearStoredSession, createLoginExperienceAdapter, createLogtoDirectSignInRequest, createPostLoginPathHelpers, createUserManager, emailDomain, evaluateRegisterEmail, experiencePasswordSignIn, fetchRegisterEmailPolicy, fetchSocialConnectors, formatAllowedEmailDomains, getCurrentUser, getStoredAccessToken, handleSignInCallback, handleSignInPopupCallback, isIdpConfigured, isLogtoRegisterUsername, isOidcPopupWindow, isValidEmailShape, normalizeRegisterEmailMode, prepareSignInRequestUrl, readIdpConfigFromEnv, readRegisterEmailPolicyFromEnv, registerEmailDomainsHint, registerEmailRejectionMessage, resetUserManager, resolveExperienceApiBase, resolveIssuer, resolveLoginExperienceAdapter, resolveLoginExperienceProviderFromEnv, resolveRegisterEmailPolicy, sameOriginAuthorizeUrl, signInPopup, signInRedirect, signOutRedirect, useAuthGate, useAuthGateOptional, useLuminaryAuth, withAuthGateRetry };
|
|
649
|
+
export { type AuthGateConfig, type AuthGatePhase, AuthGateProvider, type AuthGateProviderProps, type AuthGateSnapshot, DEFAULT_DISPOSABLE_EMAIL_BLOCKLIST, DEFAULT_LOGIN_LOCALES, DEFAULT_LOGIN_THEME_COLOR, DEFAULT_REGISTER_EMAIL_ALLOWLIST, type ExperienceEmailSignUpCompleteInput, type ExperienceEmailSignUpSendCodeInput, type ExperienceEmailSignUpSendCodeResult, type ExperienceIdentifierType, type ExperiencePasswordSignInInput, type ExperiencePasswordSignInResult, type ExperiencePasswordSignUpInput, type ExperiencePasswordSignUpResult, type ExperienceSocialConnector, type FetchSocialConnectorsInput, type HeadlessLoginLabels, HeadlessLoginPanel, type HeadlessLoginPanelProps, HostedOidcExperienceAdapter, LOGIN_EXPERIENCE_CAPABILITIES, LoginCanvas, type LoginCanvasProps, type LoginCanvasTone, type LoginExperienceAdapter, type LoginExperienceCapability, type LoginExperienceProvider, LoginLanguageSwitcher, type LoginLanguageSwitcherProps, type LoginLocale, type LoginLocaleOption, LogtoExperienceAdapter, LuminaryAuthProvider, type LuminaryAuthProviderProps, type LuminaryAuthSession, type LuminaryIdpConfig, type PostLoginPathOptions, type PublicRegisterPolicyResponse, ReauthOverlay, type ReauthOverlayProps, type RegisterEmailDecision, type RegisterEmailMode, type RegisterEmailPolicy, type RegisterEmailPolicyInput, type SignInOptions, type SocialProviderTarget, type SocialSignInRequest, type UnauthorizedDisposition, authGate, clearStoredSession, createLoginExperienceAdapter, createLogtoDirectSignInRequest, createPostLoginPathHelpers, createUserManager, emailDomain, evaluateRegisterEmail, experiencePasswordSignIn, fetchRegisterEmailPolicy, fetchSocialConnectors, formatAllowedEmailDomains, getCurrentUser, getStoredAccessToken, handleSignInCallback, handleSignInPopupCallback, isIdpConfigured, isLogtoRegisterUsername, isOidcPopupWindow, isValidEmailShape, loginLabels, normalizeLoginLocale, normalizeRegisterEmailMode, prepareSignInRequestUrl, readIdpConfigFromEnv, readRegisterEmailPolicyFromEnv, registerEmailDomainsHint, registerEmailRejectionMessage, resetUserManager, resolveExperienceApiBase, resolveIssuer, resolveLoginExperienceAdapter, resolveLoginExperienceProviderFromEnv, resolveRegisterEmailPolicy, sameOriginAuthorizeUrl, signInPopup, signInRedirect, signOutRedirect, useAuthGate, useAuthGateOptional, useLuminaryAuth, withAuthGateRetry };
|