@genexus/mercury 0.4.5 → 0.4.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/dist/mercury.scss CHANGED
@@ -63,6 +63,20 @@
63
63
  gap: $gap;
64
64
  }
65
65
 
66
+ // - - - - - - - - - - - - - - - - - - - -
67
+ // Ellipsis
68
+ // - - - - - - - - - - - - - - - - - - - -
69
+
70
+ @mixin ellipsis() {
71
+ display: block;
72
+ overflow: hidden;
73
+ text-overflow: ellipsis;
74
+ white-space: nowrap;
75
+ }
76
+ %ellipsis {
77
+ @include ellipsis();
78
+ }
79
+
66
80
  /// Replace `$search` with `$replace` in `$string`
67
81
  /// @param {String} $string - Initial string
68
82
  /// @param {String} $search - Substring to replace
@@ -216,6 +230,20 @@
216
230
  gap: $gap;
217
231
  }
218
232
 
233
+ // - - - - - - - - - - - - - - - - - - - -
234
+ // Ellipsis
235
+ // - - - - - - - - - - - - - - - - - - - -
236
+
237
+ @mixin ellipsis() {
238
+ display: block;
239
+ overflow: hidden;
240
+ text-overflow: ellipsis;
241
+ white-space: nowrap;
242
+ }
243
+ %ellipsis {
244
+ @include ellipsis();
245
+ }
246
+
219
247
 
220
248
  /*----------------------
221
249
  Focus
@@ -272,6 +300,7 @@ Control
272
300
  @mixin control-colors-enabled() {
273
301
  background-color: var(--control__bg-color);
274
302
  color: var(--control__color);
303
+ --ch-placeholder-color: var(--control-placeholder__color);
275
304
  // enabled border color is defined in control-border()
276
305
  }
277
306
  @mixin control-colors-hover() {
@@ -281,6 +310,7 @@ Control
281
310
  --control__bg-color: var(--control__background-color--disabled);
282
311
  --control__border-color: var(--control__border-color--disabled);
283
312
  --control__color: var(--control__color--disabled);
313
+ --ch-placeholder-color: var(--control-placeholder__color--disabled);
284
314
  }
285
315
  @mixin control-colors-error() {
286
316
  --control__border-color: var(--control__border-color--error);
@@ -292,6 +322,13 @@ Control
292
322
  border-color: var(--control__border-color);
293
323
  border-radius: var(--control__border-radius);
294
324
  }
325
+ @mixin control-remove-border() {
326
+ // This resets the border applied
327
+ // (for controls inside the property grid)
328
+ --control__border-width: 0;
329
+ --control__border-color: transparent;
330
+ --control__border-radius: 0;
331
+ }
295
332
  // Font
296
333
  @mixin control-font-weight-regular() {
297
334
  font-weight: var(--control__font-weight--regular);
@@ -560,6 +597,74 @@ Dialog Footer
560
597
  }
561
598
  }
562
599
 
600
+ /*----------------------
601
+ Body Spacing
602
+ ----------------------*/
603
+
604
+ // This custom properties define the block and inline spacing of containers.
605
+ // i.e.: dialog, layout, etc..
606
+
607
+ %spacing-body {
608
+ padding-block: var(--spacing-body-block-start) var(--spacing-body-block-end);
609
+ padding-inline: var(--spacing-body-inline-start)
610
+ var(--spacing-body-inline-end);
611
+ }
612
+
613
+ %spacing-body-block {
614
+ padding-block: var(--spacing-body-block-start) var(--spacing-body-block-end);
615
+ }
616
+ %spacing-body-block-start {
617
+ padding-block-start: var(--spacing-body-block-start);
618
+ }
619
+ %spacing-body-block-end {
620
+ padding-block-end: var(--spacing-body-block-end);
621
+ }
622
+
623
+ %spacing-body-inline {
624
+ padding-inline: var(--spacing-body-inline-start)
625
+ var(--spacing-body-inline-end);
626
+ }
627
+ %spacing-body-inline-start {
628
+ padding-inline-start: var(--spacing-body-inline-start);
629
+ }
630
+ %spacing-body-inline-end {
631
+ padding-inline-end: var(--spacing-body-inline-end);
632
+ }
633
+
634
+ @mixin spacing-body(
635
+ $body-selector: ".spacing-body",
636
+ $body-block-selector: ".spacing-body-block",
637
+ $body-block-start-selector: ".spacing-body-block-start",
638
+ $body-block-end-selector: ".spacing-body-block-end",
639
+ $body-inline-selector: ".spacing-body-inline",
640
+ $body-inline-start-selector: ".spacing-body-inline-start",
641
+ $body-inline-end-selector: ".spacing-body-inline-end"
642
+ ) {
643
+ #{$body-selector} {
644
+ @extend %spacing-body;
645
+ }
646
+ // block
647
+ #{$body-block-selector} {
648
+ @extend %spacing-body-block;
649
+ }
650
+ #{$body-block-start-selector} {
651
+ @extend %spacing-body-block-start;
652
+ }
653
+ #{$body-block-end-selector} {
654
+ @extend %spacing-body-block-end;
655
+ }
656
+ // inline
657
+ #{$body-inline-selector} {
658
+ @extend %spacing-body-inline;
659
+ }
660
+ #{$body-inline-start-selector} {
661
+ @extend %spacing-body-inline-start;
662
+ }
663
+ #{$body-inline-end-selector} {
664
+ @extend %spacing-body-inline-end;
665
+ }
666
+ }
667
+
563
668
 
564
669
  // Resets
