@webority/theme 0.9.12 → 0.9.14

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.
@@ -430,8 +430,16 @@
430
430
  // passwordRequirements) opens on focus. Rendered identically by React (a JSX <ul>) and Razor
431
431
  // (the same <ul> built in webority-ui.js), so both surfaces read the same. `.pw-popover` is the
432
432
  // custom class both put on Bootstrap's `.popover` panel.
433
+ // The card surface — header and body alike — is pure white, lifted off the page with the shared
434
+ // overlay shadow (the one ink menus/popovers/modals use; not a hand-rolled per-component shadow).
435
+ .pw-popover {
436
+ --bs-popover-bg: var(--wui-bg-light);
437
+ --bs-popover-header-bg: var(--wui-bg-light);
438
+ box-shadow: var(--wui-shadow-overlay);
439
+ }
433
440
  .pw-popover .popover-body {
434
- padding: 12px 14px;
441
+ padding: 14px 16px;
442
+ min-width: 232px;
435
443
  }
436
444
  .pw-criteria {
437
445
  list-style: none;
@@ -439,37 +447,45 @@
439
447
  padding: 0;
440
448
  display: flex;
441
449
  flex-direction: column;
442
- gap: 8px;
450
+ gap: 9px;
443
451
  }
444
452
  .pw-criteria .pw-rule {
445
453
  display: flex;
446
454
  align-items: center;
447
- gap: 8px;
455
+ gap: 9px;
448
456
  font-size: 13px;
449
- line-height: 1.3;
457
+ line-height: 1.35;
458
+ font-weight: 500;
459
+ transition: color 0.15s ease;
450
460
  }
451
- // The state mark is a baked-colour circled ✓/✕ — matched to the AA status ramp. The list TEXT
452
- // uses the -text token for contrast; the mark itself needs less and uses the vivid ramp value.
461
+ // The state mark is a single mask tinted by the rule's own text colour (`currentColor`), so it
462
+ // tracks the met/unmet colour automatically and stays theme-aware — no baked hex, no light/dark
463
+ // fork. An UNMET rule is a calm hollow circle (a pending step, not an error); it turns into a
464
+ // filled green check the moment the rule is satisfied. Red is deliberately NOT used for "not yet
465
+ // typed" — an empty field should read as a to-do list, not a wall of validation failures.
453
466
  .pw-criteria .pw-mark {
454
467
  flex: none;
455
- width: 18px;
456
- height: 18px;
457
- background: center / contain no-repeat;
468
+ width: 17px;
469
+ height: 17px;
470
+ background-color: currentColor;
471
+ -webkit-mask: center / contain no-repeat;
472
+ mask: center / contain no-repeat;
473
+ -webkit-mask-image: var(--pw-mark);
474
+ mask-image: var(--pw-mark);
475
+ transition: background-color 0.15s ease;
458
476
  }
459
477
  .pw-criteria .pw-rule-text {
460
478
  min-width: 0;
461
479
  }
462
- .pw-criteria .pw-rule.met {
463
- color: var(--color-success-text);
464
- }
465
- .pw-criteria .pw-rule.met .pw-mark {
466
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2317C653' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='m8 12 2.5 2.5 5.5-6'/%3E%3C/svg%3E");
467
- }
480
+ // Unmet: muted, low-emphasis — a hollow ring.
468
481
  .pw-criteria .pw-rule.unmet {
469
- color: var(--color-danger-text);
482
+ color: var(--color-text-subtle);
483
+ --pw-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8'%3E%3Ccircle cx='12' cy='12' r='8.25'/%3E%3C/svg%3E");
470
484
  }
471
- .pw-criteria .pw-rule.unmet .pw-mark {
472
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F8285A' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='m9 9 6 6m0-6-6 6'/%3E%3C/svg%3E");
485
+ // Met: success-green — a filled circle with a knocked-out check.
486
+ .pw-criteria .pw-rule.met {
487
+ color: var(--color-success-text);
488
+ --pw-mark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' fill-rule='evenodd' d='M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Zm4.03-11.28a.9.9 0 0 0-1.32-1.22l-4.02 4.35-1.4-1.5a.9.9 0 1 0-1.32 1.22l2.06 2.22a.9.9 0 0 0 1.32 0l4.68-5.07Z' clip-rule='evenodd'/%3E%3C/svg%3E");
473
489
  }
474
490
  // The checklist opens with a PLAIN FADE only — no drop / zoom / scale. It opts out of the shared
475
491
  // menu-open motion (_menu-motion.scss animates every `.popover.show`) and lets Bootstrap's own