@webority/theme 0.9.6 → 0.9.7

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webority/theme",
3
- "version": "0.9.6",
3
+ "version": "0.9.7",
4
4
  "description": "Webority shared design system — Bootstrap 5.3 SCSS overrides, --wui-* tokens, and shared component CSS. The single source of brand chrome for React portals and Razor sites.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "publishConfig": {
@@ -58,6 +58,28 @@
58
58
  --bs-btn-active-border-color: transparent;
59
59
  }
60
60
 
61
+ // A soft-tinted affirmative — the success counterpart of .btn-secondary. Dark success text on a
62
+ // faint success fill, so it reads as "resolved / confirmed" without the weight of a solid green.
63
+ .btn-success {
64
+ --bs-btn-color: var(--color-success-text);
65
+ --bs-btn-bg: color-mix(in srgb, var(--color-success) 14%, transparent);
66
+ --bs-btn-border-color: transparent;
67
+ --bs-btn-hover-color: var(--color-success-text);
68
+ --bs-btn-hover-bg: color-mix(in srgb, var(--color-success) 20%, transparent);
69
+ --bs-btn-hover-border-color: transparent;
70
+ --bs-btn-active-color: var(--color-success-text);
71
+ --bs-btn-active-bg: color-mix(in srgb, var(--color-success) 28%, transparent);
72
+ --bs-btn-active-border-color: transparent;
73
+ }
74
+
75
+ // A button-shaped label that does nothing: keeps the .btn chrome but takes no pointer, so it
76
+ // neither clicks nor lifts on hover. Used for a resolved confirmation (AppButton `static`) that
77
+ // must sit exactly where its action button was.
78
+ .btn-static {
79
+ cursor: default;
80
+ pointer-events: none;
81
+ }
82
+
61
83
  .btn-danger {
62
84
  // White-on-red destructive look via the --wui-danger-strong token: white fails AA on the
63
85
  // brighter danger fills (#F8285A → 3.86:1, #E82646 → 4.38:1), so the button uses the
@@ -943,6 +943,14 @@ button.datepicker-month:hover {
943
943
  // Match AppInput's soft invalid border exactly (danger at 30%, mirroring primary-30 focus).
944
944
  border-color: color-mix(in srgb, var(--color-danger) 30%, transparent);
945
945
  }
946
+ // The live-validation error renders INSIDE <wui-phone> (after .phone-input-wrap), not as a
947
+ // direct child of .field — so .field's 4px column gap can't separate it from the control, and
948
+ // .field-error's -2px pull then makes it touch the input. <wui-phone> is display:block with no
949
+ // gap of its own, so restore the same effective 2px control→error gap the plain field gives,
950
+ // matching AppInput.
951
+ .app-phone-number-input wui-phone > .field-error {
952
+ margin-top: 2px;
953
+ }
946
954
  // Popover-field controls (date / date-range / time) carry aria-invalid on the HOST element —
947
955
  // React/Razor set it from the `error` prop — while the visible border lives on the inner trigger
948
956
  // button. Redden that trigger, and keep it red while the popover is open (mirroring AppInput,
@@ -657,6 +657,26 @@ textarea.form-control.autosize {
657
657
  color: var(--color-primary);
658
658
  }
659
659
 
660
+ // Trailing action beside the field — a control (a labelled button, or a confirmation once the
661
+ // value resolves) that sits OUTSIDE the input border. The field flexes to fill the row; the
662
+ // action keeps its natural width and centres against the control.
663
+ .input-action-row {
664
+ display: flex;
665
+ align-items: center;
666
+ gap: 0.5rem;
667
+ }
668
+ .input-action-row > .input-wrap,
669
+ .input-action-row > .input-icon {
670
+ flex: 1 1 auto;
671
+ min-width: 0;
672
+ }
673
+ .input-action {
674
+ flex: 0 0 auto;
675
+ display: flex;
676
+ align-items: center;
677
+ white-space: nowrap;
678
+ }
679
+
660
680
  // Password reveal toggle (place inside .input-wrap).
661
681
  .input.pw {
662
682
  padding-right: 44px;