565
670
  @mixin typography-reset() {
@@ -679,12 +784,13 @@ Dialog Footer
679
784
  --mer-color__neutral-gray--700: #c0ccd9;
680
785
  --mer-color__neutral-gray--800: #d2ddeb;
681
786
  --mer-color__neutral-gray--900: #e1ecf9;
682
- // 1000 to 1400 do not exist anymore in figma (check with designer)
683
- --mer-color__neutral-gray--1000: #;
684
- --mer-color__neutral-gray--1100: #;
685
- --mer-color__neutral-gray--1200: #;
686
- --mer-color__neutral-gray--1300: #;
687
- --mer-color__neutral-gray--1400: #;
787
+ // 1000 to 1400 do not exist anymore in figma but can not be removed yet
788
+ // because gemini is dependent on this tokens (check with designer)
789
+ --mer-color__neutral-gray--1000: #f8f8f8;
790
+ --mer-color__neutral-gray--1100: #f1f1f1;
791
+ --mer-color__neutral-gray--1200: #e4e4e4;
792
+ --mer-color__neutral-gray--1300: #dedede;
793
+ --mer-color__neutral-gray--1400: #ffffff;
688
794
 
689
795
  // tinted
690
796
  --mer-color__tinted-yellow--5: #ffc96b0d;
@@ -739,33 +845,44 @@ Dialog Footer
739
845
  --mer-color__neutral-gray--700: #242d3c;
740
846
  --mer-color__neutral-gray--800: #181f2a;
741
847
  --mer-color__neutral-gray--900: #11151c;
742
- // 1000 to 1400 do not exist anymore in figma (check with designer)
743
- --mer-color__neutral-gray--1000: #;
744
- --mer-color__neutral-gray--1100: #;
745
- --mer-color__neutral-gray--1200: #;
746
- --mer-color__neutral-gray--1300: #;
747
- --mer-color__neutral-gray--1400: #;
748
-
749
- // tinted
750
- --mer-color__tinted-yellow--5: #ffc96b0d;
751
- --mer-color__tinted-yellow--60: #ffc96b99;
752
- --mer-color__tinted-red--5: #fb7c840d;
753
- --mer-color__tinted-red--60: #fb7c8499;
754
- --mer-color__tinted-green--5: #3fa89b0d;
755
- --mer-color__tinted-green--60: #3fa89b99;
756
- --mer-color__tinted-blue--5: #5ba7ff0d;
757
- --mer-color__tinted-blue--8: #5ba7ff14;
758
- --mer-color__tinted-blue--10: #5ba7ff1a;
759
- --mer-color__tinted-blue--20: #5ba7ff33;
760
- --mer-color__tinted-blue--30: #5ba7ff4d;
761
- --mer-color__tinted-blue--50: #5ba7ff80;
762
- // tinted no opacity // WA
763
- // --mer-color__tinted-blue--5: #1d2838;
764
- // --mer-color__tinted-blue--8: #1f2c3f;
765
- // --mer-color__tinted-blue--10: #1f2e43;
766
- // --mer-color__tinted-blue--20: #293d5c;
767
- // --mer-color__tinted-blue--30: #2e4e72;
768
- // --mer-color__tinted-blue--50: #3c689c;
848
+ // 1000 to 1400 do not exist anymore in figma but can not be removed yet
849
+ // because gemini is dependent on this tokens (check with designer)
850
+ --mer-color__neutral-gray--1000: #1f2225;
851
+ --mer-color__neutral-gray--1100: #24272a;
852
+ --mer-color__neutral-gray--1200: #2d3032;
853
+ --mer-color__neutral-gray--1300: #3b3e40;
854
+ --mer-color__neutral-gray--1400: #2d3134;
855
+
856
+ // tinted (with opacity) this values had to be updated to the no opacity
857
+ // version (see below), because colors with opacity caused some issues when
858
+ // overlapping. Until this is not a definitive edition
859
+
860
+ // --mer-color__tinted-yellow--5: #ffc96b0d;
861
+ // --mer-color__tinted-yellow--60: #ffc96b99;
862
+ // --mer-color__tinted-red--5: #fb7c840d;
863
+ // --mer-color__tinted-red--60: #fb7c8499;
864
+ // --mer-color__tinted-green--5: #3fa89b0d;
865
+ // --mer-color__tinted-green--60: #3fa89b99;
866
+ // --mer-color__tinted-blue--5: #5ba7ff0d;
867
+ // --mer-color__tinted-blue--8: #5ba7ff14;
868
+ // --mer-color__tinted-blue--10: #5ba7ff1a;
869
+ // --mer-color__tinted-blue--20: #5ba7ff33;
870
+ // --mer-color__tinted-blue--30: #5ba7ff4d;
871
+ // --mer-color__tinted-blue--50: #5ba7ff80;
872
+
873
+ // tinted (no opacity) // tints with opacity were giving some issues
874
+ --mer-color__tinted-yellow--5: #282a2d;
875
+ --mer-color__tinted-yellow--60: #ad8a53;
876
+ --mer-color__tinted-red--5: #29252f;
877
+ --mer-color__tinted-red--60: #aa5962;
878
+ --mer-color__tinted-green--5: #1c2830;
879
+ --mer-color__tinted-green--60: #317571;
880
+ --mer-color__tinted-blue--5: #1d2838;
881
+ --mer-color__tinted-blue--8: #1f2c3f;
882
+ --mer-color__tinted-blue--10: #1f2e43;
883
+ --mer-color__tinted-blue--20: #293d5c;
884
+ --mer-color__tinted-blue--30: #2e4e72;
885
+ --mer-color__tinted-blue--50: #3c689c;
769
886
 
770
887
  // message
771
888
  --mer-color__message-green--100: #3fa89b;
@@ -965,9 +1082,9 @@ Dialog Footer
965
1082
 
966
1083
  // - - - - - - - Placeholder - - - - - - -
967
1084
 
968
- --control-placeholder__color: var(
969
- --ch-placeholder-color,
970
- var(--mer-text__neutral)
1085
+ --control-placeholder__color: var(--ch-placeholder-color);
1086
+ --control-placeholder__color--disabled: var(
1087
+ --mer-form-input__color--disabled
971
1088
  );
972
1089
  --control-placeholder__font-style: italic;
973
1090
 
@@ -1030,7 +1147,7 @@ Dialog Footer
1030
1147
  // field
1031
1148
  --field__row-gap: var(--mer-spacing--xs);
1032
1149
  --field__column-gap: var(--mer-spacing--md);
1033
- --field-inline-label__margin-block-start: var(--mer-spacing--2xs);
1150
+ --field-inline-label__margin-block-start: 6px; // 6px is the proper value, but it does not exists on the mercury ds.
1034
1151
  }
1035
1152
 
1036
1153
  @mixin semantic-icon() {
@@ -1279,12 +1396,6 @@ Dialog Footer
1279
1396
  }
1280
1397
 
1281
1398
 
1282
- // Tokens Other
1283
- :root {
1284
- --ch-placeholder-color: var(--mer-text__neutral);
1285
- }
1286
-
1287
-
1288
1399
  // Base classes
1289
1400
  @mixin button-common-styles() {
1290
1401
  display: inline-grid;
@@ -1350,6 +1461,20 @@ Dialog Footer
1350
1461
  gap: $gap;
1351
1462
  }
1352
1463
 
1464
+ // - - - - - - - - - - - - - - - - - - - -
1465
+ // Ellipsis
1466
+ // - - - - - - - - - - - - - - - - - - - -
1467
+
1468
+ @mixin ellipsis() {
1469
+ display: block;
1470
+ overflow: hidden;
1471
+ text-overflow: ellipsis;
1472
+ white-space: nowrap;
1473
+ }
1474
+ %ellipsis {
1475
+ @include ellipsis();
1476
+ }
1477
+
1353
1478
 
1354
1479
  /*----------------------
1355
1480
  Focus
@@ -1406,6 +1531,7 @@ Control
1406
1531
  @mixin control-colors-enabled() {
1407
1532
  background-color: var(--control__bg-color);
1408
1533
  color: var(--control__color);
1534
+ --ch-placeholder-color: var(--control-placeholder__color);
1409
1535
  // enabled border color is defined in control-border()
1410
1536
  }
1411
1537
  @mixin control-colors-hover() {
@@ -1415,6 +1541,7 @@ Control
1415
1541
  --control__bg-color: var(--control__background-color--disabled);
1416
1542
  --control__border-color: var(--control__border-color--disabled);
1417
1543
  --control__color: var(--control__color--disabled);
1544
+ --ch-placeholder-color: var(--control-placeholder__color--disabled);
1418
1545
  }
1419
1546
  @mixin control-colors-error() {
1420
1547
  --control__border-color: var(--control__border-color--error);
@@ -1426,6 +1553,13 @@ Control
1426
1553
  border-color: var(--control__border-color);
1427
1554
  border-radius: var(--control__border-radius);
1428
1555
  }
1556
+ @mixin control-remove-border() {
1557
+ // This resets the border applied
1558
+ // (for controls inside the property grid)
1559
+ --control__border-width: 0;
1560
+ --control__border-color: transparent;
1561
+ --control__border-radius: 0;
1562
+ }
1429
1563
  // Font
1430
1564
  @mixin control-font-weight-regular() {
1431
1565
  font-weight: var(--control__font-weight--regular);
@@ -1694,6 +1828,74 @@ Dialog Footer
1694
1828
  }
1695
1829
  }
1696
1830
 
1831
+ /*----------------------
1832
+ Body Spacing
1833
+ ----------------------*/
1834
+
1835
+ // This custom properties define the block and inline spacing of containers.
1836
+ // i.e.: dialog, layout, etc..
1837
+
1838
+ %spacing-body {
1839
+ padding-block: var(--spacing-body-block-start) var(--spacing-body-block-end);
1840
+ padding-inline: var(--spacing-body-inline-start)
1841
+ var(--spacing-body-inline-end);
1842
+ }
1843
+
1844
+ %spacing-body-block {
1845
+ padding-block: var(--spacing-body-block-start) var(--spacing-body-block-end);
1846
+ }
1847
+ %spacing-body-block-start {
1848
+ padding-block-start: var(--spacing-body-block-start);
1849
+ }
1850
+ %spacing-body-block-end {
1851
+ padding-block-end: var(--spacing-body-block-end);
1852
+ }
1853
+
1854
+ %spacing-body-inline {
1855
+ padding-inline: var(--spacing-body-inline-start)
1856
+ var(--spacing-body-inline-end);
1857
+ }
1858
+ %spacing-body-inline-start {
1859
+ padding-inline-start: var(--spacing-body-inline-start);
1860
+ }
1861
+ %spacing-body-inline-end {
1862
+ padding-inline-end: var(--spacing-body-inline-end);
1863
+ }
1864
+
1865
+ @mixin spacing-body(
1866
+ $body-selector: ".spacing-body",
1867
+ $body-block-selector: ".spacing-body-block",
1868
+ $body-block-start-selector: ".spacing-body-block-start",
1869
+ $body-block-end-selector: ".spacing-body-block-end",
1870
+ $body-inline-selector: ".spacing-body-inline",
1871
+ $body-inline-start-selector: ".spacing-body-inline-start",
1872
+ $body-inline-end-selector: ".spacing-body-inline-end"
1873
+ ) {
1874
+ #{$body-selector} {
1875
+ @extend %spacing-body;
1876
+ }
1877
+ // block
1878
+ #{$body-block-selector} {
1879
+ @extend %spacing-body-block;
1880
+ }
1881
+ #{$body-block-start-selector} {
1882
+ @extend %spacing-body-block-start;
1883
+ }
1884
+ #{$body-block-end-selector} {
1885
+ @extend %spacing-body-block-end;
1886
+ }
1887
+ // inline
1888
+ #{$body-inline-selector} {
1889
+ @extend %spacing-body-inline;
1890
+ }
1891
+ #{$body-inline-start-selector} {
1892
+ @extend %spacing-body-inline-start;
1893
+ }
1894
+ #{$body-inline-end-selector} {
1895
+ @extend %spacing-body-inline-end;
1896
+ }
1897
+ }
1898
+
1697
1899
 
