ywana-core8 0.1.76 → 0.1.77

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/index.css CHANGED
@@ -1620,6 +1620,273 @@ input:checked~.checkmark:after {
1620
1620
  background-color: var(--secondary-color-dark);
1621
1621
  }
1622
1622
 
1623
+ /* Enhanced Header2 Styles - Maintains 100% visual compatibility with original Header */
1624
+
1625
+ .header2 {
1626
+ display: flex;
1627
+ padding: 0;
1628
+ min-height: 3rem; /* EXACT same as original */
1629
+ align-items: center;
1630
+ background-repeat: no-repeat;
1631
+ background-size: cover;
1632
+ overflow: visible;
1633
+ transition: opacity 0.2s ease;
1634
+ }
1635
+
1636
+ /* Icon spacing - Fixed selector from original */
1637
+ .header2 > .icon,
1638
+ .header2 > img {
1639
+ margin-right: 1.6rem; /* EXACT same as original */
1640
+ }
1641
+
1642
+ /* Title styling - EXACT same as original */
1643
+ .header2 > label,
1644
+ .header2-title {
1645
+ margin-left: 1rem; /* EXACT same as original */
1646
+ overflow: hidden;
1647
+ text-overflow: ellipsis;
1648
+ white-space: nowrap;
1649
+ flex-shrink: 1;
1650
+ }
1651
+
1652
+ /* Caption variant - EXACT same dimensions */
1653
+ .header2.caption {
1654
+ height: 4rem; /* EXACT same as original */
1655
+ border-bottom: solid 1px var(--divider-color);
1656
+ }
1657
+
1658
+ /* Dense variant - EXACT same dimensions */
1659
+ .header2.dense {
1660
+ height: 2.4rem; /* EXACT same as original */
1661
+ padding: 0;
1662
+ }
1663
+
1664
+ /* Prominent variant - EXACT same dimensions */
1665
+ .header2.prominent {
1666
+ height: 12.8rem; /* EXACT same as original */
1667
+ align-items: flex-start;
1668
+ }
1669
+
1670
+ .header2.prominent > label,
1671
+ .header2.prominent .header2-title {
1672
+ align-self: flex-end;
1673
+ }
1674
+
1675
+ /* Icon styling - EXACT same as original */
1676
+ .header2-icon {
1677
+ max-width: 4rem; /* EXACT same as original */
1678
+ max-height: 4rem; /* EXACT same as original */
1679
+ -o-object-fit: contain;
1680
+ object-fit: contain;
1681
+ padding: 0.5rem; /* EXACT same as original */
1682
+ display: flex;
1683
+ justify-content: center;
1684
+ align-items: center;
1685
+ transition: opacity 0.2s ease;
1686
+ }
1687
+
1688
+ /* Actions container - EXACT same as original */
1689
+ .header2 > .actions,
1690
+ .header2-actions {
1691
+ position: relative;
1692
+ flex: 1;
1693
+ display: flex;
1694
+ flex-direction: row-reverse;
1695
+ align-items: center;
1696
+ overflow: visible;
1697
+ gap: 0.25rem; /* Small improvement for spacing */
1698
+ }
1699
+
1700
+ /* Theme variants - EXACT same as original */
1701
+ .header2.primary {
1702
+ background-color: var(--primary-color-dark);
1703
+ color: var(--primary-color-text);
1704
+ }
1705
+
1706
+ .header2.secondary {
1707
+ color: var(--secondary-color-text);
1708
+ background-color: var(--secondary-color-dark);
1709
+ }
1710
+
1711
+ /* New enhanced states */
1712
+ .header2.disabled {
1713
+ opacity: 0.6;
1714
+ pointer-events: none;
1715
+ }
1716
+
1717
+ .header2.loading {
1718
+ opacity: 0.8;
1719
+ }
1720
+
1721
+ .header2-loading {
1722
+ animation: header2-spin 1s linear infinite;
1723
+ margin-right: 0.5rem;
1724
+ }
1725
+
1726
+ @keyframes header2-spin {
1727
+ from { transform: rotate(0deg); }
1728
+ to { transform: rotate(360deg); }
1729
+ }
1730
+
1731
+ /* Focus states for accessibility */
1732
+ .header2:focus-within {
1733
+ outline: 2px solid var(--primary-color, #2196f3);
1734
+ outline-offset: 2px;
1735
+ }
1736
+
1737
+ .header2 .icon:focus,
1738
+ .header2-icon:focus {
1739
+ outline: 2px solid var(--primary-color, #2196f3);
1740
+ outline-offset: 2px;
1741
+ border-radius: 4px;
1742
+ }
1743
+
1744
+ /* Clickable icon states */
1745
+ .header2-icon[style*="cursor: pointer"]:hover {
1746
+ opacity: 0.8;
1747
+ }
1748
+
1749
+ .header2-icon[style*="cursor: pointer"]:active {
1750
+ transform: scale(0.95);
1751
+ }
1752
+
1753
+ /* Responsive improvements (maintaining original dimensions) */
1754
+ @media (max-width: 768px) {
1755
+ .header2-title {
1756
+ font-size: 0.9rem;
1757
+ margin-left: 0.5rem;
1758
+ }
1759
+
1760
+ .header2 > .icon,
1761
+ .header2 > img,
1762
+ .header2-icon {
1763
+ margin-right: 1rem;
1764
+ max-width: 3rem;
1765
+ max-height: 3rem;
1766
+ }
1767
+
1768
+ .header2-actions {
1769
+ gap: 0.125rem;
1770
+ }
1771
+
1772
+ /* Maintain exact heights on mobile */
1773
+ .header2 {
1774
+ min-height: 3rem; /* EXACT same */
1775
+ }
1776
+
1777
+ .header2.caption {
1778
+ height: 4rem; /* EXACT same */
1779
+ }
1780
+
1781
+ .header2.dense {
1782
+ height: 2.4rem; /* EXACT same */
1783
+ }
1784
+
1785
+ .header2.prominent {
1786
+ height: 12.8rem; /* EXACT same */
1787
+ }
1788
+ }
1789
+
1790
+ /* High contrast mode support */
1791
+ @media (prefers-contrast: high) {
1792
+ .header2 {
1793
+ border-bottom: 2px solid currentColor;
1794
+ }
1795
+
1796
+ .header2.caption {
1797
+ border-bottom-width: 3px;
1798
+ }
1799
+
1800
+ .header2:focus-within {
1801
+ outline-width: 3px;
1802
+ }
1803
+ }
1804
+
1805
+ /* Reduced motion support */
1806
+ @media (prefers-reduced-motion: reduce) {
1807
+ .header2,
1808
+ .header2-icon,
1809
+ .header2-loading {
1810
+ transition: none;
1811
+ animation: none;
1812
+ }
1813
+ }
1814
+
1815
+ /* Dark theme support */
1816
+ @media (prefers-color-scheme: dark) {
1817
+ .header2 {
1818
+ border-color: var(--divider-color-dark, #616161);
1819
+ }
1820
+
1821
+ .header2.primary {
1822
+ background-color: var(--primary-color-dark, #1976d2);
1823
+ color: var(--primary-color-text, white);
1824
+ }
1825
+
1826
+ .header2.secondary {
1827
+ background-color: var(--secondary-color-dark, #424242);
1828
+ color: var(--secondary-color-text, white);
1829
+ }
1830
+ }
1831
+
1832
+ /* Print styles */
1833
+ @media print {
1834
+ .header2 {
1835
+ -moz-column-break-inside: avoid;
1836
+ break-inside: avoid;
1837
+ background: white !important;
1838
+ color: black !important;
1839
+ border-bottom: 1px solid black !important;
1840
+ }
1841
+
1842
+ .header2-loading {
1843
+ display: none !important;
1844
+ }
1845
+
1846
+ .header2-actions {
1847
+ display: none !important;
1848
+ }
1849
+
1850
+ .header2-title {
1851
+ color: black !important;
1852
+ }
1853
+
1854
+ /* Maintain exact print dimensions */
1855
+ .header2 {
1856
+ min-height: 3rem !important;
1857
+ }
1858
+
1859
+ .header2.caption {
1860
+ height: 4rem !important;
1861
+ }
1862
+
1863
+ .header2.dense {
1864
+ height: 2.4rem !important;
1865
+ }
1866
+
1867
+ .header2.prominent {
1868
+ height: 12.8rem !important;
1869
+ }
1870
+ }
1871
+
1872
+ /* Compatibility class mapping for easy migration */
1873
+ .header2.header {
1874
+ /* Allow both classes to work together during migration */
1875
+ }
1876
+
1877
+ /* Ensure exact pixel-perfect compatibility */
1878
+ .header2 > label {
1879
+ margin-left: 1rem; /* Duplicate to ensure compatibility */
1880
+ }
1881
+
1882
+ .header2 > .icon {
1883
+ margin-right: 1.6rem; /* Duplicate to ensure compatibility */
1884
+ }
1885
+
1886
+ .header2 > img {
1887
+ margin-right: 1.6rem; /* Duplicate to ensure compatibility */
1888
+ }
1889
+
1623
1890
  /* Enhanced Progress Components Styles */
1624
1891
 
1625
1892
  /* Keyframes for animations */
@@ -4078,9 +4345,9 @@ textarea:read-only ~ label,
4078
4345
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
4079
4346
  }
4080
4347
 
4348
+ /* Removed focus outline to avoid interfering with selected tab design */
4081
4349
  .tab:focus {
4082
- outline: 2px solid var(--primary-color, #2196f3);
4083
- outline-offset: -2px;
4350
+ outline: none;
4084
4351
  }
4085
4352
 
4086
4353
  .tab--disabled {
@@ -4112,6 +4379,7 @@ textarea:read-only ~ label,
4112
4379
  .tab--vertical.selected {
4113
4380
  border-right-width: 0;
4114
4381
  border-left: solid 3px var(--primary-color, #2196f3);
4382
+ border-bottom: solid 1px var(--divider-color);
4115
4383
  }
4116
4384
 
4117
4385
  /* Tab content */
@@ -4264,7 +4532,7 @@ textarea:read-only ~ label,
4264
4532
  }
4265
4533
 
4266
4534
  .tab:focus {
4267
- outline-width: 3px;
4535
+ outline: none;
4268
4536
  }
4269
4537
 
4270
4538
  .tab.selected {
@@ -4513,82 +4781,1512 @@ textarea:read-only ~ label,
4513
4781
  resize: horizontal;
4514
4782
  overflow: hidden;
4515
4783
  }
4516
- /* Original TokenField styles (preserved for compatibility) */
4517
- .tokenField {
4518
- min-height: 3.8;
4784
+ /* Enhanced TextField2 Styles */
4785
+
4786
+ .textfield2 {
4787
+ flex: 1;
4519
4788
  position: relative;
4520
- border-bottom: solid 1px var(--divider-color);
4789
+ padding-top: 1.5rem;
4790
+ overflow: visible;
4521
4791
  display: flex;
4522
- align-items: center;
4523
- margin: 1rem 0 0 0;
4524
- flex-wrap: wrap;
4525
- transition: border-color 0.2s ease, box-shadow 0.2s ease;
4792
+ flex-direction: column;
4793
+ min-height: auto;
4794
+ transition: all 0.2s ease;
4526
4795
  }
4527
4796
 
4528
- .tokenField>label {
4529
- color: var(--primary-color);
4530
- font-size: .8rem;
4531
- font-weight: normal;
4532
- position: absolute;
4533
- pointer-events: none;
4534
- top:-9px;
4535
- padding: 2px 6px 2px 4px;
4797
+ .textfield2.no-label {
4798
+ padding-top: 0.5rem;
4799
+ padding-bottom: 0.5rem;
4536
4800
  }
4537
4801
 
4538
- .tokenField input,
4539
- .tokenField .dropdown {
4540
- border: 0px;
4541
- padding: .5rem 0;
4542
- font-size: 1rem;
4802
+ .textfield2.label-left {
4803
+ flex-direction: row;
4804
+ align-items: center;
4805
+ padding-top: 0.5rem;
4806
+ }
4807
+
4808
+ /* Input and textarea base styles */
4809
+ .textfield2 > input,
4810
+ .textfield2 > textarea {
4543
4811
  flex: 1;
4544
- min-width: 3rem;
4812
+ padding: 10px 10px 10px 0.5rem;
4813
+ display: block;
4814
+ border: none;
4815
+ border-bottom: 1px solid var(--divider-color, #e0e0e0);
4816
+ overflow: hidden;
4817
+ font-size: 1rem;
4818
+ color: var(--text-color, #333);
4819
+ background-color: var(--paper-color, #fff);
4820
+ transition: border-color 0.2s ease;
4821
+ resize: vertical;
4822
+ min-height: 2.5rem;
4545
4823
  }
4546
4824
 
4547
- .token {
4548
- display: flex;
4549
- border: solid 1px var(--divider-color);
4550
- background-color: rgba(200,200,200,.1);
4551
- align-items: center;
4552
- padding: .2rem .2rem .2rem .4rem;
4553
- border-radius: .3rem !important;
4554
- margin: .2rem;
4555
- max-height: 2rem;
4556
- transition: all 0.2s ease;
4825
+ .textfield2 > textarea {
4826
+ min-height: 4rem;
4827
+ padding-top: 0.75rem;
4828
+ line-height: 1.4;
4829
+ }
4830
+
4831
+ /* Focus styles */
4832
+ .textfield2 > input:focus,
4833
+ .textfield2 > textarea:focus {
4557
4834
  outline: none;
4558
- cursor: default;
4835
+ border-color: var(--primary-color, #2196f3);
4559
4836
  }
4560
4837
 
4561
- .token > div {
4562
- white-space: nowrap;
4838
+ .textfield2.focused > input,
4839
+ .textfield2.focused > textarea {
4840
+ border-color: var(--primary-color, #2196f3);
4563
4841
  }
4564
4842
 
4565
- .token button {
4566
- width: 2rem;
4567
- height: 1.6rem;
4568
- font-size: .8rem !important;
4569
- padding: 0 !important;
4570
- margin-left: .2rem;
4843
+ /* Read-only styles */
4844
+ .textfield2 > input:-moz-read-only, .textfield2 > textarea:-moz-read-only {
4845
+ background-color: var(--disabled-background, #f5f5f5);
4846
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
4847
+ cursor: default;
4848
+ }
4849
+ .textfield2 > input:read-only,
4850
+ .textfield2 > textarea:read-only,
4851
+ .textfield2.readonly > input,
4852
+ .textfield2.readonly > textarea {
4853
+ background-color: var(--disabled-background, #f5f5f5);
4854
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
4855
+ cursor: default;
4571
4856
  }
4572
4857
 
4573
- /* Enhanced TokenField Styles - New functionality while maintaining compatibility */
4858
+ /* Disabled styles */
4859
+ .textfield2.disabled {
4860
+ opacity: 0.6;
4861
+ pointer-events: none;
4862
+ }
4574
4863
 
4575
- /* Size variants */
4576
- .tokenField--small {
4577
- min-height: 3rem;
4578
- margin: 0.75rem 0 0 0;
4864
+ .textfield2.disabled > input,
4865
+ .textfield2.disabled > textarea {
4866
+ background-color: var(--disabled-background, #f5f5f5);
4867
+ color: var(--text-color-disabled, #999);
4868
+ cursor: not-allowed;
4579
4869
  }
4580
4870
 
4581
- .tokenField--small > label {
4582
- font-size: 0.7rem;
4583
- top: -8px;
4871
+ /* Error styles */
4872
+ .textfield2.error > input,
4873
+ .textfield2.error > textarea,
4874
+ .textfield2.invalid > input,
4875
+ .textfield2.invalid > textarea {
4876
+ border-color: var(--error-color, #f44336);
4584
4877
  }
4585
4878
 
4586
- .tokenField--medium {
4587
- min-height: 3.8rem;
4588
- margin: 1rem 0 0 0;
4879
+ .textfield2.error > label,
4880
+ .textfield2.invalid > label {
4881
+ color: var(--error-color, #f44336);
4589
4882
  }
4590
4883
 
4591
- .tokenField--large {
4884
+ /* Icons */
4885
+ .textfield2-clear,
4886
+ .textfield2-password-toggle {
4887
+ position: absolute;
4888
+ top: 1.5rem;
4889
+ right: 0.2rem;
4890
+ color: var(--text-color-light, #666);
4891
+ cursor: pointer;
4892
+ transition: color 0.2s ease;
4893
+ }
4894
+
4895
+ .textfield2-clear:hover,
4896
+ .textfield2-password-toggle:hover {
4897
+ color: var(--text-color, #333);
4898
+ }
4899
+
4900
+ .textfield2.no-label .textfield2-clear,
4901
+ .textfield2.no-label .textfield2-password-toggle {
4902
+ top: 0.5rem;
4903
+ }
4904
+
4905
+ .textfield2-password-toggle {
4906
+ right: 2.2rem;
4907
+ }
4908
+
4909
+ .textfield2.textfield2-date .textfield2-clear,
4910
+ .textfield2.textfield2-time .textfield2-clear {
4911
+ right: 2.5rem;
4912
+ }
4913
+
4914
+ /* Labels */
4915
+ .textfield2 > label {
4916
+ color: var(--primary-color, #2196f3);
4917
+ font-size: 0.9rem;
4918
+ font-weight: normal;
4919
+ position: absolute;
4920
+ pointer-events: none;
4921
+ left: 0.4rem;
4922
+ top: 2rem;
4923
+ transition: all 0.2s ease;
4924
+ transform-origin: left top;
4925
+ }
4926
+
4927
+ .textfield2.label-left > label {
4928
+ position: relative;
4929
+ margin-right: 0.5rem;
4930
+ top: 0;
4931
+ font-size: 0.9rem;
4932
+ color: var(--text-color, #333);
4933
+ pointer-events: auto;
4934
+ min-width: -moz-max-content;
4935
+ min-width: max-content;
4936
+ }
4937
+
4938
+ /* Active label states */
4939
+ .textfield2 > input:focus ~ label,
4940
+ .textfield2 > input:valid ~ label,
4941
+ .textfield2 > input[value]:not([value=""]) ~ label,
4942
+ .textfield2 > textarea:focus ~ label,
4943
+ .textfield2 > textarea:valid ~ label,
4944
+ .textfield2 > textarea[value]:not([value=""]) ~ label,
4945
+ .textfield2.focused > label,
4946
+ .textfield2.has-placeholder > label {
4947
+ top: 0.3rem;
4948
+ font-size: 0.8rem;
4949
+ color: var(--primary-color, #2196f3);
4950
+ transform: scale(0.9);
4951
+ }
4952
+
4953
+ .textfield2.error > input:focus ~ label,
4954
+ .textfield2.error > textarea:focus ~ label,
4955
+ .textfield2.invalid > input:focus ~ label,
4956
+ .textfield2.invalid > textarea:focus ~ label {
4957
+ color: var(--error-color, #f44336);
4958
+ }
4959
+
4960
+ /* Date/time input labels */
4961
+ .textfield2 input[type="date"] ~ label,
4962
+ .textfield2 input[type="time"] ~ label,
4963
+ .textfield2 input[type="datetime-local"] ~ label,
4964
+ .textfield2 input[type="month"] ~ label,
4965
+ .textfield2 input[type="week"] ~ label {
4966
+ top: 0.3rem;
4967
+ font-size: 0.8rem;
4968
+ color: var(--primary-color, #2196f3);
4969
+ transform: scale(0.9);
4970
+ }
4971
+
4972
+ /* Focus bar animation */
4973
+ .textfield2-bar {
4974
+ position: relative;
4975
+ display: block;
4976
+ width: 100%;
4977
+ }
4978
+
4979
+ .textfield2-bar:before,
4980
+ .textfield2-bar:after {
4981
+ content: "";
4982
+ height: 2px;
4983
+ width: 0;
4984
+ bottom: 1px;
4985
+ position: absolute;
4986
+ background: var(--primary-color, #2196f3);
4987
+ transition: width 0.2s ease;
4988
+ }
4989
+
4990
+ .textfield2-bar:before {
4991
+ left: 50%;
4992
+ }
4993
+
4994
+ .textfield2-bar:after {
4995
+ right: 50%;
4996
+ }
4997
+
4998
+ /* Active bar state */
4999
+ .textfield2 > input:focus ~ .textfield2-bar:before,
5000
+ .textfield2 > input:focus ~ .textfield2-bar:after,
5001
+ .textfield2 > textarea:focus ~ .textfield2-bar:before,
5002
+ .textfield2 > textarea:focus ~ .textfield2-bar:after,
5003
+ .textfield2.focused .textfield2-bar:before,
5004
+ .textfield2.focused .textfield2-bar:after {
5005
+ width: 50%;
5006
+ }
5007
+
5008
+ .textfield2.error .textfield2-bar:before,
5009
+ .textfield2.error .textfield2-bar:after,
5010
+ .textfield2.invalid .textfield2-bar:before,
5011
+ .textfield2.invalid .textfield2-bar:after {
5012
+ background: var(--error-color, #f44336);
5013
+ }
5014
+
5015
+ /* Helper text */
5016
+ .textfield2-helper {
5017
+ display: flex;
5018
+ align-items: center;
5019
+ gap: 0.25rem;
5020
+ margin-top: 0.25rem;
5021
+ font-size: 0.75rem;
5022
+ line-height: 1.2;
5023
+ min-height: 1rem;
5024
+ }
5025
+
5026
+ .textfield2-helper.helper {
5027
+ color: var(--text-color-light, #666);
5028
+ }
5029
+
5030
+ .textfield2-helper.error {
5031
+ color: var(--error-color, #f44336);
5032
+ }
5033
+
5034
+ .textfield2-helper .icon {
5035
+ flex-shrink: 0;
5036
+ }
5037
+
5038
+ /* Outlined variant */
5039
+ .textfield2-outlined {
5040
+ border: 1px solid var(--divider-color, #e0e0e0);
5041
+ border-radius: 4px;
5042
+ padding: 0.5rem;
5043
+ background-color: var(--paper-color, #fff);
5044
+ }
5045
+
5046
+ .textfield2-outlined > input,
5047
+ .textfield2-outlined > textarea {
5048
+ border: none;
5049
+ padding: 0.5rem;
5050
+ }
5051
+
5052
+ .textfield2-outlined > label {
5053
+ background-color: var(--paper-color, #fff);
5054
+ padding: 0 0.25rem;
5055
+ left: 0.75rem;
5056
+ top: -0.5rem;
5057
+ }
5058
+
5059
+ .textfield2-outlined.focused,
5060
+ .textfield2-outlined > input:focus,
5061
+ .textfield2-outlined > textarea:focus {
5062
+ border-color: var(--primary-color, #2196f3);
5063
+ outline: none;
5064
+ }
5065
+
5066
+ .textfield2-outlined.error,
5067
+ .textfield2-outlined.invalid {
5068
+ border-color: var(--error-color, #f44336);
5069
+ }
5070
+
5071
+ .textfield2-outlined .textfield2-bar {
5072
+ display: none;
5073
+ }
5074
+
5075
+ /* Responsive adjustments */
5076
+ @media (max-width: 768px) {
5077
+ .textfield2 {
5078
+ padding-top: 1.25rem;
5079
+ }
5080
+
5081
+ .textfield2 > input,
5082
+ .textfield2 > textarea {
5083
+ font-size: 0.9rem;
5084
+ padding: 8px 8px 8px 0.4rem;
5085
+ }
5086
+
5087
+ .textfield2 > label {
5088
+ font-size: 0.8rem;
5089
+ left: 0.3rem;
5090
+ }
5091
+
5092
+ .textfield2-helper {
5093
+ font-size: 0.7rem;
5094
+ }
5095
+ }
5096
+
5097
+ /* High contrast mode support */
5098
+ @media (prefers-contrast: high) {
5099
+ .textfield2 > input,
5100
+ .textfield2 > textarea {
5101
+ border-width: 2px;
5102
+ }
5103
+
5104
+ .textfield2.focused > input,
5105
+ .textfield2.focused > textarea {
5106
+ border-width: 3px;
5107
+ }
5108
+
5109
+ .textfield2-outlined {
5110
+ border-width: 2px;
5111
+ }
5112
+
5113
+ .textfield2-outlined.focused {
5114
+ border-width: 3px;
5115
+ }
5116
+ }
5117
+
5118
+ /* Reduced motion support */
5119
+ @media (prefers-reduced-motion: reduce) {
5120
+ .textfield2,
5121
+ .textfield2 > input,
5122
+ .textfield2 > textarea,
5123
+ .textfield2 > label,
5124
+ .textfield2-bar:before,
5125
+ .textfield2-bar:after,
5126
+ .textfield2-clear,
5127
+ .textfield2-password-toggle {
5128
+ transition: none;
5129
+ }
5130
+ }
5131
+
5132
+ /* Dark theme support */
5133
+ @media (prefers-color-scheme: dark) {
5134
+ .textfield2 > input,
5135
+ .textfield2 > textarea {
5136
+ background-color: var(--paper-color-dark, #424242);
5137
+ color: var(--text-color-dark, #ffffff);
5138
+ border-color: var(--divider-color-dark, #616161);
5139
+ }
5140
+
5141
+ .textfield2-outlined {
5142
+ background-color: var(--paper-color-dark, #424242);
5143
+ border-color: var(--divider-color-dark, #616161);
5144
+ }
5145
+
5146
+ .textfield2 > label {
5147
+ background-color: var(--paper-color-dark, #424242);
5148
+ }
5149
+ }
5150
+
5151
+ /* Print styles */
5152
+ @media print {
5153
+ .textfield2 {
5154
+ -moz-column-break-inside: avoid;
5155
+ break-inside: avoid;
5156
+ }
5157
+
5158
+ .textfield2-clear,
5159
+ .textfield2-password-toggle {
5160
+ display: none !important;
5161
+ }
5162
+
5163
+ .textfield2 > input,
5164
+ .textfield2 > textarea {
5165
+ border: 1px solid black !important;
5166
+ background: white !important;
5167
+ color: black !important;
5168
+ }
5169
+
5170
+ .textfield2-helper {
5171
+ color: black !important;
5172
+ }
5173
+ }
5174
+
5175
+ /* Enhanced DropDown2 Styles */
5176
+
5177
+ .dropdown2 {
5178
+ position: relative;
5179
+ display: flex;
5180
+ flex-direction: column;
5181
+ min-width: 200px;
5182
+ }
5183
+
5184
+ .dropdown2-control {
5185
+ display: flex;
5186
+ align-items: center;
5187
+ min-height: 2.5rem;
5188
+ padding: 0.5rem;
5189
+ border: 1px solid var(--divider-color, #e0e0e0);
5190
+ border-radius: 4px;
5191
+ background-color: var(--paper-color, #fff);
5192
+ cursor: pointer;
5193
+ transition: all 0.2s ease;
5194
+ position: relative;
5195
+ }
5196
+
5197
+ .dropdown2-control:focus {
5198
+ outline: none;
5199
+ border-color: var(--primary-color, #2196f3);
5200
+ }
5201
+
5202
+ .dropdown2.disabled .dropdown2-control {
5203
+ opacity: 0.6;
5204
+ cursor: not-allowed;
5205
+ pointer-events: none;
5206
+ }
5207
+
5208
+ .dropdown2.readonly .dropdown2-control {
5209
+ background-color: var(--disabled-background, #f5f5f5);
5210
+ cursor: default;
5211
+ }
5212
+
5213
+ .dropdown2.error .dropdown2-control {
5214
+ border-color: var(--error-color, #f44336);
5215
+ }
5216
+
5217
+ .dropdown2.outlined .dropdown2-control {
5218
+ border-width: 2px;
5219
+ }
5220
+
5221
+ /* Dropdown value and search */
5222
+ .dropdown2-value {
5223
+ flex: 1;
5224
+ color: var(--text-color, #333);
5225
+ white-space: nowrap;
5226
+ overflow: hidden;
5227
+ text-overflow: ellipsis;
5228
+ }
5229
+
5230
+ .dropdown2-value.placeholder {
5231
+ color: var(--text-color-light, #666);
5232
+ }
5233
+
5234
+ .dropdown2-search {
5235
+ flex: 1;
5236
+ border: none;
5237
+ outline: none;
5238
+ background: transparent;
5239
+ color: var(--text-color, #333);
5240
+ font-size: inherit;
5241
+ }
5242
+
5243
+ /* Indicators */
5244
+ .dropdown2-indicators {
5245
+ display: flex;
5246
+ align-items: center;
5247
+ gap: 0.25rem;
5248
+ margin-left: 0.5rem;
5249
+ }
5250
+
5251
+ .dropdown2-clear {
5252
+ color: var(--text-color-light, #666);
5253
+ cursor: pointer;
5254
+ transition: color 0.2s ease;
5255
+ }
5256
+
5257
+ .dropdown2-clear:hover {
5258
+ color: var(--text-color, #333);
5259
+ }
5260
+
5261
+ .dropdown2-arrow {
5262
+ color: var(--text-color-light, #666);
5263
+ transition: transform 0.2s ease;
5264
+ }
5265
+
5266
+ .dropdown2.open .dropdown2-arrow {
5267
+ transform: rotate(180deg);
5268
+ }
5269
+
5270
+ /* Label */
5271
+ .dropdown2-label {
5272
+ position: absolute;
5273
+ top: -0.5rem;
5274
+ left: 0.75rem;
5275
+ background-color: var(--paper-color, #fff);
5276
+ padding: 0 0.25rem;
5277
+ font-size: 0.8rem;
5278
+ color: var(--primary-color, #2196f3);
5279
+ transition: all 0.2s ease;
5280
+ pointer-events: none;
5281
+ }
5282
+
5283
+ .dropdown2-label.active {
5284
+ transform: scale(0.9);
5285
+ }
5286
+
5287
+ /* Dropdown menu */
5288
+ .dropdown2-menu {
5289
+ position: absolute;
5290
+ top: 100%;
5291
+ left: 0;
5292
+ right: 0;
5293
+ z-index: 1000;
5294
+ background-color: var(--paper-color, #fff);
5295
+ border: 1px solid var(--divider-color, #e0e0e0);
5296
+ border-radius: 4px;
5297
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
5298
+ overflow: hidden;
5299
+ margin-top: 0.25rem;
5300
+ }
5301
+
5302
+ .dropdown2-menu.top {
5303
+ top: auto;
5304
+ bottom: 100%;
5305
+ margin-top: 0;
5306
+ margin-bottom: 0.25rem;
5307
+ }
5308
+
5309
+ .dropdown2-menu ul {
5310
+ list-style: none;
5311
+ margin: 0;
5312
+ padding: 0.25rem 0;
5313
+ max-height: inherit;
5314
+ overflow-y: auto;
5315
+ }
5316
+
5317
+ /* Options */
5318
+ .dropdown2-option {
5319
+ display: flex;
5320
+ align-items: center;
5321
+ padding: 0.5rem 0.75rem;
5322
+ cursor: pointer;
5323
+ transition: background-color 0.2s ease;
5324
+ gap: 0.5rem;
5325
+ }
5326
+
5327
+ .dropdown2-option:hover,
5328
+ .dropdown2-option.focused {
5329
+ background-color: var(--primary-color-lighter, #e3f2fd);
5330
+ }
5331
+
5332
+ .dropdown2-option.selected {
5333
+ background-color: var(--primary-color-light, #bbdefb);
5334
+ color: var(--primary-color-text, #1976d2);
5335
+ }
5336
+
5337
+ .dropdown2-option.selected:hover {
5338
+ background-color: var(--primary-color, #2196f3);
5339
+ color: var(--primary-color-text, white);
5340
+ }
5341
+
5342
+ .dropdown2-checkbox,
5343
+ .dropdown2-option-icon,
5344
+ .dropdown2-check {
5345
+ flex-shrink: 0;
5346
+ }
5347
+
5348
+ .dropdown2-option-text {
5349
+ flex: 1;
5350
+ overflow: hidden;
5351
+ text-overflow: ellipsis;
5352
+ white-space: nowrap;
5353
+ }
5354
+
5355
+ /* Group labels */
5356
+ .dropdown2-group-label {
5357
+ padding: 0.5rem 0.75rem 0.25rem;
5358
+ font-weight: 600;
5359
+ color: var(--text-color-light, #666);
5360
+ font-size: 0.8rem;
5361
+ text-transform: uppercase;
5362
+ letter-spacing: 0.5px;
5363
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
5364
+ }
5365
+
5366
+ /* No options */
5367
+ .dropdown2-no-options {
5368
+ padding: 1rem 0.75rem;
5369
+ text-align: center;
5370
+ color: var(--text-color-light, #666);
5371
+ font-style: italic;
5372
+ }
5373
+
5374
+ /* Helper text */
5375
+ .dropdown2-helper {
5376
+ display: flex;
5377
+ align-items: center;
5378
+ gap: 0.25rem;
5379
+ margin-top: 0.25rem;
5380
+ font-size: 0.75rem;
5381
+ line-height: 1.2;
5382
+ min-height: 1rem;
5383
+ }
5384
+
5385
+ .dropdown2-helper.helper {
5386
+ color: var(--text-color-light, #666);
5387
+ }
5388
+
5389
+ .dropdown2-helper.error {
5390
+ color: var(--error-color, #f44336);
5391
+ }
5392
+
5393
+ .dropdown2-helper .icon {
5394
+ flex-shrink: 0;
5395
+ }
5396
+
5397
+ /* Multiple selection */
5398
+ .dropdown2.multiple .dropdown2-value {
5399
+ display: flex;
5400
+ align-items: center;
5401
+ gap: 0.25rem;
5402
+ }
5403
+
5404
+ /* Responsive adjustments */
5405
+ @media (max-width: 768px) {
5406
+ .dropdown2 {
5407
+ min-width: 150px;
5408
+ }
5409
+
5410
+ .dropdown2-control {
5411
+ min-height: 2.25rem;
5412
+ padding: 0.375rem;
5413
+ }
5414
+
5415
+ .dropdown2-option {
5416
+ padding: 0.375rem 0.5rem;
5417
+ }
5418
+
5419
+ .dropdown2-menu {
5420
+ max-height: 150px;
5421
+ }
5422
+ }
5423
+
5424
+ /* High contrast mode support */
5425
+ @media (prefers-contrast: high) {
5426
+ .dropdown2-control {
5427
+ border-width: 2px;
5428
+ }
5429
+
5430
+ .dropdown2-control:focus {
5431
+ border-width: 3px;
5432
+ }
5433
+
5434
+ .dropdown2-option.selected {
5435
+ border: 2px solid var(--primary-color, #2196f3);
5436
+ }
5437
+ }
5438
+
5439
+ /* Reduced motion support */
5440
+ @media (prefers-reduced-motion: reduce) {
5441
+ .dropdown2-control,
5442
+ .dropdown2-arrow,
5443
+ .dropdown2-label,
5444
+ .dropdown2-option,
5445
+ .dropdown2-clear {
5446
+ transition: none;
5447
+ }
5448
+ }
5449
+
5450
+ /* Dark theme support */
5451
+ @media (prefers-color-scheme: dark) {
5452
+ .dropdown2-control {
5453
+ background-color: var(--paper-color-dark, #424242);
5454
+ border-color: var(--divider-color-dark, #616161);
5455
+ }
5456
+
5457
+ .dropdown2-menu {
5458
+ background-color: var(--paper-color-dark, #424242);
5459
+ border-color: var(--divider-color-dark, #616161);
5460
+ }
5461
+
5462
+ .dropdown2-label {
5463
+ background-color: var(--paper-color-dark, #424242);
5464
+ }
5465
+
5466
+ .dropdown2-value,
5467
+ .dropdown2-search {
5468
+ color: var(--text-color-dark, #ffffff);
5469
+ }
5470
+ }
5471
+
5472
+ /* Print styles for dropdown */
5473
+ @media print {
5474
+ .dropdown2-menu {
5475
+ display: none !important;
5476
+ }
5477
+
5478
+ .dropdown2-control {
5479
+ border: 1px solid black !important;
5480
+ background: white !important;
5481
+ }
5482
+
5483
+ .dropdown2-value {
5484
+ color: black !important;
5485
+ }
5486
+
5487
+ .dropdown2-indicators {
5488
+ display: none !important;
5489
+ }
5490
+ }
5491
+
5492
+ /* Enhanced DateRange2 Styles */
5493
+
5494
+ .date-range2 {
5495
+ display: flex;
5496
+ flex-direction: column;
5497
+ gap: 0.5rem;
5498
+ }
5499
+
5500
+ .date-range2-label {
5501
+ font-size: 0.9rem;
5502
+ font-weight: 500;
5503
+ color: var(--text-color, #333);
5504
+ margin-bottom: 0.25rem;
5505
+ }
5506
+
5507
+ .date-range2-fields {
5508
+ display: flex;
5509
+ align-items: center;
5510
+ gap: 1rem;
5511
+ flex-wrap: wrap;
5512
+ }
5513
+
5514
+ .date-range2-from,
5515
+ .date-range2-to {
5516
+ flex: 1;
5517
+ min-width: 150px;
5518
+ }
5519
+
5520
+ .date-range2-separator {
5521
+ color: var(--text-color-light, #666);
5522
+ font-size: 0.9rem;
5523
+ padding: 0 0.5rem;
5524
+ white-space: nowrap;
5525
+ }
5526
+
5527
+ /* States */
5528
+ .date-range2.disabled {
5529
+ opacity: 0.6;
5530
+ pointer-events: none;
5531
+ }
5532
+
5533
+ .date-range2.readonly {
5534
+ opacity: 0.8;
5535
+ }
5536
+
5537
+ .date-range2.error .date-range2-label {
5538
+ color: var(--error-color, #f44336);
5539
+ }
5540
+
5541
+ .date-range2.outlined .date-range2-fields {
5542
+ padding: 0.5rem;
5543
+ border: 1px solid var(--divider-color, #e0e0e0);
5544
+ border-radius: 4px;
5545
+ background-color: var(--paper-color, #fff);
5546
+ }
5547
+
5548
+ .date-range2.outlined.error {
5549
+ border-color: var(--error-color, #f44336);
5550
+ }
5551
+
5552
+ /* Helper text */
5553
+ .date-range2-helper {
5554
+ display: flex;
5555
+ align-items: center;
5556
+ gap: 0.25rem;
5557
+ margin-top: 0.25rem;
5558
+ font-size: 0.75rem;
5559
+ line-height: 1.2;
5560
+ min-height: 1rem;
5561
+ }
5562
+
5563
+ .date-range2-helper.helper {
5564
+ color: var(--text-color-light, #666);
5565
+ }
5566
+
5567
+ .date-range2-helper.error {
5568
+ color: var(--error-color, #f44336);
5569
+ }
5570
+
5571
+ .date-range2-helper .icon {
5572
+ flex-shrink: 0;
5573
+ }
5574
+
5575
+ /* Responsive adjustments */
5576
+ @media (max-width: 768px) {
5577
+ .date-range2-fields {
5578
+ flex-direction: column;
5579
+ gap: 0.75rem;
5580
+ align-items: stretch;
5581
+ }
5582
+
5583
+ .date-range2-from,
5584
+ .date-range2-to {
5585
+ min-width: auto;
5586
+ }
5587
+
5588
+ .date-range2-separator {
5589
+ text-align: center;
5590
+ padding: 0;
5591
+ }
5592
+ }
5593
+
5594
+ /* High contrast mode support */
5595
+ @media (prefers-contrast: high) {
5596
+ .date-range2.outlined .date-range2-fields {
5597
+ border-width: 2px;
5598
+ }
5599
+
5600
+ .date-range2.outlined.error {
5601
+ border-width: 2px;
5602
+ }
5603
+ }
5604
+
5605
+ /* Dark theme support */
5606
+ @media (prefers-color-scheme: dark) {
5607
+ .date-range2-label {
5608
+ color: var(--text-color-dark, #ffffff);
5609
+ }
5610
+
5611
+ .date-range2.outlined .date-range2-fields {
5612
+ background-color: var(--paper-color-dark, #424242);
5613
+ border-color: var(--divider-color-dark, #616161);
5614
+ }
5615
+ }
5616
+
5617
+ /* Print styles for date range */
5618
+ @media print {
5619
+ .date-range2-fields {
5620
+ border: 1px solid black !important;
5621
+ background: white !important;
5622
+ }
5623
+
5624
+ .date-range2-label {
5625
+ color: black !important;
5626
+ }
5627
+
5628
+ .date-range2-separator {
5629
+ color: black !important;
5630
+ }
5631
+ }
5632
+
5633
+ /* DataTable2 CSS - Enhanced version maintaining 100% compatibility */
5634
+
5635
+ /* Import original table styles for compatibility */
5636
+ @import './table.css';
5637
+
5638
+ /* Enhanced DataTable2 Styles - New functionality while maintaining compatibility */
5639
+
5640
+ .datatable2 {
5641
+ position: relative;
5642
+ width: 100%;
5643
+ overflow: hidden;
5644
+ border-radius: 8px;
5645
+ background: var(--background-color, #ffffff);
5646
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
5647
+ transition: all 0.2s ease;
5648
+ }
5649
+
5650
+ /* Fix table borders - single 1px borders */
5651
+ .datatable2 table {
5652
+ border-collapse: collapse;
5653
+ width: 100%;
5654
+ border-spacing: 0;
5655
+ }
5656
+
5657
+ .datatable2 th,
5658
+ .datatable2 td {
5659
+ border: 1px solid var(--divider-color, #e0e0e0);
5660
+ padding: 0.5rem 0.75rem;
5661
+ text-align: left;
5662
+ vertical-align: middle;
5663
+ position: relative;
5664
+ }
5665
+
5666
+ /* Fix editable fields to stay within cells */
5667
+ .datatable2 .field-editor {
5668
+ width: 100%;
5669
+ max-width: 100%;
5670
+ box-sizing: border-box;
5671
+ }
5672
+
5673
+ .datatable2 .field-editor input,
5674
+ .datatable2 .field-editor select,
5675
+ .datatable2 .field-editor textarea {
5676
+ width: 100%;
5677
+ max-width: 100%;
5678
+ box-sizing: border-box;
5679
+ border: none;
5680
+ outline: none;
5681
+ background: transparent;
5682
+ padding: 0.25rem;
5683
+ margin: 0;
5684
+ font-size: inherit;
5685
+ font-family: inherit;
5686
+ line-height: inherit;
5687
+ }
5688
+
5689
+ .datatable2 .field-editor input:focus,
5690
+ .datatable2 .field-editor select:focus,
5691
+ .datatable2 .field-editor textarea:focus {
5692
+ background: rgba(33, 150, 243, 0.05);
5693
+ border-radius: 2px;
5694
+ }
5695
+
5696
+ /* Search functionality */
5697
+ .datatable2__search {
5698
+ padding: 1rem;
5699
+ border-bottom: 1px solid var(--divider-color, #e0e0e0);
5700
+ background: var(--background-color-light, #f8f9fa);
5701
+ }
5702
+
5703
+ /* Toolbar */
5704
+ .datatable2__toolbar {
5705
+ display: flex;
5706
+ justify-content: space-between;
5707
+ align-items: center;
5708
+ padding: 0.5rem 1rem;
5709
+ border-bottom: 1px solid var(--divider-color, #e0e0e0);
5710
+ background: var(--background-color-light, #f8f9fa);
5711
+ }
5712
+
5713
+ .datatable2__export-btn {
5714
+ display: flex;
5715
+ align-items: center;
5716
+ gap: 0.5rem;
5717
+ padding: 0.5rem 1rem;
5718
+ border: 1px solid var(--primary-color, #2196f3);
5719
+ background: transparent;
5720
+ color: var(--primary-color, #2196f3);
5721
+ border-radius: 4px;
5722
+ cursor: pointer;
5723
+ font-size: 0.9rem;
5724
+ transition: all 0.2s ease;
5725
+ }
5726
+
5727
+ .datatable2__export-btn:hover:not(:disabled) {
5728
+ background: var(--primary-color, #2196f3);
5729
+ color: white;
5730
+ }
5731
+
5732
+ .datatable2__export-btn:disabled {
5733
+ opacity: 0.6;
5734
+ cursor: not-allowed;
5735
+ }
5736
+
5737
+ /* Table variants */
5738
+ .datatable2--striped tbody tr:nth-child(even) {
5739
+ background-color: var(--background-color-light, #f8f9fa);
5740
+ }
5741
+
5742
+ .datatable2--compact {
5743
+ font-size: 0.85rem;
5744
+ }
5745
+
5746
+ .datatable2--compact th,
5747
+ .datatable2--compact td {
5748
+ padding: 0.375rem 0.5rem;
5749
+ }
5750
+
5751
+ .datatable2--bordered {
5752
+ border: 1px solid var(--divider-color, #e0e0e0);
5753
+ }
5754
+
5755
+ .datatable2--bordered th,
5756
+ .datatable2--bordered td {
5757
+ border: 1px solid var(--divider-color, #e0e0e0);
5758
+ }
5759
+
5760
+ .datatable2--no-hover tbody tr:hover {
5761
+ background-color: inherit !important;
5762
+ }
5763
+
5764
+ /* Row height variants - Clear differences */
5765
+ .datatable2--small th,
5766
+ .datatable2--small td {
5767
+ padding: 0.25rem 0.5rem;
5768
+ font-size: 0.75rem;
5769
+ line-height: 1.2;
5770
+ height: 32px;
5771
+ }
5772
+
5773
+ .datatable2--medium th,
5774
+ .datatable2--medium td {
5775
+ padding: 0.5rem 0.75rem;
5776
+ font-size: 0.875rem;
5777
+ line-height: 1.4;
5778
+ height: 44px;
5779
+ }
5780
+
5781
+ .datatable2--large th,
5782
+ .datatable2--large td {
5783
+ padding: 0.75rem 1rem;
5784
+ font-size: 1rem;
5785
+ line-height: 1.6;
5786
+ height: 56px;
5787
+ }
5788
+
5789
+ /* Density variants - Clear differences */
5790
+ .datatable2--compact {
5791
+ font-size: 0.8rem;
5792
+ }
5793
+
5794
+ .datatable2--compact th,
5795
+ .datatable2--compact td {
5796
+ padding: 0.25rem 0.5rem;
5797
+ line-height: 1.2;
5798
+ height: 28px;
5799
+ }
5800
+
5801
+ .datatable2--normal {
5802
+ font-size: 0.9rem;
5803
+ }
5804
+
5805
+ .datatable2--normal th,
5806
+ .datatable2--normal td {
5807
+ padding: 0.5rem 0.75rem;
5808
+ line-height: 1.4;
5809
+ height: 40px;
5810
+ }
5811
+
5812
+ .datatable2--comfortable {
5813
+ font-size: 1rem;
5814
+ }
5815
+
5816
+ .datatable2--comfortable th,
5817
+ .datatable2--comfortable td {
5818
+ padding: 0.875rem 1.25rem;
5819
+ line-height: 1.6;
5820
+ height: 52px;
5821
+ }
5822
+
5823
+ /* Theme variants */
5824
+ .datatable2--dark {
5825
+ background: var(--background-color-dark, #303030);
5826
+ color: var(--text-color-dark, #ffffff);
5827
+ }
5828
+
5829
+ .datatable2--dark th {
5830
+ background: var(--background-color-light-dark, #424242);
5831
+ color: var(--text-color-dark, #ffffff);
5832
+ }
5833
+
5834
+ .datatable2--dark tbody tr:hover {
5835
+ background-color: var(--hover-color-dark, rgba(255, 255, 255, 0.08));
5836
+ }
5837
+
5838
+ .datatable2--minimal {
5839
+ box-shadow: none;
5840
+ border: none;
5841
+ }
5842
+
5843
+ .datatable2--minimal th {
5844
+ border-bottom: 2px solid var(--primary-color, #2196f3);
5845
+ background: transparent;
5846
+ }
5847
+
5848
+ /* Header enhancements */
5849
+ .datatable2__header--sticky {
5850
+ position: sticky;
5851
+ top: 0;
5852
+ z-index: 10;
5853
+ background: var(--background-color, #ffffff);
5854
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
5855
+ }
5856
+
5857
+ .datatable2__row-number-header {
5858
+ width: 60px;
5859
+ text-align: center;
5860
+ background: var(--background-color-light, #f8f9fa);
5861
+ font-weight: 600;
5862
+ }
5863
+
5864
+ /* Row numbers */
5865
+ .datatable2__row-number {
5866
+ width: 60px;
5867
+ text-align: center;
5868
+ background: var(--background-color-light, #f8f9fa);
5869
+ font-weight: 500;
5870
+ color: var(--text-color-light, #666);
5871
+ border-right: 1px solid var(--divider-color, #e0e0e0);
5872
+ }
5873
+
5874
+ /* Column resizing - Enhanced visibility */
5875
+ .resizable-column {
5876
+ position: relative;
5877
+ -webkit-user-select: none;
5878
+ -moz-user-select: none;
5879
+ user-select: none;
5880
+ }
5881
+
5882
+ .column-resizer {
5883
+ position: absolute;
5884
+ top: 0;
5885
+ right: -2px;
5886
+ width: 6px;
5887
+ height: 100%;
5888
+ cursor: col-resize;
5889
+ background: transparent;
5890
+ transition: all 0.2s ease;
5891
+ z-index: 10;
5892
+ border-right: 2px solid transparent;
5893
+ }
5894
+
5895
+ .column-resizer:hover {
5896
+ background: rgba(33, 150, 243, 0.1);
5897
+ border-right-color: var(--primary-color, #2196f3);
5898
+ }
5899
+
5900
+ .column-resizer:active {
5901
+ background: rgba(33, 150, 243, 0.2);
5902
+ border-right-color: var(--primary-color, #2196f3);
5903
+ }
5904
+
5905
+ /* Add resize indicator */
5906
+ .resizable-column:hover .column-resizer::after {
5907
+ content: '';
5908
+ position: absolute;
5909
+ top: 50%;
5910
+ right: 1px;
5911
+ transform: translateY(-50%);
5912
+ width: 2px;
5913
+ height: 20px;
5914
+ background: var(--primary-color, #2196f3);
5915
+ border-radius: 1px;
5916
+ }
5917
+
5918
+ /* Loading states */
5919
+ .datatable2--loading {
5920
+ opacity: 0.7;
5921
+ pointer-events: none;
5922
+ }
5923
+
5924
+ .datatable2--skeleton .skeleton-text {
5925
+ background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
5926
+ background-size: 200% 100%;
5927
+ animation: skeleton-loading 1.5s infinite;
5928
+ border-radius: 4px;
5929
+ height: 1rem;
5930
+ margin: 0.25rem 0;
5931
+ }
5932
+
5933
+ .datatable2--skeleton .skeleton-text--header {
5934
+ height: 1.2rem;
5935
+ background: linear-gradient(90deg, #e0e0e0 25%, #d0d0d0 50%, #e0e0e0 75%);
5936
+ background-size: 200% 100%;
5937
+ }
5938
+
5939
+ /* Row selection */
5940
+ .datatable2 tbody tr.selected {
5941
+ background-color: rgba(33, 150, 243, 0.1);
5942
+ border-left: 3px solid var(--primary-color, #2196f3);
5943
+ }
5944
+
5945
+ .datatable2 tbody tr:hover {
5946
+ background-color: var(--hover-color, rgba(0, 0, 0, 0.04));
5947
+ }
5948
+
5949
+ /* Footer */
5950
+ .datatable2__footer {
5951
+ padding: 1rem;
5952
+ border-top: 1px solid var(--divider-color, #e0e0e0);
5953
+ background: var(--background-color-light, #f8f9fa);
5954
+ display: flex;
5955
+ justify-content: space-between;
5956
+ align-items: center;
5957
+ }
5958
+
5959
+ /* Pagination */
5960
+ .datatable2__pagination {
5961
+ display: flex;
5962
+ justify-content: center;
5963
+ align-items: center;
5964
+ gap: 1rem;
5965
+ padding: 1rem;
5966
+ border-top: 1px solid var(--divider-color, #e0e0e0);
5967
+ }
5968
+
5969
+ .datatable2__pagination button {
5970
+ padding: 0.5rem 1rem;
5971
+ border: 1px solid var(--divider-color, #e0e0e0);
5972
+ background: white;
5973
+ color: var(--text-color, #333);
5974
+ border-radius: 4px;
5975
+ cursor: pointer;
5976
+ transition: all 0.2s ease;
5977
+ }
5978
+
5979
+ .datatable2__pagination button:hover:not(:disabled) {
5980
+ background: var(--primary-color, #2196f3);
5981
+ color: white;
5982
+ border-color: var(--primary-color, #2196f3);
5983
+ }
5984
+
5985
+ .datatable2__pagination button:disabled {
5986
+ opacity: 0.6;
5987
+ cursor: not-allowed;
5988
+ }
5989
+
5990
+ /* Enhanced cell viewers */
5991
+ .image-cell {
5992
+ display: flex;
5993
+ align-items: center;
5994
+ gap: 0.5rem;
5995
+ }
5996
+
5997
+ .image-cell img {
5998
+ width: 32px;
5999
+ height: 32px;
6000
+ border-radius: 50%;
6001
+ -o-object-fit: cover;
6002
+ object-fit: cover;
6003
+ }
6004
+
6005
+ .entity-cell {
6006
+ padding: 0.25rem 0.5rem;
6007
+ }
6008
+
6009
+ .field-editor {
6010
+ width: 100%;
6011
+ }
6012
+
6013
+ .string-viewer {
6014
+ max-width: 200px;
6015
+ overflow: hidden;
6016
+ text-overflow: ellipsis;
6017
+ white-space: nowrap;
6018
+ }
6019
+
6020
+ /* Responsive design */
6021
+ .datatable2--responsive {
6022
+ overflow-x: auto;
6023
+ }
6024
+
6025
+ @media (max-width: 768px) {
6026
+ .datatable2--responsive table {
6027
+ min-width: 600px;
6028
+ }
6029
+
6030
+ .datatable2__search {
6031
+ padding: 0.75rem;
6032
+ }
6033
+
6034
+ .datatable2__toolbar {
6035
+ padding: 0.5rem 0.75rem;
6036
+ flex-direction: column;
6037
+ gap: 0.5rem;
6038
+ }
6039
+
6040
+ .datatable2__export-btn {
6041
+ width: 100%;
6042
+ justify-content: center;
6043
+ }
6044
+
6045
+ .datatable2__row-number {
6046
+ width: 40px;
6047
+ }
6048
+
6049
+ .datatable2__row-number-header {
6050
+ width: 40px;
6051
+ }
6052
+
6053
+ .datatable2--small th,
6054
+ .datatable2--small td,
6055
+ .datatable2--medium th,
6056
+ .datatable2--medium td,
6057
+ .datatable2--large th,
6058
+ .datatable2--large td {
6059
+ padding: 0.375rem 0.5rem;
6060
+ font-size: 0.8rem;
6061
+ }
6062
+ }
6063
+
6064
+ /* Animations */
6065
+ @keyframes skeleton-loading {
6066
+ 0% {
6067
+ background-position: 200% 0;
6068
+ }
6069
+ 100% {
6070
+ background-position: -200% 0;
6071
+ }
6072
+ }
6073
+
6074
+ /* Dark theme support */
6075
+ @media (prefers-color-scheme: dark) {
6076
+ .datatable2 {
6077
+ background: var(--background-color-dark, #303030);
6078
+ color: var(--text-color-dark, #ffffff);
6079
+ }
6080
+
6081
+ .datatable2__search,
6082
+ .datatable2__toolbar,
6083
+ .datatable2__footer {
6084
+ background: var(--background-color-light-dark, #424242);
6085
+ border-color: var(--divider-color-dark, #616161);
6086
+ }
6087
+
6088
+ .datatable2--striped tbody tr:nth-child(even) {
6089
+ background-color: var(--background-color-light-dark, #424242);
6090
+ }
6091
+
6092
+ .datatable2__header--sticky {
6093
+ background: var(--background-color-dark, #303030);
6094
+ }
6095
+
6096
+ .datatable2__row-number,
6097
+ .datatable2__row-number-header {
6098
+ background: var(--background-color-light-dark, #424242);
6099
+ color: var(--text-color-light-dark, #cccccc);
6100
+ border-color: var(--divider-color-dark, #616161);
6101
+ }
6102
+
6103
+ .datatable2 tbody tr:hover {
6104
+ background-color: var(--hover-color-dark, rgba(255, 255, 255, 0.08));
6105
+ }
6106
+
6107
+ .datatable2 tbody tr.selected {
6108
+ background-color: rgba(100, 181, 246, 0.2);
6109
+ border-left-color: var(--primary-color-dark, #64b5f6);
6110
+ }
6111
+
6112
+ .datatable2--skeleton .skeleton-text {
6113
+ background: linear-gradient(90deg, #424242 25%, #616161 50%, #424242 75%);
6114
+ background-size: 200% 100%;
6115
+ }
6116
+
6117
+ .datatable2--skeleton .skeleton-text--header {
6118
+ background: linear-gradient(90deg, #616161 25%, #757575 50%, #616161 75%);
6119
+ background-size: 200% 100%;
6120
+ }
6121
+
6122
+ .datatable2__pagination button {
6123
+ background: var(--background-color-dark, #303030);
6124
+ color: var(--text-color-dark, #ffffff);
6125
+ border-color: var(--divider-color-dark, #616161);
6126
+ }
6127
+
6128
+ .datatable2__export-btn {
6129
+ border-color: var(--primary-color-dark, #64b5f6);
6130
+ color: var(--primary-color-dark, #64b5f6);
6131
+ }
6132
+
6133
+ .datatable2__export-btn:hover:not(:disabled) {
6134
+ background: var(--primary-color-dark, #64b5f6);
6135
+ color: var(--text-color-dark, #000);
6136
+ }
6137
+ }
6138
+
6139
+ /* High contrast mode */
6140
+ @media (prefers-contrast: high) {
6141
+ .datatable2 {
6142
+ border: 2px solid currentColor;
6143
+ }
6144
+
6145
+ .datatable2--bordered th,
6146
+ .datatable2--bordered td {
6147
+ border-width: 2px;
6148
+ }
6149
+
6150
+ .datatable2 tbody tr.selected {
6151
+ outline: 3px solid var(--primary-color, #2196f3);
6152
+ outline-offset: -3px;
6153
+ }
6154
+
6155
+ .datatable2__export-btn {
6156
+ border-width: 2px;
6157
+ font-weight: 600;
6158
+ }
6159
+ }
6160
+
6161
+ /* Reduced motion */
6162
+ @media (prefers-reduced-motion: reduce) {
6163
+ .datatable2,
6164
+ .datatable2__export-btn,
6165
+ .datatable2__pagination button,
6166
+ .column-resizer {
6167
+ transition: none;
6168
+ }
6169
+
6170
+ .datatable2--skeleton .skeleton-text,
6171
+ .datatable2--skeleton .skeleton-text--header {
6172
+ animation: none;
6173
+ background: #e0e0e0;
6174
+ }
6175
+ }
6176
+
6177
+ /* Print styles */
6178
+ @media print {
6179
+ .datatable2 {
6180
+ -moz-column-break-inside: avoid;
6181
+ break-inside: avoid;
6182
+ box-shadow: none !important;
6183
+ border: 1px solid black !important;
6184
+ }
6185
+
6186
+ .datatable2__search,
6187
+ .datatable2__toolbar,
6188
+ .datatable2__footer,
6189
+ .datatable2__pagination {
6190
+ display: none !important;
6191
+ }
6192
+
6193
+ .datatable2 th,
6194
+ .datatable2 td {
6195
+ border: 1px solid black !important;
6196
+ background: white !important;
6197
+ color: black !important;
6198
+ }
6199
+
6200
+ .datatable2 tbody tr:hover {
6201
+ background: white !important;
6202
+ }
6203
+
6204
+ .datatable2 tbody tr.selected {
6205
+ background: #f0f0f0 !important;
6206
+ border-left: none !important;
6207
+ }
6208
+
6209
+ .column-resizer {
6210
+ display: none !important;
6211
+ }
6212
+ }
6213
+
6214
+ /* Original TokenField styles (preserved for compatibility) */
6215
+ .tokenField {
6216
+ min-height: 3.8;
6217
+ position: relative;
6218
+ border-bottom: solid 1px var(--divider-color);
6219
+ display: flex;
6220
+ align-items: center;
6221
+ margin: 1rem 0 0 0;
6222
+ flex-wrap: wrap;
6223
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
6224
+ }
6225
+
6226
+ .tokenField>label {
6227
+ color: var(--primary-color);
6228
+ font-size: .8rem;
6229
+ font-weight: normal;
6230
+ position: absolute;
6231
+ pointer-events: none;
6232
+ top:-9px;
6233
+ padding: 2px 6px 2px 4px;
6234
+ }
6235
+
6236
+ .tokenField input,
6237
+ .tokenField .dropdown {
6238
+ border: 0px;
6239
+ padding: .5rem 0;
6240
+ font-size: 1rem;
6241
+ flex: 1;
6242
+ min-width: 3rem;
6243
+ }
6244
+
6245
+ .token {
6246
+ display: flex;
6247
+ border: solid 1px var(--divider-color);
6248
+ background-color: rgba(200,200,200,.1);
6249
+ align-items: center;
6250
+ padding: .2rem .2rem .2rem .4rem;
6251
+ border-radius: .3rem !important;
6252
+ margin: .2rem;
6253
+ max-height: 2rem;
6254
+ transition: all 0.2s ease;
6255
+ outline: none;
6256
+ cursor: default;
6257
+ }
6258
+
6259
+ .token > div {
6260
+ white-space: nowrap;
6261
+ }
6262
+
6263
+ .token button {
6264
+ width: 2rem;
6265
+ height: 1.6rem;
6266
+ font-size: .8rem !important;
6267
+ padding: 0 !important;
6268
+ margin-left: .2rem;
6269
+ }
6270
+
6271
+ /* Enhanced TokenField Styles - New functionality while maintaining compatibility */
6272
+
6273
+ /* Size variants */
6274
+ .tokenField--small {
6275
+ min-height: 3rem;
6276
+ margin: 0.75rem 0 0 0;
6277
+ }
6278
+
6279
+ .tokenField--small > label {
6280
+ font-size: 0.7rem;
6281
+ top: -8px;
6282
+ }
6283
+
6284
+ .tokenField--medium {
6285
+ min-height: 3.8rem;
6286
+ margin: 1rem 0 0 0;
6287
+ }
6288
+
6289
+ .tokenField--large {
4592
6290
  min-height: 4.5rem;
4593
6291
  margin: 1.25rem 0 0 0;
4594
6292
  }
@@ -5064,7 +6762,10 @@ textarea:read-only ~ label,
5064
6762
 
5065
6763
  .tree-item>.label {
5066
6764
  padding-left: .8rem;
5067
- width: 100%;
6765
+ flex: 1;
6766
+ display: flex;
6767
+ align-items: center;
6768
+ justify-content: space-between;
5068
6769
  }
5069
6770
 
5070
6771
  .tree-item>.label.clickable:hover {
@@ -5072,6 +6773,14 @@ textarea:read-only ~ label,
5072
6773
  color: var(--accent-color);
5073
6774
  }
5074
6775
 
6776
+ /* TreeNode label text */
6777
+ .tree-node__label-text {
6778
+ flex: 1;
6779
+ overflow: hidden;
6780
+ text-overflow: ellipsis;
6781
+ white-space: nowrap;
6782
+ }
6783
+
5075
6784
  .tree-item>.actions {
5076
6785
  padding: 0 .5rem;
5077
6786
  color: var(--text-color-lighter);
@@ -5084,18 +6793,7 @@ textarea:read-only ~ label,
5084
6793
  height: 2rem;
5085
6794
  }
5086
6795
 
5087
- .tree-node>summary::before {
5088
- content: "\25B6";
5089
- color: black;
5090
- display: inline-block;
5091
- margin-right: 6px;
5092
- font-size: 10px;
5093
- color: rgba(0,0,0,.3);
5094
- }
5095
-
5096
- details[open].tree-node>summary::before {
5097
- transform: rotate(90deg)
5098
- }
6796
+ /* Removed native CSS triangle icon to avoid duplication with Material Design icons */
5099
6797
 
5100
6798
  /* Enhanced Tree Styles - New functionality while maintaining compatibility */
5101
6799
 
@@ -5246,13 +6944,15 @@ details[open].tree-node>summary::before {
5246
6944
  font-weight: 500;
5247
6945
  padding: 0.125rem 0.375rem;
5248
6946
  border-radius: 10px;
5249
- margin-left: 0.5rem;
6947
+ margin: 0.5rem;
5250
6948
  min-width: 1.25rem;
5251
6949
  height: 1.25rem;
5252
- display: flex;
6950
+ display: inline-flex;
5253
6951
  align-items: center;
5254
6952
  justify-content: center;
5255
6953
  line-height: 1;
6954
+ flex-shrink: 0;
6955
+ white-space: nowrap;
5256
6956
  }
5257
6957
 
5258
6958
  /* TreeNode children */
@@ -5316,7 +7016,7 @@ details[open].tree-node>summary::before {
5316
7016
  font-weight: 500;
5317
7017
  padding: 0.125rem 0.375rem;
5318
7018
  border-radius: 10px;
5319
- margin-left: 0.5rem;
7019
+ margin: 0.5rem;
5320
7020
  min-width: 1.25rem;
5321
7021
  height: 1.25rem;
5322
7022
  display: flex;