@webority/theme 0.9.14 → 0.9.15
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/webority-theme.css +1 -1
- package/package.json +1 -1
- package/scss/_components.scss +0 -32
- package/scss/wui/_controls.scss +9 -0
- package/scss/wui/_flow.scss +27 -8
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webority/theme",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.15",
|
|
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": {
|
package/scss/_components.scss
CHANGED
|
@@ -692,35 +692,6 @@ button.wui-input-leading:focus-visible {
|
|
|
692
692
|
transform: translateY(-1px);
|
|
693
693
|
}
|
|
694
694
|
|
|
695
|
-
// ---- Loading shimmer skeleton ----------------------------------------
|
|
696
|
-
.shimmer {
|
|
697
|
-
position: relative;
|
|
698
|
-
overflow: hidden;
|
|
699
|
-
background: var(--wui-bg-muted);
|
|
700
|
-
}
|
|
701
|
-
.shimmer::after {
|
|
702
|
-
content: "";
|
|
703
|
-
position: absolute;
|
|
704
|
-
inset: 0;
|
|
705
|
-
background: linear-gradient(90deg,
|
|
706
|
-
transparent,
|
|
707
|
-
rgba(255, 255, 255, 0.5),
|
|
708
|
-
transparent);
|
|
709
|
-
transform: translateX(-100%);
|
|
710
|
-
animation: shimmer 1.4s infinite;
|
|
711
|
-
}
|
|
712
|
-
// Dark mode shimmer — lightens the gradient for visibility on darker surfaces.
|
|
713
|
-
:root[data-theme="dark"] .shimmer::after {
|
|
714
|
-
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.08), transparent);
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
// ---- Keyframes -------------------------------------------------------
|
|
718
|
-
|
|
719
|
-
@keyframes shimmer {
|
|
720
|
-
0% { transform: translateX(-100%); }
|
|
721
|
-
100% { transform: translateX(100%); }
|
|
722
|
-
}
|
|
723
|
-
|
|
724
695
|
// ---- Native scrollbars (document + opt-in) --------------------------
|
|
725
696
|
// Scoped to html/body and `.wui-scroll` — never `*`. Global
|
|
726
697
|
// `*` restyled every nested scroller (modals, tiny panels) and fought
|
|
@@ -805,9 +776,6 @@ html.is-scrolling body::-webkit-scrollbar-thumb {
|
|
|
805
776
|
.press-feedback {
|
|
806
777
|
transition: none;
|
|
807
778
|
}
|
|
808
|
-
.shimmer::after {
|
|
809
|
-
animation: none;
|
|
810
|
-
}
|
|
811
779
|
// Hover animation options: hide the moving layer and drop lift/glow so no
|
|
812
780
|
// option animates, regardless of which .btn-anim-* is applied.
|
|
813
781
|
.btn:not(.btn-icon):not(.u-action)::before {
|
package/scss/wui/_controls.scss
CHANGED
|
@@ -716,6 +716,15 @@ textarea.form-control.autosize {
|
|
|
716
716
|
outline: 2px solid var(--color-primary);
|
|
717
717
|
outline-offset: 2px;
|
|
718
718
|
}
|
|
719
|
+
.pw-toggle .pw-eye-off {
|
|
720
|
+
display: none;
|
|
721
|
+
}
|
|
722
|
+
.pw-toggle.pw-revealed .pw-eye {
|
|
723
|
+
display: none;
|
|
724
|
+
}
|
|
725
|
+
.pw-toggle.pw-revealed .pw-eye-off {
|
|
726
|
+
display: block;
|
|
727
|
+
}
|
|
719
728
|
|
|
720
729
|
// Clearable ✕ — a trailing reset button, placed inside .input-wrap / .input-icon. It only
|
|
721
730
|
// renders while the field has a value; .has-clear reserves the room so text never sits under it.
|
package/scss/wui/_flow.scss
CHANGED
|
@@ -678,16 +678,34 @@ button.step:focus-visible .step-circle {
|
|
|
678
678
|
.repeater-row {
|
|
679
679
|
position: relative;
|
|
680
680
|
display: flex;
|
|
681
|
+
// When present, the row-label line is the full-width FIRST line (a header band) and the
|
|
682
|
+
// fields wrap to the line beneath it. The markup renders that band only when the row is
|
|
683
|
+
// labelled or removable (see .repeater-row-label) — a removable row's empty band reserves
|
|
684
|
+
// the gap that keeps the fields clear of the absolute remove control. A row that is neither
|
|
685
|
+
// has no band and stays compact; there is no overlap to avoid, since the control is absent too.
|
|
686
|
+
flex-wrap: wrap;
|
|
681
687
|
align-items: flex-start;
|
|
682
688
|
gap: 12px;
|
|
683
|
-
|
|
684
|
-
// band clear of the fields — the fields start below it and still run full width.
|
|
685
|
-
padding: 28px 16px 16px;
|
|
689
|
+
padding: 14px 16px 16px;
|
|
686
690
|
border: 1px solid var(--color-border);
|
|
687
691
|
border-radius: var(--radius-lg);
|
|
688
692
|
corner-shape: squircle;
|
|
689
693
|
background: var(--color-surface);
|
|
690
694
|
}
|
|
695
|
+
// The row's header band. Rendered only when the row is labelled (shows the label) or removable
|
|
696
|
+
// (an empty band reserving the gap that keeps the fields off the remove control); a row that is
|
|
697
|
+
// neither omits it and stays compact. Full-width so the fields wrap below it; min-height + the row
|
|
698
|
+
// gap clear the 36px remove disc; the right padding keeps any label text clear of the top-right
|
|
699
|
+
// control. Set the text via React rowLabel / Razor <app-repeater-row label="…">.
|
|
700
|
+
.repeater-row-label {
|
|
701
|
+
flex: 0 0 100%;
|
|
702
|
+
min-height: 24px;
|
|
703
|
+
padding-right: 44px;
|
|
704
|
+
font-size: 12px;
|
|
705
|
+
font-weight: 600;
|
|
706
|
+
line-height: 1.4;
|
|
707
|
+
color: var(--color-text-muted);
|
|
708
|
+
}
|
|
691
709
|
.repeater-index {
|
|
692
710
|
flex: none;
|
|
693
711
|
width: 22px;
|
|
@@ -708,12 +726,13 @@ button.step:focus-visible .step-circle {
|
|
|
708
726
|
min-width: 0;
|
|
709
727
|
}
|
|
710
728
|
.repeater-remove {
|
|
711
|
-
// Pulled out of the row's flex flow and parked in the top-right corner
|
|
712
|
-
//
|
|
713
|
-
// the
|
|
729
|
+
// Pulled out of the row's flex flow and parked in the top-right corner of the header
|
|
730
|
+
// band, so it never steals horizontal room from the fields — the last field can run to
|
|
731
|
+
// the row's right edge instead of stopping short. Sits a little below the top edge so it
|
|
732
|
+
// reads as part of the band rather than pinned to the corner.
|
|
714
733
|
position: absolute;
|
|
715
|
-
top:
|
|
716
|
-
right:
|
|
734
|
+
top: 12px;
|
|
735
|
+
right: 12px;
|
|
717
736
|
}
|
|
718
737
|
.repeater-add {
|
|
719
738
|
align-self: flex-start;
|