1698
1900
  /// @group Label
1699
1901
  /// @param {String} $label-selector [".label"] -
@@ -1968,6 +2170,10 @@ Dialog Footer
1968
2170
  display: grid;
1969
2171
 
1970
2172
  &-group {
2173
+ --spacing-body-block-start: var(--mer-spacing--lg);
2174
+ --spacing-body-block-end: var(--mer-spacing--lg);
2175
+ --spacing-body-inline-start: var(--mer-spacing--md);
2176
+ --spacing-body-inline-end: var(--mer-spacing--md);
1971
2177
  display: grid;
1972
2178
  row-gap: var(--field-group__row-gap);
1973
2179
  column-gap: var(--field-group__column-gap);
@@ -2000,17 +2206,17 @@ Dialog Footer
2000
2206
  /// @param {String} $field-selector [".field"] -
2001
2207
  /// @param {String} $field-block-selector [".field-block"] -
2002
2208
  /// @param {String} $field-inline-selector [".field-inline"] -
2003
- /// @param {String} $field-inline__label-selector [".field-inline > .label"] -
2209
+ /// @param {String} $field-inline__label-selector [".field-inline .label"] -
2004
2210
  /// @param {String} $field-group-cols-2-selector [".field-group-cols-2"] -
2005
- /// @param {String} $field-group-cols-2__label-selector [".field-group-cols-2 > .label"] -
2211
+ /// @param {String} $field-group-cols-2__label-selector [".field-group-cols-2 .label"] -
2006
2212
  @mixin field(
2007
2213
  $field-group-selector: ".field-group",
2008
2214
  $field-selector: ".field",
2009
2215
  $field-block-selector: ".field-block",
2010
2216
  $field-inline-selector: ".field-inline",
2011
- $field-inline__label-selector: ".field-inline > .label",
2217
+ $field-inline__label-selector: ".field-inline .label",
2012
2218
  $field-group-cols-2-selector: ".field-group-cols-2",
2013
- $field-group-cols-2__label-selector: ".field-group-cols-2 > .label"
2219
+ $field-group-cols-2__label-selector: ".field-group-cols-2 .label"
2014
2220
  ) {
2015
2221
  #{$field-group-selector} {
2016
2222
  @extend %field-group;
@@ -2041,89 +2247,6 @@ Dialog Footer
2041
2247
  }
2042
2248
  }
2043
2249
 
2044
- %form-input {
2045
- @include control-colors-enabled();
2046
- @include control-border();
2047
- @include control-font-weight-regular();
2048
- @include control-height-regular();
2049
- @include control-padding-inline();
2050
-
2051
- &--focus {
2052
- @include focus-border();
2053
- }
2054
-
2055
- &--hover {
2056
- @include control-colors-hover();
2057
- }
2058
-
2059
- &--disabled {
2060
- @include control-colors-disabled();
2061
- }
2062
-
2063
- &--disabled-placeholder {
2064
- --mer-form-input__color--placeholder: var(
2065
- --mer-form-input__color--disabled
2066
- );
2067
- }
2068
-
2069
- &--error {
2070
- border-color: var(--mer-form-input__border-color--error);
2071
- }
2072
- }
2073
-
2074
- %form-input__placeholder {
2075
- font-style: italic;
2076
- color: var(--mer-form-input__color--placeholder);
2077
- }
2078
-
2079
- /// @group Form
2080
- /// @param {String} $selector [".form-input"] -
2081
- /// @param {Boolean} $add--disabled [true] -
2082
- /// @param {Boolean} $add--placeholder [true] -
2083
- /// @param {Boolean} $add--placeholder-var [true] -
2084
- /// @param {Boolean} $add--error [true] -
2085
- @mixin form-input(
2086
- $selector: ".form-input",
2087
- $add--disabled: true,
2088
- $add--placeholder: true,
2089
- $add--placeholder-var: false,
2090
- $add--error: true
2091
- ) {
2092
- #{$selector} {
2093
- @extend %form-input;
2094
-
2095
- &:hover {
2096
- @extend %form-input--hover;
2097
- }
2098
-
2099
- @if $add--placeholder-var {
2100
- }
2101
-
2102
- @if $add--placeholder {
2103
- &::placeholder {
2104
- @include control-placeholder();
2105
- }
2106
- }
2107
-
2108
- &:focus {
2109
- @extend %form-input--focus;
2110
- }
2111
-
2112
- @if $add--disabled {
2113
- &:disabled,
2114
- &--disabled {
2115
- @extend %form-input--disabled;
2116
- }
2117
- }
2118
-
2119
- @if $add--error {
2120
- &--error {
2121
- @include control-colors-error();
2122
- }
2123
- }
2124
- }
2125
- }
2126
-
2127
2250
  // - - - - - - - - - - - - - - - - - - - -
2128
2251
  // Icon Sizes
2129
2252
  // - - - - - - - - - - - - - - - - - - - -
@@ -2160,12 +2283,12 @@ Dialog Footer
2160
2283
  }
2161
2284
 
2162
2285
  %layout {
2163
- --layout__padding-block: var(--mer-spacing--md);
2164
- --layout__padding-inline: var(--mer-spacing--lg);
2286
+ --spacing-body-block-start: var(--mer-spacing--md);
2287
+ --spacing-body-block-end: var(--mer-spacing--md);
2288
+ --spacing-body-inline-start: var(--mer-spacing--lg);
2289
+ --spacing-body-inline-end: var(--mer-spacing--lg);
2165
2290
 
2166
2291
  display: grid;
2167
- padding-block: var(--layout__padding-block);
2168
- padding-inline: var(--layout__padding-inline);
2169
2292
  gap: var(--mer-spacing--md);
2170
2293
  &__panel {
2171
2294
  display: grid;
@@ -2203,19 +2326,6 @@ Dialog Footer
2203
2326
  grid-template-rows: 1fr;
2204
2327
  grid-template-columns: 2fr 1fr;
2205
2328
  }
2206
-
2207
- &--no-padding {
2208
- --layout__padding-block: 0;
2209
- --layout__padding-inline: 0;
2210
- }
2211
-
2212
- &--no-block-padding {
2213
- --layout__padding-block: 0;
2214
- }
2215
-
2216
- &--no-inline-padding {
2217
- --layout__padding-inline: 0;
2218
- }
2219
2329
  }
