@unlk/keymaster 1.6.7 → 1.6.8

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/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.6.8] - 2026-08-17
6
+
7
+ ### Add
8
+ - OTP Field
9
+
5
10
  ## [1.6.7] - 2026-08-04
6
11
 
7
12
  ### Fix
@@ -35221,12 +35221,12 @@ textarea.form-control-lg {
35221
35221
 
35222
35222
  .was-validated .form-check.form-check-tiled > .form-check-input:valid ~ .form-check-label, .form-check.form-check-tiled > .form-check-input.is-valid ~ .form-check-label {
35223
35223
  color: var(--bs-body-color);
35224
- border-color: var(--bs-form-valid-color);
35224
+ border-color: var(--bs-form-valid-border-color);
35225
35225
  }
35226
35226
 
35227
35227
  .was-validated .form-check.form-check-tiled > .form-check-input:valid ~ .form-check-label:before, .form-check.form-check-tiled > .form-check-input.is-valid ~ .form-check-label:before {
35228
35228
  background-color: var(--bs-form-valid-color);
35229
- border-color: var(--bs-form-valid-color);
35229
+ border-color: var(--bs-form-valid-border-color);
35230
35230
  }
35231
35231
 
35232
35232
  .was-validated .form-check-encapsulated .form-check-input:valid ~ .form-check-label, .form-check-encapsulated .form-check-input.is-valid ~ .form-check-label {
@@ -35246,14 +35246,32 @@ textarea.form-control-lg {
35246
35246
  box-shadow: var(--bs-box-shadow-inset), 0 0 0 .0625rem var(--bs-form-valid-color);
35247
35247
  }
35248
35248
 
35249
+ .was-validated .otp:has(.otp-input:valid) .otp-slot, .otp:has(.otp-input.is-valid) .otp-slot {
35250
+ border-color: var(--bs-form-valid-border-color);
35251
+ }
35252
+
35253
+ .otp:has(.otp-input:user-valid) .otp-slot {
35254
+ border-color: var(--bs-form-valid-border-color);
35255
+ }
35256
+
35257
+ .was-validated .otp:has(.otp-input:valid) .otp-slot.otp-slot-active, .otp:has(.otp-input.is-valid) .otp-slot.otp-slot-active {
35258
+ border-color: var(--bs-form-valid-border-color);
35259
+ box-shadow: 0 0 0 .25rem rgba(var(--bs-success-rgb), .25);
35260
+ }
35261
+
35262
+ .otp:has(.otp-input:user-valid) .otp-slot.otp-slot-active {
35263
+ border-color: var(--bs-form-valid-border-color);
35264
+ box-shadow: 0 0 0 .25rem rgba(var(--bs-success-rgb), .25);
35265
+ }
35266
+
35249
35267
  .was-validated .form-check.form-check-tiled > .form-check-input:invalid ~ .form-check-label, .form-check.form-check-tiled > .form-check-input.is-invalid ~ .form-check-label {
35250
35268
  color: var(--bs-body-color);
35251
- border-color: var(--bs-form-invalid-color);
35269
+ border-color: var(--bs-form-invalid-border-color);
35252
35270
  }
35253
35271
 
35254
35272
  .was-validated .form-check.form-check-tiled > .form-check-input:invalid ~ .form-check-label:before, .form-check.form-check-tiled > .form-check-input.is-invalid ~ .form-check-label:before {
35255
35273
  background-color: var(--bs-form-invalid-color);
35256
- border-color: var(--bs-form-invalid-color);
35274
+ border-color: var(--bs-form-invalid-border-color);
35257
35275
  }
35258
35276
 
35259
35277
  .was-validated .form-check-encapsulated .form-check-input:invalid ~ .form-check-label, .form-check-encapsulated .form-check-input.is-invalid ~ .form-check-label {
@@ -35273,6 +35291,24 @@ textarea.form-control-lg {
35273
35291
  box-shadow: var(--bs-box-shadow-inset), 0 0 0 .0625rem var(--bs-form-invalid-color);
35274
35292
  }
35275
35293
 
35294
+ .was-validated .otp:has(.otp-input:invalid) .otp-slot, .otp:has(.otp-input.is-invalid) .otp-slot {
35295
+ border-color: var(--bs-form-invalid-border-color);
35296
+ }
35297
+
35298
+ .otp:has(.otp-input:user-invalid) .otp-slot {
35299
+ border-color: var(--bs-form-invalid-border-color);
35300
+ }
35301
+
35302
+ .was-validated .otp:has(.otp-input:invalid) .otp-slot.otp-slot-active, .otp:has(.otp-input.is-invalid) .otp-slot.otp-slot-active {
35303
+ border-color: var(--bs-form-invalid-border-color);
35304
+ box-shadow: 0 0 0 .25rem rgba(var(--bs-danger-rgb), .25);
35305
+ }
35306
+
35307
+ .otp:has(.otp-input:user-invalid) .otp-slot.otp-slot-active {
35308
+ border-color: var(--bs-form-invalid-border-color);
35309
+ box-shadow: 0 0 0 .25rem rgba(var(--bs-danger-rgb), .25);
35310
+ }
35311
+
35276
35312
  .form-control {
35277
35313
  box-shadow: none;
35278
35314
  }
@@ -35492,6 +35528,139 @@ textarea.form-control-lg {
35492
35528
  transform: scale(.85) translateY(-.5rem) translateX(.15rem);
35493
35529
  }
35494
35530
 
35531
+ .otp-wrapper {
35532
+ flex-direction: column;
35533
+ align-items: flex-start;
35534
+ gap: .375rem;
35535
+ display: flex;
35536
+ }
35537
+
35538
+ .otp {
35539
+ display: inline-block;
35540
+ position: relative;
35541
+ }
35542
+
35543
+ .otp .otp-input {
35544
+ white-space: nowrap;
35545
+ pointer-events: none;
35546
+ opacity: 0;
35547
+ width: 1px;
35548
+ height: 1px;
35549
+ position: absolute;
35550
+ overflow: hidden;
35551
+ }
35552
+
35553
+ .otp .otp-slots {
35554
+ cursor: text;
35555
+ -webkit-user-select: none;
35556
+ user-select: none;
35557
+ align-items: center;
35558
+ gap: .375rem;
35559
+ display: flex;
35560
+ }
35561
+
35562
+ .otp .otp-group {
35563
+ gap: .375rem;
35564
+ display: flex;
35565
+ }
35566
+
35567
+ .otp .otp-slot {
35568
+ width: calc(1.5em + 1rem);
35569
+ height: calc(1.5em + 1rem);
35570
+ color: var(--bs-body-color);
35571
+ background-color: var(--bs-body-bg);
35572
+ border-radius: var(--bs-border-radius-xs);
35573
+ border: .125rem solid #6e727a;
35574
+ justify-content: center;
35575
+ align-items: center;
35576
+ font-size: 1rem;
35577
+ font-weight: 600;
35578
+ transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
35579
+ display: flex;
35580
+ }
35581
+
35582
+ @media (prefers-reduced-motion: reduce) {
35583
+ .otp .otp-slot {
35584
+ transition: none;
35585
+ }
35586
+ }
35587
+
35588
+ .otp .otp-slot.otp-slot-active {
35589
+ border-color: #02f;
35590
+ outline: 0;
35591
+ box-shadow: 0 0 0 .25rem #0022ff40;
35592
+ }
35593
+
35594
+ .otp .otp-slot.otp-slot-active .otp-cursor {
35595
+ animation: 1s step-end infinite otp-blink;
35596
+ }
35597
+
35598
+ .otp .otp-slot.otp-slot-filled .otp-cursor {
35599
+ display: none;
35600
+ }
35601
+
35602
+ .otp .otp-char {
35603
+ line-height: 1;
35604
+ }
35605
+
35606
+ .otp .otp-cursor {
35607
+ opacity: 0;
35608
+ background-color: currentColor;
35609
+ width: 1px;
35610
+ height: 1.25em;
35611
+ position: absolute;
35612
+ }
35613
+
35614
+ .otp .otp-separator {
35615
+ color: var(--bs-secondary-color);
35616
+ margin: 0 .25rem;
35617
+ font-size: 1rem;
35618
+ line-height: calc(1.5em + 1rem);
35619
+ }
35620
+
35621
+ .otp:has(.otp-slots.disabled) .otp-slots {
35622
+ pointer-events: none;
35623
+ cursor: default;
35624
+ }
35625
+
35626
+ .otp:has(.otp-slots.disabled) .otp-slot {
35627
+ background-color: var(--bs-secondary-bg);
35628
+ }
35629
+
35630
+ .otp.otp-sm .otp-slot {
35631
+ border-radius: var(--bs-border-radius-xs);
35632
+ width: calc(1.5em + .75rem);
35633
+ height: calc(1.5em + .75rem);
35634
+ font-size: .875rem;
35635
+ }
35636
+
35637
+ .otp.otp-sm .otp-separator {
35638
+ font-size: .875rem;
35639
+ line-height: calc(1.5em + .75rem);
35640
+ }
35641
+
35642
+ .otp.otp-lg .otp-slot {
35643
+ border-radius: var(--bs-border-radius-sm);
35644
+ width: calc(1.5em + 1.25rem);
35645
+ height: calc(1.5em + 1.25rem);
35646
+ font-size: 1.125rem;
35647
+ }
35648
+
35649
+ .otp.otp-lg .otp-separator {
35650
+ font-size: 1.125rem;
35651
+ line-height: calc(1.5em + 1.25rem);
35652
+ }
35653
+
35654
+ @keyframes otp-blink {
35655
+ 0%, 100% {
35656
+ opacity: 1;
35657
+ }
35658
+
35659
+ 50% {
35660
+ opacity: 0;
35661
+ }
35662
+ }
35663
+
35495
35664
  .pagination {
35496
35665
  border-radius: var(--bs-border-radius-xs);
35497
35666
  background-color: #f2f4ff;