@tempots/beatui 1.4.0 → 1.5.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/auth/index.cjs.js +1 -1
- package/dist/auth/index.es.js +1 -1
- package/dist/{auth-divider-D_3gKZ6g.js → auth-divider-BIATan1F.js} +3 -3
- package/dist/{auth-divider-itm5-j5G.cjs → auth-divider-CVKfA8Cp.cjs} +1 -1
- package/dist/beatui.css +393 -36
- package/dist/beatui.tailwind.css +393 -36
- package/dist/better-auth/index.cjs.js +1 -1
- package/dist/better-auth/index.es.js +2 -2
- package/dist/deep-merge-B33Qtlmw.cjs +1 -0
- package/dist/{deep-merge-CzZVsVF-.js → deep-merge-BUsrE2v4.js} +130 -130
- package/dist/{duration-input-BrYLC1js.cjs → duration-input-C5il_E0F.cjs} +1 -1
- package/dist/{duration-input-CFu6vq-y.js → duration-input-DoCCrqOG.js} +1 -1
- package/dist/index.cjs.js +4 -4
- package/dist/index.es.js +5609 -5130
- package/dist/json-schema/index.cjs.js +1 -1
- package/dist/json-schema/index.es.js +107 -107
- package/dist/json-structure/index.cjs.js +1 -1
- package/dist/json-structure/index.es.js +3 -3
- package/dist/{modal-YKqlh4Dk.js → modal-BHlp4QeT.js} +1 -1
- package/dist/{modal-DCxNGrzk.cjs → modal-BmpfNL48.cjs} +1 -1
- package/dist/{notice-Q0A1gIho.cjs → notice-BBnSXYUc.cjs} +1 -1
- package/dist/{notice-Du3tWJTW.js → notice-BXKtBEiC.js} +1 -1
- package/dist/types/components/data/data-table-context.d.ts +9 -1
- package/dist/types/components/data/data-table-row-details.d.ts +21 -0
- package/dist/types/components/data/data-table-types.d.ts +23 -0
- package/dist/types/components/data/index.d.ts +1 -0
- package/dist/types/components/form/control/control.d.ts +5 -5
- package/dist/types/components/form/control/list-control.d.ts +11 -11
- package/dist/types/components/form/fieldset/fieldset.d.ts +60 -0
- package/dist/types/components/form/fieldset/index.d.ts +1 -0
- package/dist/types/components/form/index.d.ts +1 -0
- package/dist/types/components/form/input/combobox-input.d.ts +2 -2
- package/dist/types/components/form/input/combobox-tags-input.d.ts +1 -1
- package/dist/types/components/form/input/date-time-input.d.ts +1 -1
- package/dist/types/components/form/input/dropdown-input.d.ts +2 -2
- package/dist/types/components/form/input/field-layout.d.ts +64 -0
- package/dist/types/components/form/input/{input-wrapper.d.ts → field.d.ts} +23 -14
- package/dist/types/components/form/input/index.d.ts +2 -1
- package/dist/types/components/form/input/multi-select.d.ts +2 -2
- package/dist/types/components/form/input/native-select.d.ts +1 -1
- package/dist/types/components/form/input/range-slider.d.ts +19 -2
- package/dist/types/components/form/input/select-tags-input.d.ts +1 -1
- package/dist/types/components/format/format-bigint.d.ts +64 -0
- package/dist/types/components/format/format-date-time.d.ts +54 -0
- package/dist/types/components/format/format-date.d.ts +82 -0
- package/dist/types/components/format/format-display-name.d.ts +70 -0
- package/dist/types/components/format/format-file-size.d.ts +30 -0
- package/dist/types/components/format/format-list.d.ts +61 -0
- package/dist/types/components/format/format-number.d.ts +88 -0
- package/dist/types/components/format/format-plural.d.ts +96 -0
- package/dist/types/components/format/format-relative-time.d.ts +62 -0
- package/dist/types/components/format/format-time.d.ts +66 -0
- package/dist/types/components/format/index.d.ts +11 -0
- package/dist/types/components/i18n/locale-selector.d.ts +1 -1
- package/dist/types/components/json-schema/controls/composition-shared.d.ts +1 -1
- package/dist/types/components/json-schema/controls/shared-utils.d.ts +3 -3
- package/dist/types/components/json-schema/widgets/string-controls.d.ts +2 -2
- package/dist/types/components/json-schema-display/display-wrapper.d.ts +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/use-form-CP6nftVl.cjs +2 -0
- package/dist/{use-form-D_TJyZhP.js → use-form-CmQdxpOi.js} +474 -434
- package/dist/{widget-customization-DELy3SMQ.cjs → widget-customization-B0y-eesp.cjs} +1 -1
- package/dist/{widget-customization-BAchyOUo.js → widget-customization-CKbR4Dsg.js} +2 -2
- package/package.json +1 -1
- package/dist/deep-merge-Bydz6jLt.cjs +0 -1
- package/dist/use-form-BvBkVEKi.cjs +0 -2
package/dist/beatui.tailwind.css
CHANGED
|
@@ -5432,6 +5432,15 @@ a:focus-visible {
|
|
|
5432
5432
|
background-color: var(--color-base-800);
|
|
5433
5433
|
}
|
|
5434
5434
|
|
|
5435
|
+
/* Format Components - Locale-aware data formatting display */
|
|
5436
|
+
|
|
5437
|
+
/* Tabular figures for numeric format components */
|
|
5438
|
+
.bc-format-number,
|
|
5439
|
+
.bc-format-bigint,
|
|
5440
|
+
.bc-format-file-size {
|
|
5441
|
+
font-variant-numeric: tabular-nums;
|
|
5442
|
+
}
|
|
5443
|
+
|
|
5435
5444
|
.bc-flyout-container {
|
|
5436
5445
|
z-index: var(--z-index-popover);
|
|
5437
5446
|
}
|
|
@@ -6245,20 +6254,22 @@ a:focus-visible {
|
|
|
6245
6254
|
}
|
|
6246
6255
|
}
|
|
6247
6256
|
|
|
6248
|
-
/*
|
|
6249
|
-
.bc-
|
|
6257
|
+
/* Field Component */
|
|
6258
|
+
.bc-field {
|
|
6250
6259
|
display: flex;
|
|
6251
6260
|
flex-direction: column;
|
|
6261
|
+
min-width: 0; /* Prevent overflow in grid/flex containers */
|
|
6252
6262
|
}
|
|
6253
6263
|
|
|
6254
|
-
.bc-
|
|
6264
|
+
.bc-field--full-width {
|
|
6255
6265
|
width: 100%;
|
|
6256
6266
|
}
|
|
6257
6267
|
|
|
6258
6268
|
/* Horizontal layout variants - use grid for proper error positioning */
|
|
6259
|
-
.bc-
|
|
6260
|
-
.bc-
|
|
6261
|
-
.bc-
|
|
6269
|
+
.bc-field--horizontal,
|
|
6270
|
+
.bc-field--horizontal-label-right,
|
|
6271
|
+
.bc-field--horizontal-fixed,
|
|
6272
|
+
.bc-field--horizontal-end {
|
|
6262
6273
|
display: grid;
|
|
6263
6274
|
grid-template-columns: auto 1fr;
|
|
6264
6275
|
align-items: center;
|
|
@@ -6266,25 +6277,39 @@ a:focus-visible {
|
|
|
6266
6277
|
}
|
|
6267
6278
|
|
|
6268
6279
|
/* Horizontal with label on right */
|
|
6269
|
-
.bc-
|
|
6280
|
+
.bc-field--horizontal-label-right {
|
|
6270
6281
|
grid-template-columns: 1fr auto;
|
|
6271
6282
|
}
|
|
6272
6283
|
|
|
6273
|
-
.bc-
|
|
6284
|
+
.bc-field--horizontal-label-right .bc-field__header {
|
|
6274
6285
|
order: 2;
|
|
6275
6286
|
}
|
|
6276
6287
|
|
|
6277
|
-
.bc-
|
|
6288
|
+
.bc-field--horizontal-label-right .bc-field__content {
|
|
6278
6289
|
order: 1;
|
|
6279
6290
|
}
|
|
6280
6291
|
|
|
6281
6292
|
/* Horizontal with fixed-width label */
|
|
6282
|
-
.bc-
|
|
6283
|
-
grid-template-columns: var(--
|
|
6293
|
+
.bc-field--horizontal-fixed {
|
|
6294
|
+
grid-template-columns: var(--field-label-width, 7.5rem) 1fr;
|
|
6295
|
+
}
|
|
6296
|
+
|
|
6297
|
+
/* Horizontal with fixed-width label, right-aligned (flush with input) */
|
|
6298
|
+
.bc-field--horizontal-end {
|
|
6299
|
+
grid-template-columns: var(--field-label-width, 7.5rem) 1fr;
|
|
6300
|
+
}
|
|
6301
|
+
|
|
6302
|
+
.bc-field--horizontal-end .bc-field__header {
|
|
6303
|
+
justify-content: flex-end;
|
|
6304
|
+
}
|
|
6305
|
+
|
|
6306
|
+
.bc-field--horizontal-end .bc-field__label-section {
|
|
6307
|
+
text-align: right;
|
|
6308
|
+
align-items: flex-end;
|
|
6284
6309
|
}
|
|
6285
6310
|
|
|
6286
6311
|
/* Label header container */
|
|
6287
|
-
.bc-
|
|
6312
|
+
.bc-field__header {
|
|
6288
6313
|
display: flex;
|
|
6289
6314
|
align-items: center;
|
|
6290
6315
|
justify-content: space-between;
|
|
@@ -6292,95 +6317,278 @@ a:focus-visible {
|
|
|
6292
6317
|
}
|
|
6293
6318
|
|
|
6294
6319
|
/* Label section container */
|
|
6295
|
-
.bc-
|
|
6320
|
+
.bc-field__label-section {
|
|
6296
6321
|
display: flex;
|
|
6297
6322
|
flex-direction: column;
|
|
6298
6323
|
}
|
|
6299
6324
|
|
|
6300
6325
|
/* Label container */
|
|
6301
|
-
.bc-
|
|
6326
|
+
.bc-field__label {
|
|
6302
6327
|
display: flex;
|
|
6303
6328
|
align-items: center;
|
|
6304
6329
|
gap: var(--spacing-stack-2xs, var(--spacing-xs));
|
|
6305
6330
|
}
|
|
6306
6331
|
|
|
6307
6332
|
/* Label text styles */
|
|
6308
|
-
.bc-
|
|
6333
|
+
.bc-field__label-text {
|
|
6309
6334
|
text-wrap: nowrap;
|
|
6310
6335
|
font-size: var(--font-size-sm);
|
|
6311
6336
|
line-height: var(--line-height-normal);
|
|
6312
6337
|
}
|
|
6313
6338
|
|
|
6314
6339
|
/* Label text states */
|
|
6315
|
-
.bc-
|
|
6340
|
+
.bc-field__label-text--default {
|
|
6316
6341
|
color: var(--color-gray-600);
|
|
6317
6342
|
font-weight: var(--font-weight-semibold);
|
|
6318
6343
|
}
|
|
6319
6344
|
|
|
6320
|
-
.bc-
|
|
6345
|
+
.bc-field__label-text--disabled {
|
|
6321
6346
|
color: var(--color-gray-500);
|
|
6322
6347
|
font-weight: var(--font-weight-normal);
|
|
6323
6348
|
}
|
|
6324
6349
|
|
|
6325
|
-
.bc-
|
|
6350
|
+
.bc-field__label-text--error {
|
|
6326
6351
|
color: var(--color-danger-600);
|
|
6327
6352
|
font-weight: var(--font-weight-normal);
|
|
6328
6353
|
}
|
|
6329
6354
|
|
|
6330
6355
|
/* Required symbol */
|
|
6331
|
-
.bc-
|
|
6356
|
+
.bc-field__required {
|
|
6332
6357
|
font-size: var(--font-size-xs);
|
|
6333
6358
|
color: var(--color-danger-600);
|
|
6334
6359
|
vertical-align: top;
|
|
6335
6360
|
}
|
|
6336
6361
|
|
|
6337
6362
|
/* Error messages in horizontal mode span full width on their own row */
|
|
6338
|
-
.bc-
|
|
6339
|
-
.bc-
|
|
6340
|
-
.bc-
|
|
6363
|
+
.bc-field--horizontal .bc-field__error,
|
|
6364
|
+
.bc-field--horizontal-label-right .bc-field__error,
|
|
6365
|
+
.bc-field--horizontal-fixed .bc-field__error,
|
|
6366
|
+
.bc-field--horizontal-end .bc-field__error {
|
|
6341
6367
|
grid-column: 1 / -1;
|
|
6342
6368
|
}
|
|
6343
6369
|
|
|
6344
|
-
.bc-
|
|
6370
|
+
.bc-field--horizontal-label-right .bc-field__error {
|
|
6345
6371
|
order: 3;
|
|
6346
6372
|
}
|
|
6347
6373
|
|
|
6348
6374
|
/* Description text */
|
|
6349
|
-
.bc-
|
|
6375
|
+
.bc-field__description {
|
|
6350
6376
|
font-size: var(--font-size-sm);
|
|
6351
6377
|
color: var(--color-gray-600);
|
|
6352
6378
|
line-height: var(--line-height-normal);
|
|
6353
6379
|
}
|
|
6354
6380
|
|
|
6355
6381
|
/* Description under label in horizontal mode */
|
|
6356
|
-
.bc-
|
|
6382
|
+
.bc-field__description--under-label {
|
|
6357
6383
|
font-size: var(--font-size-xs);
|
|
6358
6384
|
}
|
|
6359
6385
|
|
|
6360
6386
|
/* Error message */
|
|
6361
|
-
.bc-
|
|
6387
|
+
.bc-field__error {
|
|
6362
6388
|
font-size: var(--font-size-sm);
|
|
6363
6389
|
color: var(--color-danger-500);
|
|
6364
6390
|
line-height: var(--line-height-normal);
|
|
6365
6391
|
}
|
|
6366
6392
|
|
|
6393
|
+
/* Compact mode */
|
|
6394
|
+
.bc-field--compact {
|
|
6395
|
+
gap: var(--spacing-xs, var(--spacing-sm));
|
|
6396
|
+
}
|
|
6397
|
+
|
|
6398
|
+
.bc-field--compact .bc-field__label-text {
|
|
6399
|
+
font-size: var(--font-size-xs);
|
|
6400
|
+
}
|
|
6401
|
+
|
|
6402
|
+
.bc-field--compact .bc-field__description {
|
|
6403
|
+
font-size: var(--font-size-xs);
|
|
6404
|
+
}
|
|
6405
|
+
|
|
6406
|
+
.bc-field--compact .bc-field__error {
|
|
6407
|
+
font-size: var(--font-size-xs);
|
|
6408
|
+
}
|
|
6409
|
+
|
|
6410
|
+
/* Responsive layout — matches horizontal-fixed when wide, flips to vertical
|
|
6411
|
+
when the ancestor container (Fieldset) narrows below 480px. */
|
|
6412
|
+
.bc-field--responsive {
|
|
6413
|
+
display: grid;
|
|
6414
|
+
grid-template-columns: var(--field-label-width, 7.5rem) 1fr;
|
|
6415
|
+
align-items: center;
|
|
6416
|
+
gap: var(--spacing-sm, var(--spacing-lg));
|
|
6417
|
+
}
|
|
6418
|
+
|
|
6419
|
+
.bc-field--responsive .bc-field__error {
|
|
6420
|
+
grid-column: 1 / -1;
|
|
6421
|
+
}
|
|
6422
|
+
|
|
6423
|
+
@container (max-width: 480px) {
|
|
6424
|
+
.bc-field--responsive {
|
|
6425
|
+
display: flex;
|
|
6426
|
+
flex-direction: column;
|
|
6427
|
+
align-items: stretch;
|
|
6428
|
+
}
|
|
6429
|
+
|
|
6430
|
+
.bc-field--responsive .bc-field__error {
|
|
6431
|
+
grid-column: auto;
|
|
6432
|
+
}
|
|
6433
|
+
}
|
|
6434
|
+
|
|
6367
6435
|
/* Dark mode styles */
|
|
6368
|
-
.dark .bc-
|
|
6436
|
+
.dark .bc-field__label-text--default {
|
|
6369
6437
|
color: var(--text-normal);
|
|
6370
6438
|
}
|
|
6371
6439
|
|
|
6372
|
-
.dark .bc-
|
|
6440
|
+
.dark .bc-field__label-text--error {
|
|
6373
6441
|
color: var(--color-danger-300);
|
|
6374
6442
|
}
|
|
6375
6443
|
|
|
6376
|
-
.dark .bc-
|
|
6444
|
+
.dark .bc-field__required {
|
|
6377
6445
|
color: var(--color-danger-400);
|
|
6378
6446
|
}
|
|
6379
6447
|
|
|
6380
|
-
.dark .bc-
|
|
6448
|
+
.dark .bc-field__error {
|
|
6381
6449
|
color: var(--color-danger-400);
|
|
6382
6450
|
}
|
|
6383
6451
|
|
|
6452
|
+
/* Fieldset Component */
|
|
6453
|
+
.bc-fieldset {
|
|
6454
|
+
container-type: inline-size;
|
|
6455
|
+
border: none;
|
|
6456
|
+
margin: 0;
|
|
6457
|
+
padding: 0;
|
|
6458
|
+
min-width: 0; /* Fix fieldset overflow behaviour */
|
|
6459
|
+
width: 100%;
|
|
6460
|
+
}
|
|
6461
|
+
|
|
6462
|
+
/* Bordered variant */
|
|
6463
|
+
.bc-fieldset--bordered {
|
|
6464
|
+
border: var(--border-width-default) solid var(--border-default);
|
|
6465
|
+
border-radius: var(--radius-md);
|
|
6466
|
+
padding: var(--spacing-md);
|
|
6467
|
+
}
|
|
6468
|
+
|
|
6469
|
+
.bc-fieldset--bordered > .bc-fieldset__legend {
|
|
6470
|
+
padding: 0 var(--spacing-sm);
|
|
6471
|
+
margin-left: calc(-1 * var(--spacing-sm));
|
|
6472
|
+
font-weight: var(--font-weight-semibold);
|
|
6473
|
+
font-size: var(--font-size-md);
|
|
6474
|
+
color: var(--text-normal);
|
|
6475
|
+
}
|
|
6476
|
+
|
|
6477
|
+
/* Plain variant */
|
|
6478
|
+
.bc-fieldset--plain > .bc-fieldset__legend {
|
|
6479
|
+
width: 100%;
|
|
6480
|
+
padding-bottom: var(--spacing-sm);
|
|
6481
|
+
border-bottom: var(--border-width-default) solid var(--border-divider);
|
|
6482
|
+
margin-bottom: var(--spacing-md);
|
|
6483
|
+
font-weight: var(--font-weight-semibold);
|
|
6484
|
+
font-size: var(--font-size-md);
|
|
6485
|
+
color: var(--text-normal);
|
|
6486
|
+
}
|
|
6487
|
+
|
|
6488
|
+
/* Card variant */
|
|
6489
|
+
.bc-fieldset--card {
|
|
6490
|
+
background-color: var(--bg-surface);
|
|
6491
|
+
border-radius: var(--radius-lg);
|
|
6492
|
+
box-shadow: var(--shadow-sm);
|
|
6493
|
+
padding: var(--spacing-lg);
|
|
6494
|
+
}
|
|
6495
|
+
|
|
6496
|
+
.bc-fieldset--card > .bc-fieldset__legend {
|
|
6497
|
+
font-weight: var(--font-weight-bold);
|
|
6498
|
+
font-size: var(--font-size-lg);
|
|
6499
|
+
color: var(--text-normal);
|
|
6500
|
+
padding: 0;
|
|
6501
|
+
margin-bottom: var(--spacing-sm);
|
|
6502
|
+
}
|
|
6503
|
+
|
|
6504
|
+
/* Legend */
|
|
6505
|
+
.bc-fieldset__legend {
|
|
6506
|
+
display: flex;
|
|
6507
|
+
align-items: center;
|
|
6508
|
+
}
|
|
6509
|
+
|
|
6510
|
+
.bc-fieldset__legend-toggle {
|
|
6511
|
+
all: unset;
|
|
6512
|
+
display: flex;
|
|
6513
|
+
align-items: center;
|
|
6514
|
+
gap: var(--spacing-sm);
|
|
6515
|
+
cursor: pointer;
|
|
6516
|
+
width: 100%;
|
|
6517
|
+
}
|
|
6518
|
+
|
|
6519
|
+
.bc-fieldset__legend-toggle:focus-visible {
|
|
6520
|
+
outline: var(--outline-width-focus) solid var(--interactive-focus);
|
|
6521
|
+
outline-offset: 2px;
|
|
6522
|
+
border-radius: var(--radius-sm);
|
|
6523
|
+
}
|
|
6524
|
+
|
|
6525
|
+
.bc-fieldset__collapse-icon {
|
|
6526
|
+
transition: transform var(--motion-duration-fast)
|
|
6527
|
+
var(--motion-easing-standard);
|
|
6528
|
+
}
|
|
6529
|
+
|
|
6530
|
+
.bc-fieldset__collapse-icon--collapsed {
|
|
6531
|
+
transform: rotate(-90deg);
|
|
6532
|
+
}
|
|
6533
|
+
|
|
6534
|
+
/* Description */
|
|
6535
|
+
.bc-fieldset__description {
|
|
6536
|
+
font-size: var(--font-size-sm);
|
|
6537
|
+
color: var(--text-muted);
|
|
6538
|
+
margin-bottom: var(--spacing-md);
|
|
6539
|
+
}
|
|
6540
|
+
|
|
6541
|
+
/* Content grid — defaults to single column. Multi-column is set via
|
|
6542
|
+
inline style by the component when columns > 1. */
|
|
6543
|
+
.bc-fieldset__content {
|
|
6544
|
+
display: grid;
|
|
6545
|
+
grid-template-columns: 1fr;
|
|
6546
|
+
gap: var(--fieldset-gap, var(--spacing-md));
|
|
6547
|
+
}
|
|
6548
|
+
|
|
6549
|
+
/* Disabled state */
|
|
6550
|
+
.bc-fieldset:disabled {
|
|
6551
|
+
opacity: 0.6;
|
|
6552
|
+
}
|
|
6553
|
+
|
|
6554
|
+
.bc-fieldset:disabled .bc-fieldset__legend-toggle {
|
|
6555
|
+
cursor: default;
|
|
6556
|
+
}
|
|
6557
|
+
|
|
6558
|
+
/* Dark mode */
|
|
6559
|
+
.dark .bc-fieldset--bordered {
|
|
6560
|
+
border-color: var(--border-default);
|
|
6561
|
+
}
|
|
6562
|
+
|
|
6563
|
+
.dark .bc-fieldset--plain > .bc-fieldset__legend {
|
|
6564
|
+
border-bottom-color: var(--border-default);
|
|
6565
|
+
}
|
|
6566
|
+
|
|
6567
|
+
.dark .bc-fieldset--card {
|
|
6568
|
+
background-color: var(--bg-elevated);
|
|
6569
|
+
box-shadow: var(--shadow-md);
|
|
6570
|
+
}
|
|
6571
|
+
|
|
6572
|
+
.dark .bc-fieldset__description {
|
|
6573
|
+
color: var(--text-muted);
|
|
6574
|
+
}
|
|
6575
|
+
|
|
6576
|
+
/* Accessibility */
|
|
6577
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6578
|
+
.bc-fieldset__collapse-icon {
|
|
6579
|
+
transition: none;
|
|
6580
|
+
}
|
|
6581
|
+
}
|
|
6582
|
+
|
|
6583
|
+
@media (prefers-contrast: high) {
|
|
6584
|
+
.bc-fieldset--bordered {
|
|
6585
|
+
border-width: var(--border-width-medium);
|
|
6586
|
+
}
|
|
6587
|
+
.bc-fieldset--card {
|
|
6588
|
+
border: var(--border-width-medium) solid currentColor;
|
|
6589
|
+
}
|
|
6590
|
+
}
|
|
6591
|
+
|
|
6384
6592
|
.bc-json-schema-object {
|
|
6385
6593
|
border-left: var(--spacing-md) solid var(--color-base-200);
|
|
6386
6594
|
padding-inline-start: var(--spacing-md);
|
|
@@ -12412,6 +12620,11 @@ span.bc-sidebar-link {
|
|
|
12412
12620
|
background-color: var(--table-stripe-bg);
|
|
12413
12621
|
}
|
|
12414
12622
|
|
|
12623
|
+
/* Detail rows inherit the parent row's background instead of zebra striping */
|
|
12624
|
+
.bc-table--with-striped-rows > tbody > tr.bc-data-table__detail-row {
|
|
12625
|
+
background-color: inherit;
|
|
12626
|
+
}
|
|
12627
|
+
|
|
12415
12628
|
/* Hoverable striped rows - darker stripe on hover */
|
|
12416
12629
|
.bc-table--hoverable.bc-table--with-striped-rows
|
|
12417
12630
|
> tbody
|
|
@@ -16084,6 +16297,45 @@ span.bc-sidebar-link {
|
|
|
16084
16297
|
color: var(--text-muted);
|
|
16085
16298
|
}
|
|
16086
16299
|
|
|
16300
|
+
/* Markers container */
|
|
16301
|
+
.bc-range-slider__markers {
|
|
16302
|
+
position: absolute;
|
|
16303
|
+
top: 0;
|
|
16304
|
+
left: 0;
|
|
16305
|
+
width: 100%;
|
|
16306
|
+
height: 100%;
|
|
16307
|
+
pointer-events: none;
|
|
16308
|
+
z-index: 1;
|
|
16309
|
+
}
|
|
16310
|
+
|
|
16311
|
+
/* Individual marker dot */
|
|
16312
|
+
.bc-range-slider__marker {
|
|
16313
|
+
position: absolute;
|
|
16314
|
+
top: 50%;
|
|
16315
|
+
transform: translate(-50%, -50%);
|
|
16316
|
+
display: flex;
|
|
16317
|
+
flex-direction: column;
|
|
16318
|
+
align-items: center;
|
|
16319
|
+
}
|
|
16320
|
+
|
|
16321
|
+
.bc-range-slider__marker::before {
|
|
16322
|
+
content: '';
|
|
16323
|
+
display: block;
|
|
16324
|
+
width: var(--spacing-sm);
|
|
16325
|
+
height: var(--spacing-sm);
|
|
16326
|
+
background-color: var(--color-white);
|
|
16327
|
+
border-radius: var(--radius-full);
|
|
16328
|
+
}
|
|
16329
|
+
|
|
16330
|
+
/* Marker label */
|
|
16331
|
+
.bc-range-slider__marker-label {
|
|
16332
|
+
position: absolute;
|
|
16333
|
+
top: calc(100% + var(--spacing-sm));
|
|
16334
|
+
white-space: nowrap;
|
|
16335
|
+
color: var(--text-muted);
|
|
16336
|
+
font-size: var(--font-size-xs);
|
|
16337
|
+
}
|
|
16338
|
+
|
|
16087
16339
|
/* ── Size variants ── */
|
|
16088
16340
|
|
|
16089
16341
|
/* xs */
|
|
@@ -16091,7 +16343,7 @@ span.bc-sidebar-link {
|
|
|
16091
16343
|
padding: var(--spacing-lg) var(--spacing-smh) var(--spacing-md);
|
|
16092
16344
|
}
|
|
16093
16345
|
.bc-range-slider--size-xs .bc-range-slider__track {
|
|
16094
|
-
height: var(--spacing-
|
|
16346
|
+
height: var(--spacing-smh);
|
|
16095
16347
|
}
|
|
16096
16348
|
.bc-range-slider--size-xs .bc-range-slider__thumb {
|
|
16097
16349
|
width: calc(var(--spacing-base) * 2.5);
|
|
@@ -16117,7 +16369,7 @@ span.bc-sidebar-link {
|
|
|
16117
16369
|
padding: var(--spacing-xl) var(--spacing-md) var(--spacing-lg);
|
|
16118
16370
|
}
|
|
16119
16371
|
.bc-range-slider--size-sm .bc-range-slider__track {
|
|
16120
|
-
height:
|
|
16372
|
+
height: var(--spacing-sm);
|
|
16121
16373
|
}
|
|
16122
16374
|
.bc-range-slider--size-sm .bc-range-slider__thumb {
|
|
16123
16375
|
width: calc(var(--spacing-base) * 3.5);
|
|
@@ -16143,7 +16395,7 @@ span.bc-sidebar-link {
|
|
|
16143
16395
|
padding: var(--spacing-2xl) calc(var(--spacing-base) * 2.5) var(--spacing-xl);
|
|
16144
16396
|
}
|
|
16145
16397
|
.bc-range-slider--size-md .bc-range-slider__track {
|
|
16146
|
-
height: var(--spacing-
|
|
16398
|
+
height: var(--spacing-smh);
|
|
16147
16399
|
}
|
|
16148
16400
|
.bc-range-slider--size-md .bc-range-slider__thumb {
|
|
16149
16401
|
width: calc(var(--spacing-base) * 4.5);
|
|
@@ -16169,7 +16421,7 @@ span.bc-sidebar-link {
|
|
|
16169
16421
|
padding: var(--spacing-3xl) var(--spacing-mdh) var(--spacing-2xl);
|
|
16170
16422
|
}
|
|
16171
16423
|
.bc-range-slider--size-lg .bc-range-slider__track {
|
|
16172
|
-
height: var(--spacing-
|
|
16424
|
+
height: var(--spacing-md);
|
|
16173
16425
|
}
|
|
16174
16426
|
.bc-range-slider--size-lg .bc-range-slider__thumb {
|
|
16175
16427
|
width: calc(var(--spacing-base) * 5.5);
|
|
@@ -16195,7 +16447,7 @@ span.bc-sidebar-link {
|
|
|
16195
16447
|
padding: var(--spacing-4xl) calc(var(--spacing-base) * 3.5) var(--spacing-3xl);
|
|
16196
16448
|
}
|
|
16197
16449
|
.bc-range-slider--size-xl .bc-range-slider__track {
|
|
16198
|
-
height: var(--spacing-
|
|
16450
|
+
height: var(--spacing-mdh);
|
|
16199
16451
|
}
|
|
16200
16452
|
.bc-range-slider--size-xl .bc-range-slider__thumb {
|
|
16201
16453
|
width: calc(var(--spacing-base) * 6.5);
|
|
@@ -16216,6 +16468,36 @@ span.bc-sidebar-link {
|
|
|
16216
16468
|
font-size: var(--font-size-md);
|
|
16217
16469
|
}
|
|
16218
16470
|
|
|
16471
|
+
/* Marker size overrides per size */
|
|
16472
|
+
.bc-range-slider--size-xs .bc-range-slider__marker::before {
|
|
16473
|
+
width: var(--spacing-xs);
|
|
16474
|
+
height: var(--spacing-xs);
|
|
16475
|
+
}
|
|
16476
|
+
.bc-range-slider--size-xs .bc-range-slider__marker-label {
|
|
16477
|
+
font-size: var(--font-size-2xs);
|
|
16478
|
+
}
|
|
16479
|
+
.bc-range-slider--size-sm .bc-range-slider__marker::before {
|
|
16480
|
+
width: var(--spacing-xs);
|
|
16481
|
+
height: var(--spacing-xs);
|
|
16482
|
+
}
|
|
16483
|
+
.bc-range-slider--size-sm .bc-range-slider__marker-label {
|
|
16484
|
+
font-size: var(--font-size-2xs);
|
|
16485
|
+
}
|
|
16486
|
+
.bc-range-slider--size-lg .bc-range-slider__marker::before {
|
|
16487
|
+
width: var(--spacing-smh);
|
|
16488
|
+
height: var(--spacing-smh);
|
|
16489
|
+
}
|
|
16490
|
+
.bc-range-slider--size-lg .bc-range-slider__marker-label {
|
|
16491
|
+
font-size: var(--font-size-sm);
|
|
16492
|
+
}
|
|
16493
|
+
.bc-range-slider--size-xl .bc-range-slider__marker::before {
|
|
16494
|
+
width: var(--spacing-md);
|
|
16495
|
+
height: var(--spacing-md);
|
|
16496
|
+
}
|
|
16497
|
+
.bc-range-slider--size-xl .bc-range-slider__marker-label {
|
|
16498
|
+
font-size: var(--font-size-md);
|
|
16499
|
+
}
|
|
16500
|
+
|
|
16219
16501
|
/* ── Vertical orientation ── */
|
|
16220
16502
|
|
|
16221
16503
|
.bc-range-slider--vertical {
|
|
@@ -16288,6 +16570,19 @@ span.bc-sidebar-link {
|
|
|
16288
16570
|
left: calc(100% + var(--spacing-sm));
|
|
16289
16571
|
}
|
|
16290
16572
|
|
|
16573
|
+
/* Markers: vertical positioning */
|
|
16574
|
+
.bc-range-slider--vertical .bc-range-slider__marker {
|
|
16575
|
+
left: 50%;
|
|
16576
|
+
top: auto;
|
|
16577
|
+
transform: translate(-50%, 50%);
|
|
16578
|
+
flex-direction: row;
|
|
16579
|
+
}
|
|
16580
|
+
|
|
16581
|
+
.bc-range-slider--vertical .bc-range-slider__marker-label {
|
|
16582
|
+
top: auto;
|
|
16583
|
+
left: calc(100% + var(--spacing-sm));
|
|
16584
|
+
}
|
|
16585
|
+
|
|
16291
16586
|
/* Vertical size variants — swap track width/height, adjust padding */
|
|
16292
16587
|
|
|
16293
16588
|
/* xs vertical */
|
|
@@ -16353,6 +16648,14 @@ span.bc-sidebar-link {
|
|
|
16353
16648
|
background-color: var(--rs-color-dark);
|
|
16354
16649
|
}
|
|
16355
16650
|
|
|
16651
|
+
.dark .bc-range-slider__marker::before {
|
|
16652
|
+
background-color: var(--color-gray-400);
|
|
16653
|
+
}
|
|
16654
|
+
|
|
16655
|
+
.dark .bc-range-slider__marker-label {
|
|
16656
|
+
color: var(--text-muted);
|
|
16657
|
+
}
|
|
16658
|
+
|
|
16356
16659
|
.dark .bc-range-slider__tick::before {
|
|
16357
16660
|
background-color: var(--color-gray-500);
|
|
16358
16661
|
}
|
|
@@ -17694,6 +17997,59 @@ th.bc-data-table__header--drag-over {
|
|
|
17694
17997
|
background-color: var(--interactive-hover);
|
|
17695
17998
|
}
|
|
17696
17999
|
|
|
18000
|
+
/* Row Details: Toggle column */
|
|
18001
|
+
.bc-data-table__toggle-header {
|
|
18002
|
+
width: 2.5rem;
|
|
18003
|
+
min-width: 2.5rem;
|
|
18004
|
+
max-width: 2.5rem;
|
|
18005
|
+
padding: 0 !important;
|
|
18006
|
+
}
|
|
18007
|
+
|
|
18008
|
+
.bc-table > tbody > tr > td.bc-data-table__toggle-cell {
|
|
18009
|
+
width: 2.5rem;
|
|
18010
|
+
min-width: 2.5rem;
|
|
18011
|
+
max-width: 2.5rem;
|
|
18012
|
+
padding: 0 !important;
|
|
18013
|
+
text-align: center;
|
|
18014
|
+
vertical-align: middle;
|
|
18015
|
+
}
|
|
18016
|
+
|
|
18017
|
+
.bc-data-table__toggle-cell > button {
|
|
18018
|
+
display: inline-flex;
|
|
18019
|
+
align-items: center;
|
|
18020
|
+
justify-content: center;
|
|
18021
|
+
width: 1.75rem;
|
|
18022
|
+
height: 1.75rem;
|
|
18023
|
+
padding: 0;
|
|
18024
|
+
border: none;
|
|
18025
|
+
background: none;
|
|
18026
|
+
cursor: pointer;
|
|
18027
|
+
border-radius: var(--radius-sm);
|
|
18028
|
+
color: var(--text-muted);
|
|
18029
|
+
transition:
|
|
18030
|
+
color var(--motion-transition-fast) var(--motion-easing-standard),
|
|
18031
|
+
background-color var(--motion-transition-fast) var(--motion-easing-standard);
|
|
18032
|
+
}
|
|
18033
|
+
|
|
18034
|
+
.bc-data-table__toggle-cell > button:hover {
|
|
18035
|
+
background-color: var(--interactive-hover);
|
|
18036
|
+
color: var(--text-normal);
|
|
18037
|
+
}
|
|
18038
|
+
|
|
18039
|
+
/* Row Details: Detail row */
|
|
18040
|
+
.bc-data-table__detail-row > td {
|
|
18041
|
+
padding: 0 !important;
|
|
18042
|
+
border-top: none !important;
|
|
18043
|
+
}
|
|
18044
|
+
|
|
18045
|
+
.bc-data-table__detail-cell {
|
|
18046
|
+
padding: 0 !important;
|
|
18047
|
+
}
|
|
18048
|
+
|
|
18049
|
+
.bc-data-table__detail-cell > div {
|
|
18050
|
+
padding: var(--spacing-md) var(--spacing-lg);
|
|
18051
|
+
}
|
|
18052
|
+
|
|
17697
18053
|
/* Reduced motion */
|
|
17698
18054
|
@media (prefers-reduced-motion: reduce) {
|
|
17699
18055
|
.bc-sortable-header,
|
|
@@ -17704,7 +18060,8 @@ th.bc-data-table__header--drag-over {
|
|
|
17704
18060
|
.bc-data-toolbar__action,
|
|
17705
18061
|
.bc-data-toolbar__reset,
|
|
17706
18062
|
.bc-data-table__column-toggle-btn,
|
|
17707
|
-
.bc-data-table__group-toggle
|
|
18063
|
+
.bc-data-table__group-toggle,
|
|
18064
|
+
.bc-data-table__toggle-cell > button {
|
|
17708
18065
|
transition: none;
|
|
17709
18066
|
}
|
|
17710
18067
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@tempots/dom"),C=require("../auth-divider-itm5-j5G.cjs"),A=require("../translations-qefRsdGi.cjs"),w=require("../notice-Q0A1gIho.cjs"),y=require("../stack-dwLevGa2.cjs"),b=require("../input-container-BkPcNDaZ.cjs"),v=require("../text-input-D_IxFd0M.cjs");function g(a,t){return a.error?(t.onError?.({message:a.error.message,status:a.error.status}),a.error.message):null}function I(a,t,s){return async n=>{const l=await a.signIn.email({email:n.email,password:n.password,callbackURL:t.callbackURL}),o=g(l,t);return o||(await s(),null)}}function F(a,t,s){return async n=>{const l=await a.signUp.email({name:n.name,email:n.email,password:n.password,callbackURL:t.callbackURL}),o=g(l,t);return o||(await s(),null)}}function U(a,t){return async s=>{const n=await a.requestPasswordReset({email:s.email,redirectTo:t.callbackURL});return g(n,t)}}function $(a,t){return async s=>{const n=await a.signIn.social({provider:s,callbackURL:t.callbackURL,errorCallbackURL:t.errorCallbackURL});g(n,t)}}function L(a,t={}){const s=e.prop(null),n=e.prop(!0),l=e.computedOf(s)(h=>h?.user??null),o=e.computedOf(s)(h=>h!=null);let u;async function d(){try{const h=await a.getSession();h.error||!h.data?s.set(null):s.set({user:h.data.user,session:h.data.session})}catch{s.set(null)}finally{n.set(!1)}}t.onSessionChange&&s.on(t.onSessionChange),d(),t.refreshInterval&&t.refreshInterval>0&&(u=setInterval(d,t.refreshInterval));function p(){u!=null&&(clearInterval(u),u=void 0),s.dispose(),n.dispose(),l.dispose(),o.dispose()}return{session:s,isPending:n,user:l,isAuthenticated:o,refresh:d,dispose:p}}function P(a){return a.map(t=>({provider:t}))}function _(a,t={}){const s=L(a,{refreshInterval:t.refreshInterval,onSessionChange:t.onSessionChange}),n=()=>s.refresh(),l=I(a,t,n),o=F(a,t,n),u=U(a,t),d=$(a,t),p=t.socialProviders?P(t.socialProviders):[],h={onSignIn:l,passwordRules:t.passwordRules,showRememberMe:t.showRememberMe,labels:t.labels?{emailLabel:t.labels.emailLabel,passwordLabel:t.labels.passwordLabel,rememberMeLabel:t.labels.rememberMeLabel,signInButton:t.labels.signInButton,forgotPasswordLink:t.labels.forgotPasswordLink,noAccountLink:t.labels.noAccountLink}:void 0},i={onSignUp:o,passwordRules:t.passwordRules,showPasswordStrength:t.showPasswordStrength,showNameField:t.showNameField,showConfirmPassword:t.showConfirmPassword,showAcceptTermsAndConditions:t.showAcceptTermsAndConditions,termsAndConditions:t.termsAndConditions,labels:t.labels?{nameLabel:t.labels.nameLabel,emailLabel:t.labels.emailLabel,passwordLabel:t.labels.passwordLabel,confirmPasswordLabel:t.labels.confirmPasswordLabel,acceptTermsLabel:t.labels.acceptTermsLabel,signUpButton:t.labels.signUpButton,hasAccountLink:t.labels.hasAccountLink}:void 0},m={onResetPassword:u,labels:t.labels?{resetPasswordButton:t.labels.resetPasswordButton,resetPasswordDescription:t.labels.resetPasswordDescription,emailLabel:t.labels.emailLabel,backToSignInLink:t.labels.backToSignInLink}:void 0},c={onSignIn:l,onSignUp:o,onResetPassword:u,onSocialLogin:d,socialProviders:p.length>0?p:void 0,showSocialDivider:p.length>0,passwordRules:t.passwordRules,showRememberMe:t.showRememberMe,showPasswordStrength:t.showPasswordStrength,showNameField:t.showNameField,showConfirmPassword:t.showConfirmPassword,showAcceptTermsAndConditions:t.showAcceptTermsAndConditions,termsAndConditions:t.termsAndConditions,labels:t.labels};async function r(){await a.signOut(),await n()}function f(){s.dispose()}return{session:s.session,isPending:s.isPending,user:s.user,isAuthenticated:s.isAuthenticated,containerOptions:c,signInOptions:h,signUpOptions:i,resetOptions:m,socialProviders:p,signOut:r,refreshSession:n,dispose:f}}const R={mark:e.makeProviderMark("BetterAuth"),create:a=>{if(!a)throw new Error("BetterAuth provider requires a client option");const t=_(a.client,a);return{value:t,dispose:()=>t.dispose()}}};function E(a,t,...s){return C.AuthContainer({...a.containerOptions,...t},...s)}function O(a,t){return C.AuthModal(s=>t(n=>s({...a.containerOptions,...n})))}function M(a,t){return e.When(a.isAuthenticated,t)}function D(a,t){return e.Unless(a.isAuthenticated,t)}const T={twoFactorSetupDescription:"Enter your password to enable two-factor authentication.",twoFactorEnableButton:"Enable 2FA",twoFactorVerifyButton:"Verify",twoFactorScanDescription:"Scan the code below with your authenticator app, then enter the verification code.",twoFactorBackupCodesDescription:"Save these backup codes in a safe place. You can use them to sign in if you lose access to your authenticator.",twoFactorCodePlaceholder:"Enter 6-digit code",twoFactorBackupCodePlaceholder:"Enter backup code",twoFactorEnabled:"Two-factor authentication has been enabled.",twoFactorTotpDescription:"Enter the code from your authenticator app.",twoFactorOtpDescription:"Enter the one-time code sent to you.",twoFactorBackupDescription:"Enter one of your backup codes.",twoFactorSendOtpButton:"Send Code",twoFactorMethodLabel:a=>{switch(a){case"totp":return"Authenticator";case"otp":return"Email/SMS";case"backup":return"Backup Code";default:return a}},passwordPlaceholder:"Enter your password",magicLinkDescription:"Enter your email to receive a sign-in link.",magicLinkSendButton:"Send Magic Link",magicLinkSent:"A sign-in link has been sent to your email.",passkeySignInButton:"Sign in with Passkey",passkeyAddButton:"Add Passkey",passkeyDeleteButton:"Delete",passkeyRenameButton:"Rename",passkeySaveButton:"Save",passkeyCancelButton:"Cancel",passkeyNamePlaceholder:"Passkey name (optional)",passkeyUnnamed:"Unnamed passkey"},B=T,S="en",N=Object.assign({}),k=A.makeI18nProvider({defaultLocale:S,defaultMessages:B,localeLoader:async a=>{if(a===S)return B;const t=N[`./locales/${a}.ts`];return t?await t():B},providerName:"BetterAuthI18n"});function q({twoFactor:a,issuer:t,onComplete:s}){const n=e.prop(""),l=e.prop(null),o=e.prop([]),u=e.prop(""),d=e.prop(null),p=e.prop(!1),h=e.prop("password");async function i(c){c.preventDefault(),p.set(!0),d.set(null);const r=await a.enable({password:n.value,issuer:t});if(p.set(!1),r.error){d.set(r.error.message);return}r.data&&(l.set(r.data.totpURI),o.set(r.data.backupCodes),h.set("verify"))}async function m(c){c.preventDefault(),p.set(!0),d.set(null);const r=await a.verifyTotp({code:u.value});if(p.set(!1),r.error){d.set(r.error.message);return}h.set("complete"),s?.()}return e.Use(k,c=>e.html.div(e.attr.class("bc-two-factor"),e.Ensure(d,r=>w.Notice({variant:"danger",tone:"prominent",role:"alert"},e.html.div(r))),e.OneOfValue(h,{password:()=>e.html.form(e.attr.class("bc-two-factor__form"),e.on.submit(i),y.Stack(e.html.p(e.attr.class("bc-auth-form__description"),c.$.twoFactorSetupDescription),w.PasswordInput({value:n,onChange:r=>n.set(r),placeholder:c.$.passwordPlaceholder}),b.Button({type:"submit",variant:"filled",color:"primary",loading:p},e.attr.class("bc-auth-form__submit"),c.$.twoFactorEnableButton))),verify:()=>e.Fragment(e.Ensure(l,r=>e.html.div(e.attr.class("bc-two-factor__totp-uri"),e.html.p(c.$.twoFactorScanDescription),e.html.code(e.attr.class("bc-two-factor__code-display"),r))),e.NotEmpty(o,()=>e.html.div(e.attr.class("bc-two-factor__backup-codes"),e.html.p(c.$.twoFactorBackupCodesDescription),e.html.ul(e.ForEach(o,r=>e.html.li(r))))),e.html.form(e.attr.class("bc-two-factor__form"),e.on.submit(m),y.Stack(v.TextInput({value:u,onChange:r=>u.set(r),placeholder:c.$.twoFactorCodePlaceholder}),b.Button({type:"submit",variant:"filled",color:"primary",loading:p},e.attr.class("bc-auth-form__submit"),c.$.twoFactorVerifyButton)))),complete:()=>e.html.div(e.attr.class("bc-two-factor__complete"),w.Notice({variant:"success",tone:"prominent"},e.html.div(c.$.twoFactorEnabled)))})))}function x({twoFactor:a,methods:t=["totp","backup"],trustDevice:s,onVerified:n}){const l=e.prop(""),o=e.prop(null),u=e.prop(!1),d=e.prop(t[0]??"totp");async function p(i){i.preventDefault(),u.set(!0),o.set(null);const m=d.value;let c;if(m==="totp")c=await a.verifyTotp({code:l.value,trustDevice:s});else if(m==="otp"&&a.verifyOtp)c=await a.verifyOtp({code:l.value,trustDevice:s});else if(m==="backup")c=await a.verifyBackupCode({code:l.value});else{o.set("Unsupported verification method"),u.set(!1);return}if(u.set(!1),c.error){o.set(c.error.message);return}n?.()}async function h(){if(!a.sendOtp)return;u.set(!0),o.set(null);const i=await a.sendOtp({trustDevice:s});u.set(!1),i.error&&o.set(i.error.message)}return e.Use(k,i=>{const m=e.computedOf(d,i)((r,f)=>r==="totp"?f.twoFactorTotpDescription:r==="otp"?f.twoFactorOtpDescription:f.twoFactorBackupDescription),c=e.computedOf(d,i)((r,f)=>r==="backup"?f.twoFactorBackupCodePlaceholder:f.twoFactorCodePlaceholder);return e.html.div(e.attr.class("bc-two-factor"),e.Ensure(o,r=>w.Notice({variant:"danger",tone:"prominent",role:"alert"},e.html.div(r))),e.When(t.length>1,()=>e.html.div(e.attr.class("bc-two-factor__methods"),...t.map(r=>e.html.button(e.attr.type("button"),e.attr.class("bc-two-factor__method-button"),e.attr.class(d.map(f=>f===r?"bc-two-factor__method-button--active":"")),e.on.click(()=>{d.set(r),l.set(""),o.set(null)}),i.$.twoFactorMethodLabel.map(f=>f(r)))))),e.html.form(e.attr.class("bc-two-factor__form"),e.on.submit(p),y.Stack(e.html.p(e.attr.class("bc-auth-form__description"),m),e.When(d.map(r=>r==="otp"&&a.sendOtp!=null),()=>b.Button({type:"button",variant:"outline",color:"primary",onClick:h,loading:u},i.$.twoFactorSendOtpButton)),v.TextInput({value:l,onChange:r=>l.set(r),placeholder:c}),b.Button({type:"submit",variant:"filled",color:"primary",loading:u},e.attr.class("bc-auth-form__submit"),i.$.twoFactorVerifyButton))))})}function V({client:a,callbackURL:t}){const s=e.prop(""),n=e.prop(null),l=e.prop(!1),o=e.prop(!1);async function u(d){if(d.preventDefault(),!a.signIn.magicLink){n.set("Magic link sign-in is not configured");return}l.set(!0),n.set(null);const p=await a.signIn.magicLink({email:s.value,callbackURL:t});if(l.set(!1),p.error){n.set(p.error.message);return}o.set(!0)}return e.Use(k,d=>e.html.div(e.attr.class("bc-auth-form"),e.Ensure(n,p=>w.Notice({variant:"danger",tone:"prominent",role:"alert"},e.html.div(p))),e.Unless(o,()=>e.html.form(e.attr.class("bc-auth-form__form"),e.on.submit(u),y.Stack(e.attr.class("bc-auth-form__fields"),e.html.p(e.attr.class("bc-auth-form__description"),d.$.magicLinkDescription),w.EmailInput({value:s,onChange:p=>s.set(p)}),b.Button({type:"submit",variant:"filled",color:"primary",loading:l},e.attr.class("bc-auth-form__submit"),d.$.magicLinkSendButton)))),e.When(o,()=>w.Notice({variant:"success",tone:"prominent"},e.html.div(d.$.magicLinkSent)))))}function W({client:a,autoFill:t,onSuccess:s,onError:n}){const l=e.prop(!1);async function o(){if(!a.signIn.passkey)return;l.set(!0);const u=await a.signIn.passkey({autoFill:t});if(l.set(!1),u.error){n?.({message:u.error.message,status:u.error.status});return}s?.()}return e.Use(k,u=>b.Button({type:"button",variant:"outline",color:"primary",onClick:o,loading:l},e.attr.class("bc-passkey-signin"),u.$.passkeySignInButton))}function z({passkey:a}){const t=e.prop([]),s=e.prop(null),n=e.prop(!1),l=e.prop("");async function o(i,m){n.set(!0),s.set(null);const c=await i();if(n.set(!1),c.error){s.set(c.error.message);return}await m?.(c.data)}async function u(){await o(()=>a.listUserPasskeys(),i=>t.set(i??[]))}async function d(){const i=l.value||void 0;await o(()=>a.addPasskey({name:i}),async()=>{l.set(""),await u()})}async function p(i){await o(()=>a.deletePasskey({id:i}),()=>u())}async function h(i,m){await o(()=>a.updatePasskey({id:i,name:m}),()=>u())}return u(),e.Use(k,i=>e.html.div(e.attr.class("bc-passkey-management"),e.Ensure(s,m=>w.Notice({variant:"danger",tone:"prominent",role:"alert"},e.html.div(m))),e.html.div(e.attr.class("bc-passkey-list"),e.ForEach(t,m=>{const c=e.prop(!1),r=e.prop(m.$.name?.value??"");return e.html.div(e.attr.class("bc-passkey-item"),e.Unless(c,()=>e.html.div(e.attr.class("bc-passkey-item__info"),e.html.span(e.attr.class("bc-passkey-item__name"),m.$.name?.map(f=>f??i.$.passkeyUnnamed.value)??i.$.passkeyUnnamed),e.html.span(e.attr.class("bc-passkey-item__date"),m.$.createdAt))),e.When(c,()=>e.html.div(e.attr.class("bc-passkey-item__edit"),v.TextInput({value:r,onChange:f=>r.set(f)}))),e.html.div(e.attr.class("bc-passkey-item__actions"),e.Unless(c,()=>e.html.div(b.Button({type:"button",variant:"text",size:"sm",onClick:()=>{r.set(m.$.name?.value??""),c.set(!0)}},i.$.passkeyRenameButton),b.Button({type:"button",variant:"text",size:"sm",color:"danger",onClick:()=>p(m.$.id.value)},i.$.passkeyDeleteButton))),e.When(c,()=>e.html.div(b.Button({type:"button",variant:"text",size:"sm",onClick:async()=>{await h(m.$.id.value,r.value),c.set(!1)}},i.$.passkeySaveButton),b.Button({type:"button",variant:"text",size:"sm",onClick:()=>c.set(!1)},i.$.passkeyCancelButton)))))})),e.html.div(e.attr.class("bc-passkey-add"),y.Stack(v.TextInput({value:l,onChange:m=>l.set(m),placeholder:i.$.passkeyNamePlaceholder}),b.Button({type:"button",variant:"filled",color:"primary",onClick:d,loading:n},i.$.passkeyAddButton)))))}exports.Authenticated=M;exports.BetterAuth=R;exports.BetterAuthContainer=E;exports.BetterAuthI18n=k;exports.BetterAuthModal=O;exports.MagicLinkForm=V;exports.PasskeyManagement=z;exports.PasskeySignIn=W;exports.TwoFactorSetup=q;exports.TwoFactorVerify=x;exports.Unauthenticated=D;exports.createBetterAuthBridge=_;exports.createSessionManager=L;exports.mapSocialProviders=P;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@tempots/dom"),C=require("../auth-divider-CVKfA8Cp.cjs"),A=require("../translations-qefRsdGi.cjs"),w=require("../notice-BBnSXYUc.cjs"),y=require("../stack-dwLevGa2.cjs"),b=require("../input-container-BkPcNDaZ.cjs"),v=require("../text-input-D_IxFd0M.cjs");function g(a,t){return a.error?(t.onError?.({message:a.error.message,status:a.error.status}),a.error.message):null}function I(a,t,s){return async n=>{const l=await a.signIn.email({email:n.email,password:n.password,callbackURL:t.callbackURL}),o=g(l,t);return o||(await s(),null)}}function F(a,t,s){return async n=>{const l=await a.signUp.email({name:n.name,email:n.email,password:n.password,callbackURL:t.callbackURL}),o=g(l,t);return o||(await s(),null)}}function U(a,t){return async s=>{const n=await a.requestPasswordReset({email:s.email,redirectTo:t.callbackURL});return g(n,t)}}function $(a,t){return async s=>{const n=await a.signIn.social({provider:s,callbackURL:t.callbackURL,errorCallbackURL:t.errorCallbackURL});g(n,t)}}function L(a,t={}){const s=e.prop(null),n=e.prop(!0),l=e.computedOf(s)(h=>h?.user??null),o=e.computedOf(s)(h=>h!=null);let u;async function d(){try{const h=await a.getSession();h.error||!h.data?s.set(null):s.set({user:h.data.user,session:h.data.session})}catch{s.set(null)}finally{n.set(!1)}}t.onSessionChange&&s.on(t.onSessionChange),d(),t.refreshInterval&&t.refreshInterval>0&&(u=setInterval(d,t.refreshInterval));function p(){u!=null&&(clearInterval(u),u=void 0),s.dispose(),n.dispose(),l.dispose(),o.dispose()}return{session:s,isPending:n,user:l,isAuthenticated:o,refresh:d,dispose:p}}function P(a){return a.map(t=>({provider:t}))}function _(a,t={}){const s=L(a,{refreshInterval:t.refreshInterval,onSessionChange:t.onSessionChange}),n=()=>s.refresh(),l=I(a,t,n),o=F(a,t,n),u=U(a,t),d=$(a,t),p=t.socialProviders?P(t.socialProviders):[],h={onSignIn:l,passwordRules:t.passwordRules,showRememberMe:t.showRememberMe,labels:t.labels?{emailLabel:t.labels.emailLabel,passwordLabel:t.labels.passwordLabel,rememberMeLabel:t.labels.rememberMeLabel,signInButton:t.labels.signInButton,forgotPasswordLink:t.labels.forgotPasswordLink,noAccountLink:t.labels.noAccountLink}:void 0},i={onSignUp:o,passwordRules:t.passwordRules,showPasswordStrength:t.showPasswordStrength,showNameField:t.showNameField,showConfirmPassword:t.showConfirmPassword,showAcceptTermsAndConditions:t.showAcceptTermsAndConditions,termsAndConditions:t.termsAndConditions,labels:t.labels?{nameLabel:t.labels.nameLabel,emailLabel:t.labels.emailLabel,passwordLabel:t.labels.passwordLabel,confirmPasswordLabel:t.labels.confirmPasswordLabel,acceptTermsLabel:t.labels.acceptTermsLabel,signUpButton:t.labels.signUpButton,hasAccountLink:t.labels.hasAccountLink}:void 0},m={onResetPassword:u,labels:t.labels?{resetPasswordButton:t.labels.resetPasswordButton,resetPasswordDescription:t.labels.resetPasswordDescription,emailLabel:t.labels.emailLabel,backToSignInLink:t.labels.backToSignInLink}:void 0},c={onSignIn:l,onSignUp:o,onResetPassword:u,onSocialLogin:d,socialProviders:p.length>0?p:void 0,showSocialDivider:p.length>0,passwordRules:t.passwordRules,showRememberMe:t.showRememberMe,showPasswordStrength:t.showPasswordStrength,showNameField:t.showNameField,showConfirmPassword:t.showConfirmPassword,showAcceptTermsAndConditions:t.showAcceptTermsAndConditions,termsAndConditions:t.termsAndConditions,labels:t.labels};async function r(){await a.signOut(),await n()}function f(){s.dispose()}return{session:s.session,isPending:s.isPending,user:s.user,isAuthenticated:s.isAuthenticated,containerOptions:c,signInOptions:h,signUpOptions:i,resetOptions:m,socialProviders:p,signOut:r,refreshSession:n,dispose:f}}const R={mark:e.makeProviderMark("BetterAuth"),create:a=>{if(!a)throw new Error("BetterAuth provider requires a client option");const t=_(a.client,a);return{value:t,dispose:()=>t.dispose()}}};function E(a,t,...s){return C.AuthContainer({...a.containerOptions,...t},...s)}function O(a,t){return C.AuthModal(s=>t(n=>s({...a.containerOptions,...n})))}function M(a,t){return e.When(a.isAuthenticated,t)}function D(a,t){return e.Unless(a.isAuthenticated,t)}const T={twoFactorSetupDescription:"Enter your password to enable two-factor authentication.",twoFactorEnableButton:"Enable 2FA",twoFactorVerifyButton:"Verify",twoFactorScanDescription:"Scan the code below with your authenticator app, then enter the verification code.",twoFactorBackupCodesDescription:"Save these backup codes in a safe place. You can use them to sign in if you lose access to your authenticator.",twoFactorCodePlaceholder:"Enter 6-digit code",twoFactorBackupCodePlaceholder:"Enter backup code",twoFactorEnabled:"Two-factor authentication has been enabled.",twoFactorTotpDescription:"Enter the code from your authenticator app.",twoFactorOtpDescription:"Enter the one-time code sent to you.",twoFactorBackupDescription:"Enter one of your backup codes.",twoFactorSendOtpButton:"Send Code",twoFactorMethodLabel:a=>{switch(a){case"totp":return"Authenticator";case"otp":return"Email/SMS";case"backup":return"Backup Code";default:return a}},passwordPlaceholder:"Enter your password",magicLinkDescription:"Enter your email to receive a sign-in link.",magicLinkSendButton:"Send Magic Link",magicLinkSent:"A sign-in link has been sent to your email.",passkeySignInButton:"Sign in with Passkey",passkeyAddButton:"Add Passkey",passkeyDeleteButton:"Delete",passkeyRenameButton:"Rename",passkeySaveButton:"Save",passkeyCancelButton:"Cancel",passkeyNamePlaceholder:"Passkey name (optional)",passkeyUnnamed:"Unnamed passkey"},B=T,S="en",N=Object.assign({}),k=A.makeI18nProvider({defaultLocale:S,defaultMessages:B,localeLoader:async a=>{if(a===S)return B;const t=N[`./locales/${a}.ts`];return t?await t():B},providerName:"BetterAuthI18n"});function q({twoFactor:a,issuer:t,onComplete:s}){const n=e.prop(""),l=e.prop(null),o=e.prop([]),u=e.prop(""),d=e.prop(null),p=e.prop(!1),h=e.prop("password");async function i(c){c.preventDefault(),p.set(!0),d.set(null);const r=await a.enable({password:n.value,issuer:t});if(p.set(!1),r.error){d.set(r.error.message);return}r.data&&(l.set(r.data.totpURI),o.set(r.data.backupCodes),h.set("verify"))}async function m(c){c.preventDefault(),p.set(!0),d.set(null);const r=await a.verifyTotp({code:u.value});if(p.set(!1),r.error){d.set(r.error.message);return}h.set("complete"),s?.()}return e.Use(k,c=>e.html.div(e.attr.class("bc-two-factor"),e.Ensure(d,r=>w.Notice({variant:"danger",tone:"prominent",role:"alert"},e.html.div(r))),e.OneOfValue(h,{password:()=>e.html.form(e.attr.class("bc-two-factor__form"),e.on.submit(i),y.Stack(e.html.p(e.attr.class("bc-auth-form__description"),c.$.twoFactorSetupDescription),w.PasswordInput({value:n,onChange:r=>n.set(r),placeholder:c.$.passwordPlaceholder}),b.Button({type:"submit",variant:"filled",color:"primary",loading:p},e.attr.class("bc-auth-form__submit"),c.$.twoFactorEnableButton))),verify:()=>e.Fragment(e.Ensure(l,r=>e.html.div(e.attr.class("bc-two-factor__totp-uri"),e.html.p(c.$.twoFactorScanDescription),e.html.code(e.attr.class("bc-two-factor__code-display"),r))),e.NotEmpty(o,()=>e.html.div(e.attr.class("bc-two-factor__backup-codes"),e.html.p(c.$.twoFactorBackupCodesDescription),e.html.ul(e.ForEach(o,r=>e.html.li(r))))),e.html.form(e.attr.class("bc-two-factor__form"),e.on.submit(m),y.Stack(v.TextInput({value:u,onChange:r=>u.set(r),placeholder:c.$.twoFactorCodePlaceholder}),b.Button({type:"submit",variant:"filled",color:"primary",loading:p},e.attr.class("bc-auth-form__submit"),c.$.twoFactorVerifyButton)))),complete:()=>e.html.div(e.attr.class("bc-two-factor__complete"),w.Notice({variant:"success",tone:"prominent"},e.html.div(c.$.twoFactorEnabled)))})))}function x({twoFactor:a,methods:t=["totp","backup"],trustDevice:s,onVerified:n}){const l=e.prop(""),o=e.prop(null),u=e.prop(!1),d=e.prop(t[0]??"totp");async function p(i){i.preventDefault(),u.set(!0),o.set(null);const m=d.value;let c;if(m==="totp")c=await a.verifyTotp({code:l.value,trustDevice:s});else if(m==="otp"&&a.verifyOtp)c=await a.verifyOtp({code:l.value,trustDevice:s});else if(m==="backup")c=await a.verifyBackupCode({code:l.value});else{o.set("Unsupported verification method"),u.set(!1);return}if(u.set(!1),c.error){o.set(c.error.message);return}n?.()}async function h(){if(!a.sendOtp)return;u.set(!0),o.set(null);const i=await a.sendOtp({trustDevice:s});u.set(!1),i.error&&o.set(i.error.message)}return e.Use(k,i=>{const m=e.computedOf(d,i)((r,f)=>r==="totp"?f.twoFactorTotpDescription:r==="otp"?f.twoFactorOtpDescription:f.twoFactorBackupDescription),c=e.computedOf(d,i)((r,f)=>r==="backup"?f.twoFactorBackupCodePlaceholder:f.twoFactorCodePlaceholder);return e.html.div(e.attr.class("bc-two-factor"),e.Ensure(o,r=>w.Notice({variant:"danger",tone:"prominent",role:"alert"},e.html.div(r))),e.When(t.length>1,()=>e.html.div(e.attr.class("bc-two-factor__methods"),...t.map(r=>e.html.button(e.attr.type("button"),e.attr.class("bc-two-factor__method-button"),e.attr.class(d.map(f=>f===r?"bc-two-factor__method-button--active":"")),e.on.click(()=>{d.set(r),l.set(""),o.set(null)}),i.$.twoFactorMethodLabel.map(f=>f(r)))))),e.html.form(e.attr.class("bc-two-factor__form"),e.on.submit(p),y.Stack(e.html.p(e.attr.class("bc-auth-form__description"),m),e.When(d.map(r=>r==="otp"&&a.sendOtp!=null),()=>b.Button({type:"button",variant:"outline",color:"primary",onClick:h,loading:u},i.$.twoFactorSendOtpButton)),v.TextInput({value:l,onChange:r=>l.set(r),placeholder:c}),b.Button({type:"submit",variant:"filled",color:"primary",loading:u},e.attr.class("bc-auth-form__submit"),i.$.twoFactorVerifyButton))))})}function V({client:a,callbackURL:t}){const s=e.prop(""),n=e.prop(null),l=e.prop(!1),o=e.prop(!1);async function u(d){if(d.preventDefault(),!a.signIn.magicLink){n.set("Magic link sign-in is not configured");return}l.set(!0),n.set(null);const p=await a.signIn.magicLink({email:s.value,callbackURL:t});if(l.set(!1),p.error){n.set(p.error.message);return}o.set(!0)}return e.Use(k,d=>e.html.div(e.attr.class("bc-auth-form"),e.Ensure(n,p=>w.Notice({variant:"danger",tone:"prominent",role:"alert"},e.html.div(p))),e.Unless(o,()=>e.html.form(e.attr.class("bc-auth-form__form"),e.on.submit(u),y.Stack(e.attr.class("bc-auth-form__fields"),e.html.p(e.attr.class("bc-auth-form__description"),d.$.magicLinkDescription),w.EmailInput({value:s,onChange:p=>s.set(p)}),b.Button({type:"submit",variant:"filled",color:"primary",loading:l},e.attr.class("bc-auth-form__submit"),d.$.magicLinkSendButton)))),e.When(o,()=>w.Notice({variant:"success",tone:"prominent"},e.html.div(d.$.magicLinkSent)))))}function W({client:a,autoFill:t,onSuccess:s,onError:n}){const l=e.prop(!1);async function o(){if(!a.signIn.passkey)return;l.set(!0);const u=await a.signIn.passkey({autoFill:t});if(l.set(!1),u.error){n?.({message:u.error.message,status:u.error.status});return}s?.()}return e.Use(k,u=>b.Button({type:"button",variant:"outline",color:"primary",onClick:o,loading:l},e.attr.class("bc-passkey-signin"),u.$.passkeySignInButton))}function z({passkey:a}){const t=e.prop([]),s=e.prop(null),n=e.prop(!1),l=e.prop("");async function o(i,m){n.set(!0),s.set(null);const c=await i();if(n.set(!1),c.error){s.set(c.error.message);return}await m?.(c.data)}async function u(){await o(()=>a.listUserPasskeys(),i=>t.set(i??[]))}async function d(){const i=l.value||void 0;await o(()=>a.addPasskey({name:i}),async()=>{l.set(""),await u()})}async function p(i){await o(()=>a.deletePasskey({id:i}),()=>u())}async function h(i,m){await o(()=>a.updatePasskey({id:i,name:m}),()=>u())}return u(),e.Use(k,i=>e.html.div(e.attr.class("bc-passkey-management"),e.Ensure(s,m=>w.Notice({variant:"danger",tone:"prominent",role:"alert"},e.html.div(m))),e.html.div(e.attr.class("bc-passkey-list"),e.ForEach(t,m=>{const c=e.prop(!1),r=e.prop(m.$.name?.value??"");return e.html.div(e.attr.class("bc-passkey-item"),e.Unless(c,()=>e.html.div(e.attr.class("bc-passkey-item__info"),e.html.span(e.attr.class("bc-passkey-item__name"),m.$.name?.map(f=>f??i.$.passkeyUnnamed.value)??i.$.passkeyUnnamed),e.html.span(e.attr.class("bc-passkey-item__date"),m.$.createdAt))),e.When(c,()=>e.html.div(e.attr.class("bc-passkey-item__edit"),v.TextInput({value:r,onChange:f=>r.set(f)}))),e.html.div(e.attr.class("bc-passkey-item__actions"),e.Unless(c,()=>e.html.div(b.Button({type:"button",variant:"text",size:"sm",onClick:()=>{r.set(m.$.name?.value??""),c.set(!0)}},i.$.passkeyRenameButton),b.Button({type:"button",variant:"text",size:"sm",color:"danger",onClick:()=>p(m.$.id.value)},i.$.passkeyDeleteButton))),e.When(c,()=>e.html.div(b.Button({type:"button",variant:"text",size:"sm",onClick:async()=>{await h(m.$.id.value,r.value),c.set(!1)}},i.$.passkeySaveButton),b.Button({type:"button",variant:"text",size:"sm",onClick:()=>c.set(!1)},i.$.passkeyCancelButton)))))})),e.html.div(e.attr.class("bc-passkey-add"),y.Stack(v.TextInput({value:l,onChange:m=>l.set(m),placeholder:i.$.passkeyNamePlaceholder}),b.Button({type:"button",variant:"filled",color:"primary",onClick:d,loading:n},i.$.passkeyAddButton)))))}exports.Authenticated=M;exports.BetterAuth=R;exports.BetterAuthContainer=E;exports.BetterAuthI18n=k;exports.BetterAuthModal=O;exports.MagicLinkForm=V;exports.PasskeyManagement=z;exports.PasskeySignIn=W;exports.TwoFactorSetup=q;exports.TwoFactorVerify=x;exports.Unauthenticated=D;exports.createBetterAuthBridge=_;exports.createSessionManager=L;exports.mapSocialProviders=P;
|