2220
2330
 
2221
2331
  /// @group Layout
@@ -2227,9 +2337,6 @@ Dialog Footer
2227
2337
  /// @param {String} $layout--cols-4-selector [".layout--cols-4"] -
2228
2338
  /// @param {String} $layout--cols-1-2-selector [".layout--cols-1-2"] -
2229
2339
  /// @param {String} $layout--cols-2-1-selector [".layout--cols-2-1"] -
2230
- /// @param {String} $layout--no-padding-selector [".layout--no-padding"] -
2231
- /// @param {String} $layout--no-block-padding-selector [".layout--no-block-padding"] -
2232
- /// @param {String} $layout--no-inline-padding-selector [".layout--no-inline-padding"] -
2233
2340
  @mixin layout(
2234
2341
  $layout-selector: ".layout",
2235
2342
  $panel-selector: ".layout__panel",
@@ -2238,10 +2345,7 @@ Dialog Footer
2238
2345
  $layout--cols-3-selector: ".layout--cols-3",
2239
2346
  $layout--cols-4-selector: ".layout--cols-4",
2240
2347
  $layout--cols-1-2-selector: ".layout--cols-1-2",
2241
- $layout--cols-2-1-selector: ".layout--cols-2-1",
2242
- $layout--no-padding-selector: ".layout--no-padding",
2243
- $layout--no-block-padding-selector: ".layout--no-block-padding",
2244
- $layout--no-inline-padding-selector: ".layout--no-inline-padding"
2348
+ $layout--cols-2-1-selector: ".layout--cols-2-1"
2245
2349
  ) {
2246
2350
  #{$layout-selector} {
2247
2351
  @extend %layout;
@@ -2274,18 +2378,6 @@ Dialog Footer
2274
2378
  #{$layout--cols-2-1-selector} {
2275
2379
  @extend %layout--cols-2-1;
2276
2380
  }
2277
-
2278
- #{$layout--no-padding-selector} {
2279
- @extend %layout--no-padding;
2280
- }
2281
-
2282
- #{$layout--no-block-padding-selector} {
2283
- @extend %layout--no-block-padding;
2284
- }
2285
-
2286
- #{$layout--no-inline-padding-selector} {
2287
- @extend %layout--no-inline-padding;
2288
- }
2289
2381
  }
2290
2382
 
2291
2383
  @mixin heading-tokens() {
@@ -2347,7 +2439,10 @@ Dialog Footer
2347
2439
  }
2348
2440
 
2349
2441
 
2350
- // heading
2442
+ /*----------------------
2443
+ Heading
2444
+ ----------------------*/
2445
+
2351
2446
  %heading {
2352
2447
  &-base {
2353
2448
  @include heading-tokens();
@@ -2499,6 +2594,18 @@ Dialog Footer
2499
2594
  }
2500
2595
  }
2501
2596
 
2597
+ /*-------------------------------------
2598
+ Text States e.g.: for the property-grid
2599
+ -------------------------------------*/
2600
+
2601
+ %text-edited {
2602
+ font-weight: var(--mer-font__weight--bold);
2603
+ }
2604
+ %text-readonly {
2605
+ font-style: italic;
2606
+ color: var(--item__color--disabled);
2607
+ }
2608
+
2502
2609
 
2503
2610
  // Icons
2504
2611
  @mixin button-tokens-primary() {
@@ -3062,6 +3169,20 @@ Dialog Footer
3062
3169
  gap: $gap;
3063
3170
  }
3064
3171
 
3172
+ // - - - - - - - - - - - - - - - - - - - -
3173
+ // Ellipsis
3174
+ // - - - - - - - - - - - - - - - - - - - -
3175
+
3176
+ @mixin ellipsis() {
3177
+ display: block;
3178
+ overflow: hidden;
3179
+ text-overflow: ellipsis;
3180
+ white-space: nowrap;
3181
+ }
3182
+ %ellipsis {
3183
+ @include ellipsis();
3184
+ }
3185
+
3065
3186
 
3066
3187
  /*----------------------
3067
3188
  Focus
@@ -3118,6 +3239,7 @@ Control
3118
3239
  @mixin control-colors-enabled() {
3119
3240
  background-color: var(--control__bg-color);
3120
3241
  color: var(--control__color);
3242
+ --ch-placeholder-color: var(--control-placeholder__color);
3121
3243
  // enabled border color is defined in control-border()
3122
3244
  }
3123
3245
  @mixin control-colors-hover() {
@@ -3127,6 +3249,7 @@ Control
3127
3249
  --control__bg-color: var(--control__background-color--disabled);
3128
3250
  --control__border-color: var(--control__border-color--disabled);
3129
3251
  --control__color: var(--control__color--disabled);
3252
+ --ch-placeholder-color: var(--control-placeholder__color--disabled);
3130
3253
  }
3131
3254
  @mixin control-colors-error() {
3132
3255
  --control__border-color: var(--control__border-color--error);
@@ -3138,6 +3261,13 @@ Control
3138
3261
  border-color: var(--control__border-color);
3139
3262
  border-radius: var(--control__border-radius);
3140
3263
  }
3264
+ @mixin control-remove-border() {
3265
+ // This resets the border applied
3266
+ // (for controls inside the property grid)
3267
+ --control__border-width: 0;
3268
+ --control__border-color: transparent;
3269
+ --control__border-radius: 0;
3270
+ }
3141
3271
  // Font
3142
3272
  @mixin control-font-weight-regular() {
3143
3273
  font-weight: var(--control__font-weight--regular);
@@ -3406,8 +3536,72 @@ Dialog Footer
3406
3536
  }
3407
3537
  }
3408
3538
 
3409
- :root {
3410
- --ch-placeholder-color: var(--mer-text__neutral);
3539
+ /*----------------------
3540
+ Body Spacing
3541
+ ----------------------*/
3542
+
3543
+ // This custom properties define the block and inline spacing of containers.
3544
+ // i.e.: dialog, layout, etc..
3545
+
3546
+ %spacing-body {
3547
+ padding-block: var(--spacing-body-block-start) var(--spacing-body-block-end);
3548
+ padding-inline: var(--spacing-body-inline-start)
3549
+ var(--spacing-body-inline-end);
3550
+ }
3551
+
3552
+ %spacing-body-block {
3553
+ padding-block: var(--spacing-body-block-start) var(--spacing-body-block-end);
3554
+ }
3555
+ %spacing-body-block-start {
3556
+ padding-block-start: var(--spacing-body-block-start);
3557
+ }
3558
+ %spacing-body-block-end {
3559
+ padding-block-end: var(--spacing-body-block-end);
3560
+ }
3561
+
3562
+ %spacing-body-inline {
3563
+ padding-inline: var(--spacing-body-inline-start)
3564
+ var(--spacing-body-inline-end);
3565
+ }
3566
+ %spacing-body-inline-start {
3567
+ padding-inline-start: var(--spacing-body-inline-start);
3568
+ }
3569
+ %spacing-body-inline-end {
3570
+ padding-inline-end: var(--spacing-body-inline-end);
3571
+ }
3572
+
3573
+ @mixin spacing-body(
3574
+ $body-selector: ".spacing-body",
3575
+ $body-block-selector: ".spacing-body-block",
3576
+ $body-block-start-selector: ".spacing-body-block-start",
3577
+ $body-block-end-selector: ".spacing-body-block-end",
3578
+ $body-inline-selector: ".spacing-body-inline",
3579
+ $body-inline-start-selector: ".spacing-body-inline-start",
3580
+ $body-inline-end-selector: ".spacing-body-inline-end"
3581
+ ) {
3582
+ #{$body-selector} {
3583
+ @extend %spacing-body;
3584
+ }
3585
+ // block
3586
+ #{$body-block-selector} {
3587
+ @extend %spacing-body-block;
3588
+ }
3589
+ #{$body-block-start-selector} {
3590
+ @extend %spacing-body-block-start;
3591
+ }
3592
+ #{$body-block-end-selector} {
3593
+ @extend %spacing-body-block-end;
3594
+ }
3595
+ // inline
3596
+ #{$body-inline-selector} {
3597
+ @extend %spacing-body-inline;
3598
+ }
3599
+ #{$body-inline-start-selector} {
3600
+ @extend %spacing-body-inline-start;
3601
+ }
3602
+ #{$body-inline-end-selector} {
3603
+ @extend %spacing-body-inline-end;
3604
+ }
3411
3605
  }
