@webority/theme 0.17.3 → 0.17.4

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.17.3",
3
+ "version": "0.17.4",
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": {
@@ -470,6 +470,14 @@
470
470
  margin-left: auto;
471
471
  gap: 8px;
472
472
  }
473
+ // A filter control wider than a phone (a four-option segmented strip) scrolls inside the toolbar
474
+ // instead of widening the page.
475
+ .wui-table-toolbar-filters {
476
+ min-width: 0;
477
+ max-width: 100%;
478
+ overflow-x: auto;
479
+ scrollbar-width: none;
480
+ }
473
481
  // The search box is full-width on its own; in a toolbar it is one control among several.
474
482
  .wui-table-toolbar .search-wrap {
475
483
  width: min(320px, 100%);
@@ -722,6 +730,166 @@
722
730
  inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)));
723
731
  }
724
732
 
733
+ // Columns menu (AppColumnMenu / <app-column-menu>) and the column it hides on Razor.
734
+ .table-ledger .wui-col-hidden {
735
+ display: none;
736
+ }
737
+ .wui-column-menu {
738
+ min-width: 200px;
739
+ padding: 8px 0;
740
+ }
741
+ .wui-column-menu-title {
742
+ padding: 4px 14px 8px;
743
+ font-size: 12px;
744
+ font-weight: 600;
745
+ letter-spacing: 0.04em;
746
+ text-transform: uppercase;
747
+ color: var(--color-text-subtle);
748
+ }
749
+ .wui-column-menu-item {
750
+ display: flex;
751
+ align-items: center;
752
+ gap: 10px;
753
+ padding: 6px 14px;
754
+ font-size: 14px;
755
+ color: var(--color-text);
756
+ cursor: pointer;
757
+ }
758
+ .wui-column-menu-item:hover {
759
+ background: var(--color-bg-subtle);
760
+ }
761
+
762
+ // A row that opens its record (AppDataTable rowHref / onRowClick, Razor data-href).
763
+ .table-ledger tbody tr.wui-row-link {
764
+ cursor: pointer;
765
+ }
766
+ .table-ledger tbody tr.wui-row-link:focus-visible {
767
+ outline: 2px solid var(--color-primary);
768
+ outline-offset: -2px;
769
+ }
770
+
771
+ // Stacked on phones (AppDataTable `stackOnMobile`, Razor `stack-on-mobile`): below sm each row is a
772
+ // card. The first column (after the library's select/expand cells) leads the card at full width,
773
+ // every other cell is a "label: value" line from its data-label, the select checkbox sits in the
774
+ // card's top corner and the row actions close the card. The header row is visually hidden, not
775
+ // removed, so the column names stay available to assistive technology.
776
+ @include media-breakpoint-down(sm) {
777
+ // Cards flow with the page: no sideways scroll, and no maxHeight scroll box (an inline
778
+ // max-height from `maxHeight` has to be overridden, hence !important).
779
+ .table-wrap:has(> .table-ledger.wui-table-stack) {
780
+ overflow: visible;
781
+ max-height: none !important;
782
+ }
783
+ .table-wrap:has(> .table-ledger.wui-table-stack) .table-ledger thead th {
784
+ position: static;
785
+ }
786
+ .table-ledger.wui-table-stack,
787
+ .table-ledger.wui-table-stack > tbody,
788
+ .table-ledger.wui-table-stack > tfoot,
789
+ .table-ledger.wui-table-stack > tbody > tr,
790
+ .table-ledger.wui-table-stack > tfoot > tr {
791
+ display: block;
792
+ width: 100%;
793
+ }
794
+ .table-ledger.wui-table-stack > thead {
795
+ // Block, so overflow:hidden applies; a table-header-group ignores it and its row still
796
+ // widened the page.
797
+ display: block;
798
+ position: absolute;
799
+ width: 1px;
800
+ height: 1px;
801
+ overflow: hidden;
802
+ clip-path: inset(50%);
803
+ white-space: nowrap;
804
+ }
805
+ .table-ledger.wui-table-stack > tbody > tr,
806
+ .table-ledger.wui-table-stack > tfoot > tr {
807
+ position: relative;
808
+ margin-bottom: 12px;
809
+ padding: 12px 16px;
810
+ border: 1px solid var(--color-border);
811
+ border-radius: var(--radius-lg, 12px);
812
+ }
813
+ .table-ledger.wui-table-stack > tbody > tr > td,
814
+ .table-ledger.wui-table-stack > tfoot > tr > td {
815
+ display: flex;
816
+ align-items: center;
817
+ justify-content: space-between;
818
+ gap: 12px;
819
+ height: auto;
820
+ min-height: 0;
821
+ padding: 6px 0;
822
+ border: 0;
823
+ text-align: right;
824
+ // A pinned column has nothing to pin to in a card. The pinned-column selectors outrank this
825
+ // one by design (they must beat every table rule), so the card layout overrides them here.
826
+ position: static !important;
827
+ }
828
+ .table-ledger.wui-table-stack > tbody > tr > td::before,
829
+ .table-ledger.wui-table-stack > tfoot > tr > td::before {
830
+ content: attr(data-label);
831
+ flex: none;
832
+ font-size: 12px;
833
+ font-weight: 500;
834
+ color: var(--color-text-subtle);
835
+ text-align: left;
836
+ }
837
+ // A value takes the space beside its label and wraps inside the card rather than running past
838
+ // its edge (a long email under an avatar did).
839
+ .table-ledger.wui-table-stack > * > tr > td > * {
840
+ min-width: 0;
841
+ overflow-wrap: anywhere;
842
+ }
843
+ .table-ledger.wui-table-stack > tbody > tr > td .u-meta {
844
+ align-items: flex-end;
845
+ }
846
+ // The leading cell is the card's title line: full width, no label.
847
+ .table-ledger.wui-table-stack > * > tr > td:not(.wui-select-cell, .wui-expand-cell):is(:first-child, .wui-select-cell + td, .wui-expand-cell + td) {
848
+ justify-content: flex-start;
849
+ padding: 0 32px 6px 0;
850
+ text-align: left;
851
+ }
852
+ .table-ledger.wui-table-stack > * > tr > td:not(.wui-select-cell, .wui-expand-cell):is(:first-child, .wui-select-cell + td, .wui-expand-cell + td) .u-meta {
853
+ align-items: flex-start;
854
+ }
855
+ .table-ledger.wui-table-stack > * > tr > td:not(.wui-select-cell, .wui-expand-cell):is(:first-child, .wui-select-cell + td, .wui-expand-cell + td)::before {
856
+ content: none;
857
+ }
858
+ // Empty cells (a footer's blank columns) take no line.
859
+ .table-ledger.wui-table-stack > * > tr > td:empty {
860
+ display: none;
861
+ }
862
+ .table-ledger.wui-table-stack > tbody > tr > td.wui-select-cell,
863
+ .table-ledger.wui-table-stack > tbody > tr > td.wui-expand-cell {
864
+ // !important for the same reason as the static rule above: a pinned-column `left` with this
865
+ // `right` would stretch the cell across the card.
866
+ position: absolute !important;
867
+ top: 12px;
868
+ left: auto !important;
869
+ right: 12px;
870
+ width: auto;
871
+ min-width: 0;
872
+ max-width: none;
873
+ padding: 0;
874
+ }
875
+ .table-ledger.wui-table-stack > tbody > tr > td:has(> .u-row-actions) {
876
+ justify-content: flex-end;
877
+ margin-top: 6px;
878
+ padding-top: 10px;
879
+ border-top: 1px solid var(--color-border);
880
+ }
881
+ .table-ledger.wui-table-stack > tbody > tr > td:has(> .u-row-actions)::before {
882
+ content: none;
883
+ }
884
+ // The status bar becomes the card's left edge.
885
+ .table-ledger.wui-table-stack > tbody > tr[data-status] {
886
+ border-left: 3px solid var(--wui-row-status);
887
+ }
888
+ .table-ledger.wui-table-stack > tbody > tr[data-status] > td:first-child {
889
+ box-shadow: none;
890
+ }
891
+ }
892
+
725
893
  // Totals row (AppDataTable column `footer`, or an author <tfoot> on Razor).
726
894
  .table-ledger tfoot td {
727
895
  height: 48px;
@@ -805,6 +805,9 @@ button.step:focus-visible .step-circle {
805
805
  grid-template-columns: repeat(var(--form-cols, 2), minmax(0, 1fr));
806
806
  gap: 16px;
807
807
  align-items: start;
808
+ // In a form row every field fills its column, so a date picker drops its compact standalone
809
+ // width here and lines up with the fields beside it. A .date-w-* class on the field still wins.
810
+ --wui-datepicker-width: 100%;
808
811
  }
809
812
  // Below md, collapse to 1 column.
810
813
  @include media-breakpoint-down(md) {