3412
3606
 
3413
3607
 
@@ -3583,6 +3777,10 @@ Dialog Footer
3583
3777
  }
3584
3778
 
3585
3779
  %dialog {
3780
+ --spacing-body-block-start: var(--mer-spacing--lg);
3781
+ --spacing-body-block-end: var(--mer-spacing--lg);
3782
+ --spacing-body-inline-start: var(--mer-spacing--md);
3783
+ --spacing-body-inline-end: var(--mer-spacing--md);
3586
3784
  --ch-dialog-max-inline-size: 800px;
3587
3785
  background-color: var(--mer-color__elevation--01);
3588
3786
  box-shadow: var(--mer-box-shadow--01);
@@ -3613,8 +3811,6 @@ Dialog Footer
3613
3811
  }
3614
3812
 
3615
3813
  &__content {
3616
- padding-block: var(--mer-spacing--lg);
3617
- padding-inline: var(--mer-spacing--md);
3618
3814
  overflow: auto;
3619
3815
  }
3620
3816
 
@@ -3783,6 +3979,68 @@ Dialog Footer
3783
3979
  }
3784
3980
  }
3785
3981
 
3982
+ %form-input {
3983
+ // ch-chameleon custom vars (do not edit their names)
3984
+ // --ch-edit-auto-fill-background-color: var(); not defined by design yet
3985
+ --ch-edit-gap: var(--control__icon-gap);
3986
+ --ch-edit__image-size: var(--mer-icon__box--md);
3987
+
3988
+ @include control-colors-enabled();
3989
+ @include control-border();
3990
+ @include control-font-weight-regular();
3991
+ @include control-height-regular();
3992
+ @include control-padding-inline();
3993
+
3994
+ &--focus {
3995
+ @include focus-border();
3996
+ }
3997
+
3998
+ &--hover {
3999
+ @include control-colors-hover();
4000
+ }
4001
+
4002
+ &--disabled {
4003
+ @include control-colors-disabled();
4004
+ }
4005
+ }
4006
+
4007
+ /// @group Form
4008
+ /// @param {String} $selector [".form-input"] -
4009
+ /// @param {String} $error-selector [".form-input-error"] -
4010
+ /// @param {Boolean} $add--disabled [true] -
4011
+ /// @param {Boolean} $add--error [true] -
4012
+ @mixin form-input(
4013
+ $selector: ".form-input",
4014
+ $error-selector: ".form-input-error",
4015
+ $add--disabled: true,
4016
+ $add--error: true,
4017
+ $add--placeholder: true
4018
+ ) {
4019
+ #{$selector} {
4020
+ @extend %form-input;
4021
+
4022
+ &:hover {
4023
+ @extend %form-input--hover;
4024
+ }
4025
+
4026
+ &:focus {
4027
+ @extend %form-input--focus;
4028
+ }
4029
+
4030
+ @if $add--disabled {
4031
+ &:disabled {
4032
+ @extend %form-input--disabled;
4033
+ }
4034
+ }
4035
+ }
4036
+
4037
+ @if $add--error {
4038
+ #{$error-selector} {
4039
+ @include control-colors-error();
4040
+ }
4041
+ }
4042
+ }
4043
+
3786
4044
  %list-box {
3787
4045
  --ch-action-list-group__expandable-button-size: 30px;
3788
4046
  // --ch-action-list-group__expandable-button-image-size: calc(100% - 4px);
@@ -3960,6 +4218,460 @@ Dialog Footer
3960
4218
  }
3961
4219
  }
3962
4220
 
4221
+ // - - - - - - - - - - - - - - - - - - - -
4222
+ // ch-property-grid
4223
+ // - - - - - - - - - - - - - - - - - - - -
4224
+
4225
+ %property-grid {
4226
+ // shared properties
4227
+ &__property,
4228
+ &__value {
4229
+ align-items: center;
4230
+ }
4231
+
4232
+ &__property {
4233
+ &--readonly {
4234
+ @extend %text-readonly;
4235
+ }
4236
+ }
4237
+ &__value {
4238
+ @include control-remove-border();
4239
+ @extend %ellipsis;
4240
+
4241
+ &--readonly {
4242
+ @extend %text-readonly;
4243
+ }
4244
+ &--edited {
4245
+ @extend %text-edited;
4246
+ }
4247
+ &--editing {
4248
+ display: grid;
4249
+ padding: 0;
4250
+ }
4251
+ }
4252
+
4253
+ &-column-set {
4254
+ display: none; // Property grid should not display the column-set by design
4255
+ }
4256
+ }
4257
+
4258
+ /// @group Grid
4259
+ // ch-property-grid
4260
+ /// @param {String} $property-grid-selector [".property-grid"] -
4261
+ /// @param {String} $property-grid__main-selector [".property-grid::part(main)"] -
4262
+ // ch-property-grid-column-set
4263
+ /// @param {String} $property-grid-column-set [".property-grid-column-set"] -
4264
+ // ch-property-grid-column
4265
+ /// @param {String} $property-grid-column__bar-selector [".property-grid-column::part(bar)"] -
4266
+ /// @param {String} $property-grid-column__bar-resize-split-selector [".property-grid-column::part(bar-resize-split)"] -
4267
+ /// @param {String} $property-grid-column__selector-label-selector [".property-grid-column::part(selector-label)"] -
4268
+ /// @param {String} $property-grid-column__selector-selector [".property-grid-column::part(selector)"] -
4269
+ /// @param {String} $property-grid-column__selector--checked-selector [".property-grid-column::part(selector checked)"] -
4270
+ /// @param {String} $property-grid-column__selector--indeterminate-selector [".property-grid-column::part(selector indeterminate)"] -
4271
+ // ch-property-grid-row
4272
+ /// @param {String} $property-grid-row-selector [".property-grid-row"] -
4273
+ /// @param {String} $property-grid-row--focused-selector [".property-grid-row[focused]"] -
4274
+ /// @param {String} $property-grid-row--highlighted-selector [".property-grid-row[highlighted]"] -
4275
+ /// @param {String} $property-grid-row--selected-selector [".property-grid-row[selected]"] -
4276
+ /// @param {String} $property-grid-row--dragging-selector [".property-grid-row[dragging]"] -
4277
+ /// @param {String} $property-grid-row--highlighted__cell-selector [".property-grid-row[highlighted] > .property-grid-cell"] -
4278
+ // ch-property-grid-row > cell
4279
+ /// @param {String} $property-grid-row--selected__cell-selector [".property-grid-row[selected] > .property-grid-cell"] -
4280
+ // ch-property-grid-rowset
4281
+ /// @param {String} $property-grid-rowset-selector [".property-grid-rowset"] -
4282
+ /// @param {String} $property-grid-rowset--collapsed__legend-selector [".property-grid-rowset[collapsed] > .property-grid-rowset-legend"] -
4283
+ // ch-property-grid-rowset-legend
4284
+ /// @param {String} $property-grid-rowset-legend-selector [".property-grid-rowset-legend"] -
4285
+ /// @param {String} $property-grid-rowset-legend__caret-selector--collapsed [".property-grid-rowset[collapsed] > .property-grid-rowset-legend::part(caret)"] -
4286
+ /// @param {String} $property-grid-rowset-legend__caret-selector--expanded [".property-grid-rowset > .property-grid-rowset-legend::part(caret)"] -
4287
+ /// @param {String} $property-grid-rowset-legend__selector-label-selector [".property-grid-rowset-legend::part(selector-label)"] -
4288
+ /// @param {String} $property-grid-rowset-legend__selector-selector [".property-grid-rowset-legend::part(selector)"] -
4289
+ /// @param {String} $property-grid-rowset-legend__icon-selector [".property-grid-rowset-legend::part(icon)"] -
4290
+ // ch-property-grid-cell
4291
+ /// @param {String} $property-grid-cell-selector [".property-grid-cell"] -
4292
+ /// @param {String} $property-grid-cell--focused-selector [".property-grid-cell[focused]"] -
4293
+ /// @param {String} $property-grid-cell--selected-selector [".property-grid-cell[selected]"] -
4294
+ /// @param {String} $property-grid-cell__selector-label-selector [".property-grid-cell::part(selector-label)"] -
4295
+ /// @param {String} $property-grid-cell__selector-selector [".property-grid-cell::part(selector)"] -
4296
+ /// @param {String} $property-grid-cell__selector--checked-selector [".property-grid-cell::part(selector checked)"] -
4297
+ // ch-property-grid-cell (icons)
4298
+ /// @param {String} $property-grid-cell__actions-icon-selector [".property-grid-cell::part(actions-icon)"] -
4299
+ /// @param {String} $property-grid-cell__caret-icon-selector--collapsed [".property-grid-row:is( [collapsed], [leaf="false"]:not(:has(> .property-grid-rowset)) ) > .property-grid-cell::part(caret)"] -
4300
+ /// @param {String} $property-grid-cell__caret-icon-selector--expanded [".property-grid-row > .property-grid-cell::part(caret)"] -
4301
+ /// @param {String} $property-grid-cell__drag-icon-selector [".property-grid-cell::part(drag-icon)"] -
4302
+ /// @param {String} $property-grid-cell__node-icon-selector [".property-grid-row:has(> .property-grid-rowset) > .property-grid-cell::part(node-icon)"] -
4303
+ /// @param {String} $property-grid-cell__node-leaf-icon-selector [".property-grid-cell::part(node-icon)"] -
4304
+ // row-actions
4305
+ /// @param {String} $property-grid-row-actions-selector [".property-grid-row-actions"] -
4306
+ /// @param {String} $property-grid-row-actions__window-selector [".property-grid-row-actions::part(window)"] -
4307
+ /// @param {String} $property-grid-row-actions__main-selector [".property-grid-row-actions::part(main)"] -
4308
+ @mixin property-grid(
4309
+ // ch-property-grid
4310
+ $property-grid-selector: ".property-grid",
4311
+ $property-grid__main-selector: ".property-grid::part(main)",
4312
+ // ch-property-grid-column-set
4313
+ $property-grid-column-set: ".property-grid-column-set",
4314
+ // ch-property-grid-column
4315
+ $property-grid-column__bar-selector: ".property-grid-column::part(bar)",
4316
+ $property-grid-column__bar-resize-split-selector:
4317
+ ".property-grid-column::part(bar-resize-split)",
4318
+ $property-grid-column__selector-label-selector:
4319
+ ".property-grid-column::part(selector-label)",
4320
+ $property-grid-column__selector-selector:
4321
+ ".property-grid-column::part(selector)",
4322
+ $property-grid-column__selector--checked-selector:
4323
+ ".property-grid-column::part(selector checked)",
4324
+ $property-grid-column__selector--indeterminate-selector:
4325
+ ".property-grid-column::part(selector indeterminate)",
4326
+ // ch-property-grid-row
4327
+ $property-grid-row-selector: ".property-grid-row",
4328
+ // ch-property-grid-row
4329
+ // interaction states
4330
+ $property-grid-row--focused-selector: ".property-grid-row[focused]",
4331
+ $property-grid-row--highlighted-selector: ".property-grid-row[highlighted]",
4332
+ $property-grid-row--selected-selector: ".property-grid-row[selected]",
4333
+ $property-grid-row--dragging-selector: ".property-grid-row[dragging]",
4334
+ $property-grid-row--highlighted__cell-selector:
4335
+ ".property-grid-row[highlighted] > .property-grid-cell",
4336
+ $property-grid-row--selected__cell-selector:
4337
+ ".property-grid-row[selected] > .property-grid-cell",
4338
+ // functional states (properties and values)
4339
+ $property-grid__property-selector:
4340
+ ".property-grid-row > .property-grid-cell:nth-child(1)",
4341
+ $property-grid__value-selector:
4342
+ ".property-grid-row > .property-grid-cell:nth-child(2)",
4343
+ $property-grid__property--readonly-selector:
4344
+ ".property-grid-property-readonly > .property-grid-cell:nth-child(1)",
4345
+ $property-grid__value--readonly-selector:
4346
+ ".property-grid-value-readonly > .property-grid-cell:nth-child(2)",
4347
+ $property-grid__value--edited-selector:
4348
+ ".property-grid-value-edited > .property-grid-cell:nth-child(2)",
4349
+ $property-grid__value--editing-selector:
4350
+ ".property-grid-value-editing > .property-grid-cell:nth-child(2)",
4351
+
4352
+ // ch-property-grid-rowset
4353
+ $property-grid-rowset-selector: ".property-grid-rowset",
4354
+ $property-grid-rowset--collapsed__legend-selector:
4355
+ ".property-grid-rowset[collapsed] > .property-grid-rowset-legend",
4356
+ // ch-property-grid-rowset-legend
4357
+ $property-grid-rowset-legend-selector: ".property-grid-rowset-legend",
4358
+ $property-grid-rowset-legend__caret-selector--collapsed:
4359
+ ".property-grid-rowset[collapsed] > .property-grid-rowset-legend::part(caret)",
4360
+ $property-grid-rowset-legend__caret-selector--expanded:
4361
+ ".property-grid-rowset > .property-grid-rowset-legend::part(caret)",
4362
+ $property-grid-rowset-legend__selector-label-selector:
4363
+ ".property-grid-rowset-legend::part(selector-label)",
4364
+ $property-grid-rowset-legend__selector-selector:
4365
+ ".property-grid-rowset-legend::part(selector)",
4366
+ $property-grid-rowset-legend__icon-selector:
4367
+ ".property-grid-rowset-legend::part(icon)",
4368
+ // ch-property-grid-cell
4369
+ $property-grid-cell-selector: ".property-grid-cell",
4370
+ $property-grid-cell--focused-selector: ".property-grid-cell[focused]",
4371
+ $property-grid-cell--selected-selector: ".property-grid-cell[selected]",
4372
+ $property-grid-cell__selector-label-selector:
4373
+ ".property-grid-cell::part(selector-label)",
4374
+ $property-grid-cell__selector-selector: ".property-grid-cell::part(selector)",
4375
+ $property-grid-cell__selector--checked-selector:
4376
+ ".property-grid-cell::part(selector checked)",
4377
+ // ch-property-grid-cell (icons)
4378
+ $property-grid-cell__actions-icon-selector:
4379
+ ".property-grid-cell::part(actions-icon)",
4380
+ $property-grid-cell__caret-icon-selector--collapsed:
4381
+ ".property-grid-row:is( [collapsed], [leaf='false']:not(:has(> .property-grid-rowset)) ) > .property-grid-cell::part(caret)",
4382
+ $property-grid-cell__caret-icon-selector--expanded:
4383
+ ".property-grid-cell::part(caret)",
4384
+ $property-grid-cell__drag-icon-selector:
4385
+ ".property-grid-cell::part(drag-icon)",
4386
+ $property-grid-cell__node-icon-selector:
4387
+ ".property-grid-row:has(> .property-grid-rowset) > .property-grid-cell::part(node-icon)",
4388
+ $property-grid-cell__node-leaf-icon-selector:
4389
+ ".property-grid-cell::part(node-icon)",
4390
+ // ch-property-grid-row-actions
4391
+ $property-grid-row-actions-selector: ".property-grid-row-actions",
4392
+ $property-grid-row-actions__window-selector:
4393
+ ".property-grid-row-actions::part(window)",
4394
+ $property-grid-row-actions__main-selector:
4395
+ ".property-grid-row-actions::part(main)"
4396
+ ) {
4397
+ // - - - - - - - - - - - - - - - - - - - - - - - - -
4398
+ // icons that are present in more than one place
4399
+ // - - - - - - - - - - - - - - - - - - - - - - - - -
4400
+
4401
+ // caret collapsed
4402
+ #{$property-grid-rowset-legend__caret-selector--collapsed},
4403
+ #{$property-grid-cell__caret-icon-selector--collapsed} {
4404
+ @extend %tabular-grid__icon-size;
4405
+ @extend %tabular-grid__icon-caret-collapsed--enabled;
4406
+ &:hover {
4407
+ @extend %tabular-grid__icon-caret-collapsed--hover;
4408
+ }
4409
+ &:active {
4410
+ @extend %tabular-grid__icon-caret-collapsed--active;
4411
+ }
4412
+ }
4413
+
4414
+ // caret expanded
4415
+ #{$property-grid-rowset-legend__caret-selector--expanded},
4416
+ #{$property-grid-cell__caret-icon-selector--expanded} {
4417
+ @extend %tabular-grid__icon-size;
4418
+ @extend %tabular-grid__icon-caret-expanded--enabled;
4419
+ &:hover {
4420
+ @extend %tabular-grid__icon-caret-expanded--hover;
4421
+ }
4422
+ &:active {
4423
+ @extend %tabular-grid__icon-caret-expanded--active;
4424
+ }
4425
+ }
4426
+
4427
+ // - - - - - - - - - - - - - - - - - - - -
4428
+ // ch-property-grid
4429
+ // - - - - - - - - - - - - - - - - - - - -
4430
+
4431
+ #{$property-grid-selector} {
4432
+ @extend %tabular-grid;
4433
+ &:focus {
4434
+ outline: none;
4435
+ }
4436
+ }
4437
+
4438
+ #{$property-grid__main-selector} {
4439
+ @extend %tabular-grid__main;
4440
+ }
4441
+
4442
+ // - - - - - - - - - - - - - - - - - - - -
4443
+ // ch-property-grid-column-set
4444
+ // - - - - - - - - - - - - - - - - - - - -
4445
+
4446
+ #{$property-grid-column-set} {
4447
+ @extend %tabular-grid-column-set;
4448
+ @extend %property-grid-column-set;
4449
+ }
4450
+
4451
+ // - - - - - - - - - - - - - - - - - - - -
4452
+ // ch-property-grid-column
4453
+ // - - - - - - - - - - - - - - - - - - - -
4454
+
4455
+ #{$property-grid-column__bar-selector} {
4456
+ @extend %tabular-grid-column__bar;
4457
+ }
4458
+
4459
+ #{$property-grid-column__bar-resize-split-selector} {
4460
+ @extend %tabular-grid-column__bar-resize-split;
4461
+ &:hover {
4462
+ @extend %tabular-grid-column__bar-resize-split--hover;
4463
+ }
4464
+ }
4465
+
4466
+ // checkbox (same styles add cell checkbox)
4467
+ #{$property-grid-column__selector-label-selector} {
4468
+ @extend %tabular-grid-cell__selector-label;
4469
+ }
4470
+
4471
+ #{$property-grid-column__selector-selector} {
4472
+ @extend %tabular-grid-cell__selector;
4473
+
4474
+ &::before {
4475
+ @extend %tabular-grid-cell__selector--before;
4476
+ }
4477
+
4478
+ &::after {
4479
+ @extend %tabular-grid-cell__selector--after;
4480
+ }
4481
+
4482
+ &:focus {
4483
+ outline: none;
4484
+ }
4485
+ }
4486
+
4487
+ #{$property-grid-column__selector--checked-selector} {
4488
+ &::after {
4489
+ @extend %tabular-grid-cell__selector--after-checked;
4490
+ }
4491
+ }
4492
+
4493
+ #{$property-grid-column__selector--indeterminate-selector} {
4494
+ &::after {
4495
+ @extend %tabular-grid-cell__selector--after-indeterminate;
4496
+ }
4497
+ }
4498
+
4499
+ // - - - - - - - - - - - - - - - - - - - -
4500
+ // ch-property-grid-row
4501
+ // - - - - - - - - - - - - - - - - - - - -
4502
+
4503
+ // row
4504
+ #{$property-grid-row-selector} {
4505
+ @extend %tabular-grid-row;
4506
+ }
4507
+ #{$property-grid-row--focused-selector} {
4508
+ @extend %tabular-grid-row--focused;
4509
+ }
4510
+ #{$property-grid-row--highlighted-selector} {
4511
+ @extend %tabular-grid-row--highlighted;
4512
+ }
4513
+ #{$property-grid-row--selected-selector} {
4514
+ @extend %tabular-grid-row--selected;
4515
+ }
4516
+ #{$property-grid-row--dragging-selector} {
4517
+ @extend %tabular-grid-row--dragging;
4518
+ }
4519
+
4520
+ // row[some-state] > cell
4521
+ #{$property-grid-row--highlighted__cell-selector} {
4522
+ @extend %tabular-grid-row--highlighted__cell;
4523
+ }
4524
+ #{$property-grid-row--selected__cell-selector} {
4525
+ @extend %tabular-grid-row--selected__cell;
4526
+ }
4527
+
4528
+ // Functional States
4529
+ #{$property-grid__property-selector} {
4530
+ @extend %property-grid__property;
4531
+ }
4532
+ #{$property-grid__property--readonly-selector} {
4533
+ @extend %property-grid__property--readonly;
4534
+ }
4535
+
4536
+ #{$property-grid__value-selector} {
4537
+ @extend %property-grid__value;
4538
+ }
4539
+ #{$property-grid__value--readonly-selector} {
4540
+ @extend %property-grid__value--readonly;
4541
+ }
4542
+ #{$property-grid__value--edited-selector} {
4543
+ @extend %property-grid__value--edited;
4544
+ }
4545
+ #{$property-grid__value--editing-selector} {
4546
+ @extend %property-grid__value--editing;
4547
+ }
4548
+
4549
+ // - - - - - - - - - - - - - - - - - - - -
4550
+ // ch-property-grid-rowset
4551
+ // - - - - - - - - - - - - - - - - - - - -
4552
+
4553
+ #{$property-grid-rowset-selector} {
4554
+ @extend %tabular-grid-rowset;
4555
+ }
4556
+ #{$property-grid-rowset--collapsed__legend-selector} {
4557
+ @extend %tabular-grid-rowset--collapsed__legend;
4558
+ }
4559
+
4560
+ // - - - - - - - - - - - - - - - - - - - -
4561
+ // ch-property-grid-rowset-legend
4562
+ // - - - - - - - - - - - - - - - - - - - -
4563
+
4564
+ #{$property-grid-rowset-legend-selector} {
4565
+ @extend %tabular-grid-rowset-legend;
4566
+ &:hover {
4567
+ @extend %tabular-grid-rowset-legend--hover;
4568
+ }
4569
+ &:active {
4570
+ @extend %tabular-grid-rowset-legend--active;
4571
+ }
4572
+ }
4573
+
4574
+ #{$property-grid-rowset-legend__selector-label-selector} {
4575
+ @extend %tabular-grid-rowset-legend__selector-label;
4576
+ }
4577
+
4578
+ #{$property-grid-rowset-legend__selector-selector} {
4579
+ @extend %tabular-grid-rowset-legend__selector;
4580
+ }
4581
+
4582
+ #{$property-grid-rowset-legend__icon-selector} {
4583
+ @extend %tabular-grid-rowset-legend__icon;
4584
+ @extend %tabular-grid__icon-size;
4585
+ --icon-path: var(--icon__gemini-tools_category-group_on-surface--enabled);
4586
+ }
4587
+
4588
+ // - - - - - - - - - - - - - - - - - - - -
4589
+ // ch-property-grid-cell
4590
+ // - - - - - - - - - - - - - - - - - - - -
4591
+
4592
+ #{$property-grid-cell-selector} {
4593
+ @extend %tabular-grid-cell;
4594
+ }
4595
+
4596
+ #{$property-grid-cell--focused-selector} {
4597
+ @extend %tabular-grid-cell--focused;
4598
+ }
4599
+
4600
+ #{$property-grid-cell--selected-selector} {
4601
+ @extend %tabular-grid-cell--selected;
4602
+ }
4603
+
4604
+ // checkbox
4605
+ #{$property-grid-cell__selector-label-selector} {
4606
+ @extend %tabular-grid-cell__selector-label;
4607
+ }
4608
+
4609
+ #{$property-grid-cell__selector-selector} {
4610
+ @extend %tabular-grid-cell__selector;
4611
+ &::before {
4612
+ @extend %tabular-grid-cell__selector--before;
4613
+ }
4614
+
4615
+ &::after {
4616
+ @extend %tabular-grid-cell__selector--after;
4617
+ }
4618
+
4619
+ &:focus {
4620
+ outline: none;
4621
+ }
4622
+ }
4623
+
4624
+ #{$property-grid-cell__selector--checked-selector} {
4625
+ &::after {
4626
+ @extend %tabular-grid-cell__selector--after-checked;
4627
+ }
4628
+ }
4629
+
4630
+ // Icons
4631
+ #{$property-grid-cell__actions-icon-selector} {
4632
+ inline-size: 100%;
4633
+ @extend %tabular-grid__icon-size;
4634
+ --icon-path: var(
4635
+ --icon__gemini-tools_show-more-vertical_on-surface--enabled
4636
+ );
4637
+ border: none;
4638
+ }
4639
+
4640
+ #{$property-grid-cell__drag-icon-selector} {
4641
+ @extend %tabular-grid__icon-size;
4642
+ --icon-path: var(--icon__navigation_drag_on-surface--enabled);
4643
+ margin-inline-end: var(--grid-common__gap);
4644
+ }
4645
+
4646
+ #{$property-grid-cell__node-icon-selector} {
4647
+ @extend %tabular-grid__icon-size;
4648
+ @extend %tabular-grid__icon-node;
4649
+ }
4650
+
4651
+ #{$property-grid-cell__node-leaf-icon-selector} {
4652
+ @extend %tabular-grid__icon-size;
4653
+ @extend %tabular-grid__icon-node--leaf;
4654
+ }
4655
+
4656
+ // - - - - - - - - - - - - - - - - - - - -
4657
+ // ch-property-grid-row-actions
4658
+ // - - - - - - - - - - - - - - - - - - - -
4659
+
4660
+ #{$property-grid-row-actions-selector} {
4661
+ &[show-on-row-hover]::part(window) {
4662
+ margin-inline-end: var(--mer-spacing--xs);
4663
+ }
4664
+ }
4665
+
4666
+ #{$property-grid-row-actions__window-selector} {
4667
+ @extend %tabular-grid-row-actions__window;
4668
+ }
4669
+
4670
+ #{$property-grid-row-actions__main-selector} {
4671
+ @extend %tabular-grid-row-actions__main;
4672
+ }
4673
+ }
4674
+
3963
4675
  @mixin radio-group-tokens() {
3964
4676
  // Css properties provided by the ch-radio-group-render
3965
4677
  --ch-radio-group__radio-container-size: var(--control-tiny__size);
@@ -4728,7 +5440,7 @@ Dialog Footer
4728
5440
  gap: var(--window__gap);
4729
5441
  }
4730
5442
 
4731
- /// @group TabularGrid
5443
+ /// @group Grid
4732
5444
  // ch-tabular-grid
4733
5445
  /// @param {String} $tabular-grid-selector [".tabular-grid"] -
4734
5446
  /// @param {String} $tabular-grid__main-selector [".tabular-grid::part(main)"] -
@@ -5128,7 +5840,6 @@ Dialog Footer
5128
5840
  // - - - - - - - - - - - - - - - - - - - -
5129
5841
 
5130
5842
  --tree-view__min-inline-size: max-content;
5131
- --tree-view__padding: var(--mer-spacing--xs);
5132
5843
  --tree-view-item-custom__padding-inline-end: var(--mer-spacing--2xs);
5133
5844
 
5134
5845
  // - - - - - - - - - - - - - - - - - - - -
@@ -5171,12 +5882,7 @@ Dialog Footer
5171
5882
  @include tree-view-tokens();
5172
5883
  font-size: var(--tree-view__font-size);
5173
5884
  line-height: var(--mer-line-height--regular);
5174
- padding: var(--tree-view__padding);
5175
5885
  min-inline-size: var(--tree-view__min-inline-size);
5176
-
5177
- &--no-padding {
5178
- padding: 0;
5179
- }
5180
5886
  }
5181
5887
 
5182
5888
  // TODO: Improve this
@@ -5279,7 +5985,6 @@ Dialog Footer
5279
5985
  ///
5280
5986
  @mixin tree-view(
5281
5987
  $tree-view-selector: ".tree-view",
5282
- $tree-view--no-padding-selector: ".tree-view--no-padding",
5283
5988
 
5284
5989
  // Drag preview
5285
5990
  $drag-preview-selector: ".tree-view::part(drag-preview)",
@@ -5330,10 +6035,6 @@ Dialog Footer
5330
6035
  @include scrollbar-styles();
5331
6036
  }
5332
6037
 
5333
- #{$tree-view--no-padding-selector} {
5334
- @extend %tree-view--no-padding;
5335
- }
5336
-
5337
6038
  // - - - - - - - - - - - - - - - - - - - -
5338
6039
  // Drag preview
5339
6040
  // - - - - - - - - - - - - - - - - - - - -
@@ -5470,6 +6171,7 @@ Dialog Footer
5470
6171
  $form-controls-classes: true,
5471
6172
  $icon-classes: true,
5472
6173
  $layout-classes: true,
6174
+ $spacing-classes: true,
5473
6175
  $typography-classes: true,
5474
6176
 
5475
6177
  // Components
@@ -28063,7 +28765,6 @@ Dialog Footer
28063
28765
  // Form control classes
28064
28766
  @if $form-controls-classes {
28065
28767
  @include field();
28066
- @include form-input();
28067
28768
  @include label();
28068
28769
  }
28069
28770
 
@@ -28079,6 +28780,11 @@ Dialog Footer
28079
28780
  @include control-footer();
28080
28781
  }
28081
28782
 
28783
+ // Spacing classes
28784
+ @if $spacing-classes {
28785
+ @include spacing-body();
28786
+ }
28787
+
28082
28788
  // Typography classes
28083
28789
  @if $typography-classes {
28084
28790
  @include typography-classes();
@@ -28137,6 +28843,7 @@ Dialog Footer
28137
28843
  // tabular grid
28138
28844
  @if $tabular-grid {
28139
28845
  @include tabular-grid();
28846
+ @include property-grid(); // property-grid extends tabular-grid
28140
28847
  }
28141
28848
 
28142
28849
  // tree view
@@ -28187,6 +28894,7 @@ Dialog Footer
28187
28894
  $form-controls-classes: false,
28188
28895
  $icon-classes: false,
28189
28896
  $layout-classes: false,
28897
+ $spacing-classes: false,
28190
28898
  $typography-classes: false,
28191
28899
 
28192
28900
  // Components
@@ -28245,6 +28953,7 @@ Dialog Footer
28245
28953
  $form-controls-classes: $form-controls-classes,
28246
28954
  $icon-classes: $icon-classes,
28247
28955
  $layout-classes: $layout-classes,
28956
+ $spacing-classes: $spacing-classes,
28248
28957
  $typography-classes: $typography-classes,
28249
28958
 
28250
28959
  // Components