ywana-core8 0.1.79 → 0.1.81

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.
Files changed (70) hide show
  1. package/dist/index.cjs +3493 -2320
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.css +2096 -1125
  4. package/dist/index.css.map +1 -1
  5. package/dist/index.modern.js +3493 -2320
  6. package/dist/index.modern.js.map +1 -1
  7. package/dist/index.umd.js +3493 -2320
  8. package/dist/index.umd.js.map +1 -1
  9. package/package.json +1 -1
  10. package/src/html/ExampleLayout.css +401 -0
  11. package/src/html/ExampleLayout.js +192 -0
  12. package/src/html/README-sidebar-navigation.md +195 -0
  13. package/src/html/accordion.example.js +123 -4
  14. package/src/html/accordion.example.js.backup +390 -0
  15. package/src/html/button.example.js +50 -3
  16. package/src/html/button.example.js.backup +374 -0
  17. package/src/html/button.example.new.js +416 -0
  18. package/src/html/button.js +22 -4
  19. package/src/html/checkbox.example.js +93 -4
  20. package/src/html/checkbox.example.js.backup +316 -0
  21. package/src/html/chip.example.js +108 -4
  22. package/src/html/chip.example.js.backup +355 -0
  23. package/src/html/color.example.js +108 -4
  24. package/src/html/color.example.js.backup +527 -0
  25. package/src/html/components.example.js +123 -4
  26. package/src/html/components.example.js.backup +492 -0
  27. package/src/html/convert-examples.js +183 -0
  28. package/src/html/demo-sidebar.html +410 -0
  29. package/src/html/form.example.js +93 -4
  30. package/src/html/form.example.js.backup +385 -0
  31. package/src/html/header.js +20 -3
  32. package/src/html/header2.example.js +108 -4
  33. package/src/html/header2.example.js.backup +411 -0
  34. package/src/html/icon.example.js +77 -3
  35. package/src/html/icon.example.js.backup +268 -0
  36. package/src/html/list.example.js +93 -4
  37. package/src/html/list.example.js.backup +404 -0
  38. package/src/html/progress.example.js +74 -4
  39. package/src/html/progress.example.js.backup +424 -0
  40. package/src/html/property.example.js +123 -4
  41. package/src/html/property.example.js.backup +553 -0
  42. package/src/html/radio.example.js +108 -4
  43. package/src/html/radio.example.js.backup +389 -0
  44. package/src/html/section.example.js +42 -3
  45. package/src/html/section.example.js.backup +99 -0
  46. package/src/html/switch.example.js +108 -4
  47. package/src/html/switch.example.js.backup +461 -0
  48. package/src/html/tab.example.js +93 -4
  49. package/src/html/tab.example.js.backup +446 -0
  50. package/src/html/table-export-utils.js +483 -0
  51. package/src/html/table-summary-functions.js +363 -0
  52. package/src/html/table2.css +1449 -479
  53. package/src/html/table2.example.js +2937 -512
  54. package/src/html/table2.example.js.broken +1226 -0
  55. package/src/html/table2.js +1426 -1000
  56. package/src/html/test-resize.html +279 -0
  57. package/src/html/test-selection.html +387 -0
  58. package/src/html/textfield.js +73 -7
  59. package/src/html/textfield2.example.js +108 -4
  60. package/src/html/textfield2.example.js.backup +1370 -0
  61. package/src/html/textfield2.js +19 -4
  62. package/src/html/tokenfield.example.js +108 -4
  63. package/src/html/tokenfield.example.js.backup +503 -0
  64. package/src/html/tooltip.js +21 -3
  65. package/src/html/tree.css +2 -4
  66. package/src/html/tree.example.js +93 -4
  67. package/src/html/tree.example.js.backup +475 -0
  68. package/src/html/tree.js +19 -3
  69. package/src/widgets/login/LoginBox.css +1 -0
  70. package/src/widgets/login/LoginBox.js +29 -6
package/dist/index.css CHANGED
@@ -4781,1527 +4781,2499 @@ textarea:read-only ~ label,
4781
4781
  resize: horizontal;
4782
4782
  overflow: hidden;
4783
4783
  }
4784
- /* Enhanced TextField2 Styles */
4784
+ /* DataTable2 - Reimplemented with minimal, elegant styles */
4785
4785
 
4786
- .textfield2 {
4787
- flex: 1;
4788
- position: relative;
4789
- padding-top: 1.5rem;
4790
- overflow: visible;
4791
- display: flex;
4792
- flex-direction: column;
4793
- min-height: auto;
4794
- transition: all 0.2s ease;
4786
+ /* Base table styles */
4787
+ .datatable2 {
4788
+ width: 100%;
4789
+ background: var(--background-color, #ffffff);
4790
+ border-radius: 8px;
4791
+ overflow: hidden;
4792
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
4793
+ border: 1px solid var(--divider-color, #e0e0e0);
4795
4794
  }
4796
4795
 
4797
- .textfield2.no-label {
4798
- padding-top: 0.5rem;
4799
- padding-bottom: 0.5rem;
4796
+ .datatable2__table-container {
4797
+ overflow: auto;
4798
+ position: relative;
4800
4799
  }
4801
4800
 
4802
- .textfield2.label-left {
4803
- flex-direction: row;
4804
- align-items: center;
4805
- padding-top: 0.5rem;
4801
+ .datatable2 table {
4802
+ width: 100%;
4803
+ border-collapse: collapse;
4804
+ table-layout: auto;
4806
4805
  }
4807
4806
 
4808
- /* Input and textarea base styles */
4809
- .textfield2 > input,
4810
- .textfield2 > textarea {
4811
- flex: 1;
4812
- padding: 10px 10px 10px 0.5rem;
4813
- display: block;
4814
- border: none;
4807
+ /* Header styles */
4808
+ .datatable2__header {
4809
+ background: var(--surface-color, #f8f9fa);
4815
4810
  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;
4823
4811
  }
4824
4812
 
4825
- .textfield2 > textarea {
4826
- min-height: 4rem;
4827
- padding-top: 0.75rem;
4828
- line-height: 1.4;
4813
+ .datatable2__header--sticky {
4814
+ position: sticky;
4815
+ top: 0;
4816
+ z-index: 10;
4829
4817
  }
4830
4818
 
4831
- /* Focus styles */
4832
- .textfield2 > input:focus,
4833
- .textfield2 > textarea:focus {
4834
- outline: none;
4835
- border-color: var(--primary-color, #2196f3);
4819
+ .datatable2__header-cell {
4820
+ padding: 12px 16px;
4821
+ text-align: left;
4822
+ font-weight: 600;
4823
+ color: var(--text-color-secondary, #666);
4824
+ font-size: 0.875rem;
4825
+ border-right: 1px solid var(--divider-color, #e0e0e0);
4826
+ position: relative;
4827
+ -webkit-user-select: none;
4828
+ -moz-user-select: none;
4829
+ user-select: none;
4836
4830
  }
4837
4831
 
4838
- .textfield2.focused > input,
4839
- .textfield2.focused > textarea {
4840
- border-color: var(--primary-color, #2196f3);
4832
+ .datatable2__header-cell:last-child {
4833
+ border-right: none;
4841
4834
  }
4842
4835
 
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;
4836
+ .datatable2__header-cell.sortable {
4837
+ cursor: pointer;
4838
+ transition: background-color 0.2s ease;
4848
4839
  }
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;
4840
+
4841
+ .datatable2__header-cell.sortable:hover {
4842
+ background: var(--hover-color, rgba(0, 0, 0, 0.04));
4856
4843
  }
4857
4844
 
4858
- /* Disabled styles */
4859
- .textfield2.disabled {
4860
- opacity: 0.6;
4861
- pointer-events: none;
4845
+ .datatable2__header-content {
4846
+ display: flex;
4847
+ align-items: center;
4848
+ justify-content: space-between;
4849
+ gap: 8px;
4862
4850
  }
4863
4851
 
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;
4852
+ /* Resize handle */
4853
+ .datatable2__resize-handle {
4854
+ position: absolute;
4855
+ top: 0;
4856
+ right: 0;
4857
+ width: 4px;
4858
+ height: 100%;
4859
+ cursor: col-resize;
4860
+ background: transparent;
4861
+ transition: background-color 0.2s ease;
4862
+ z-index: 10;
4869
4863
  }
4870
4864
 
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);
4865
+ .datatable2__resize-handle:hover {
4866
+ background: var(--primary-color, #2196f3);
4877
4867
  }
4878
4868
 
4879
- .textfield2.error > label,
4880
- .textfield2.invalid > label {
4881
- color: var(--error-color, #f44336);
4869
+ .datatable2__resize-handle:active {
4870
+ background: var(--primary-color, #2196f3);
4882
4871
  }
4883
4872
 
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;
4873
+ /* Global cursor during resize */
4874
+ body.datatable2-resizing {
4875
+ cursor: col-resize !important;
4876
+ -webkit-user-select: none !important;
4877
+ -moz-user-select: none !important;
4878
+ user-select: none !important;
4879
+ }
4880
+
4881
+ /* ========================================
4882
+ READABLE THEME - Máxima Legibilidad
4883
+ ======================================== */
4884
+
4885
+ .datatable2--readable {
4886
+ /* Tipografía optimizada para legibilidad */
4887
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', 'SF Pro Text', system-ui, sans-serif;
4888
+ font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1, 'pnum' 1, 'tnum' 0, 'onum' 0, 'lnum' 1, 'zero' 1;
4889
+ -webkit-font-smoothing: antialiased;
4890
+ -moz-osx-font-smoothing: grayscale;
4891
+ text-rendering: optimizeLegibility;
4892
+
4893
+ /* Colores optimizados para contraste */
4894
+ --readable-bg: #fefefe;
4895
+ --readable-text: #1a1a1a;
4896
+ --readable-text-secondary: #4a4a4a;
4897
+ --readable-text-muted: #6b6b6b;
4898
+ --readable-border: #e1e5e9;
4899
+ --readable-border-light: #f0f3f6;
4900
+ --readable-hover: #f8fafc;
4901
+ --readable-selected: #e8f4fd;
4902
+ --readable-header-bg: #f7f9fc;
4903
+ --readable-header-text: #2d3748;
4904
+ --readable-focus: #3182ce;
4905
+ --readable-focus-ring: rgba(49, 130, 206, 0.15);
4906
+
4907
+ background-color: var(--readable-bg);
4908
+ color: var(--readable-text);
4909
+ line-height: 1.6;
4910
+ letter-spacing: -0.01em;
4893
4911
  }
4894
4912
 
4895
- .textfield2-clear:hover,
4896
- .textfield2-password-toggle:hover {
4897
- color: var(--text-color, #333);
4913
+ .datatable2--readable .datatable2__table-container {
4914
+ border: 1px solid var(--readable-border);
4915
+ border-radius: 12px;
4916
+ overflow: hidden;
4917
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1);
4898
4918
  }
4899
4919
 
4900
- .textfield2.no-label .textfield2-clear,
4901
- .textfield2.no-label .textfield2-password-toggle {
4902
- top: 0.5rem;
4920
+ .datatable2--readable table {
4921
+ border-spacing: 0;
4922
+ border-collapse: separate;
4923
+ width: 100%;
4903
4924
  }
4904
4925
 
4905
- .textfield2-password-toggle {
4906
- right: 2.2rem;
4926
+ /* Headers optimizados para legibilidad */
4927
+ .datatable2--readable .datatable2__header {
4928
+ background: linear-gradient(180deg, var(--readable-header-bg) 0%, #f1f5f9 100%);
4929
+ border-bottom: 2px solid var(--readable-border);
4907
4930
  }
4908
4931
 
4909
- .textfield2.textfield2-date .textfield2-clear,
4910
- .textfield2.textfield2-time .textfield2-clear {
4911
- right: 2.5rem;
4932
+ .datatable2--readable .datatable2__header-cell {
4933
+ padding: 16px 20px;
4934
+ font-weight: 600;
4935
+ font-size: 14px;
4936
+ color: var(--readable-header-text);
4937
+ text-align: left;
4938
+ border-right: 1px solid var(--readable-border-light);
4939
+ position: relative;
4940
+ letter-spacing: -0.005em;
4912
4941
  }
4913
4942
 
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;
4943
+ .datatable2--readable .datatable2__header-cell:last-child {
4944
+ border-right: none;
4925
4945
  }
4926
4946
 
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;
4947
+ .datatable2--readable .datatable2__header-cell.sortable {
4948
+ cursor: pointer;
4949
+ transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
4936
4950
  }
4937
4951
 
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);
4952
+ .datatable2--readable .datatable2__header-cell.sortable:hover {
4953
+ background-color: var(--readable-hover);
4954
+ color: var(--readable-focus);
4951
4955
  }
4952
4956
 
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);
4957
+ .datatable2--readable .datatable2__header-cell.sortable:focus {
4958
+ outline: 2px solid var(--readable-focus);
4959
+ outline-offset: -2px;
4960
+ background-color: var(--readable-focus-ring);
4958
4961
  }
4959
4962
 
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);
4963
+ /* Celdas optimizadas para lectura */
4964
+ .datatable2--readable .datatable2__cell {
4965
+ padding: 18px 20px;
4966
+ font-size: 15px;
4967
+ line-height: 1.5;
4968
+ color: var(--readable-text);
4969
+ border-right: 1px solid var(--readable-border-light);
4970
+ border-bottom: 1px solid var(--readable-border-light);
4971
+ vertical-align: top;
4972
+ word-wrap: break-word;
4973
+ hyphens: auto;
4970
4974
  }
4971
4975
 
4972
- /* Focus bar animation */
4973
- .textfield2-bar {
4974
- position: relative;
4975
- display: block;
4976
- width: 100%;
4976
+ .datatable2--readable .datatable2__cell:last-child {
4977
+ border-right: none;
4977
4978
  }
4978
4979
 
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;
4980
+ /* Filas con mejor separación visual */
4981
+ .datatable2--readable .datatable2__row {
4982
+ transition: all 0.15s ease-in-out;
4988
4983
  }
4989
4984
 
4990
- .textfield2-bar:before {
4991
- left: 50%;
4985
+ .datatable2--readable .datatable2__row:hover {
4986
+ background-color: var(--readable-hover);
4992
4987
  }
4993
4988
 
4994
- .textfield2-bar:after {
4995
- right: 50%;
4989
+ .datatable2--readable .datatable2__row:hover .datatable2__cell {
4990
+ border-bottom-color: var(--readable-border);
4996
4991
  }
4997
4992
 
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%;
4993
+ .datatable2--readable .datatable2__row--selected {
4994
+ background-color: var(--readable-selected) !important;
5006
4995
  }
5007
4996
 
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);
4997
+ .datatable2--readable .datatable2__row--selected .datatable2__cell {
4998
+ border-bottom-color: #bee3f8;
5013
4999
  }
5014
5000
 
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;
5001
+ /* Filas alternas para mejor escaneado */
5002
+ .datatable2--readable.datatable2--striped .datatable2__row:nth-child(even) {
5003
+ background-color: #fbfcfd;
5024
5004
  }
5025
5005
 
5026
- .textfield2-helper.helper {
5027
- color: var(--text-color-light, #666);
5006
+ .datatable2--readable.datatable2--striped .datatable2__row:nth-child(even):hover {
5007
+ background-color: var(--readable-hover);
5028
5008
  }
5029
5009
 
5030
- .textfield2-helper.error {
5031
- color: var(--error-color, #f44336);
5010
+ /* Números y datos numéricos */
5011
+ .datatable2--readable .datatable2__cell[data-type="number"],
5012
+ .datatable2--readable .datatable2__cell[data-type="Number"] {
5013
+ font-variant-numeric: tabular-nums;
5014
+ text-align: right;
5015
+ font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', 'Consolas', monospace;
5016
+ font-size: 14px;
5017
+ letter-spacing: 0.025em;
5032
5018
  }
5033
5019
 
5034
- .textfield2-helper .icon {
5035
- flex-shrink: 0;
5020
+ /* Texto secundario */
5021
+ .datatable2--readable .datatable2__cell--secondary {
5022
+ color: var(--readable-text-secondary);
5023
+ font-size: 14px;
5036
5024
  }
5037
5025
 
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);
5026
+ .datatable2--readable .datatable2__cell--muted {
5027
+ color: var(--readable-text-muted);
5028
+ font-size: 13px;
5044
5029
  }
5045
5030
 
5046
- .textfield2-outlined > input,
5047
- .textfield2-outlined > textarea {
5048
- border: none;
5049
- padding: 0.5rem;
5031
+ /* Estados de carga mejorados */
5032
+ .datatable2--readable .datatable2__loading {
5033
+ background-color: var(--readable-bg);
5034
+ color: var(--readable-text-secondary);
5050
5035
  }
5051
5036
 
5052
- .textfield2-outlined > label {
5053
- background-color: var(--paper-color, #fff);
5054
- padding: 0 0.25rem;
5055
- left: 0.75rem;
5056
- top: -0.5rem;
5037
+ /* Checkboxes y controles */
5038
+ .datatable2--readable .datatable2__select-header,
5039
+ .datatable2--readable .datatable2__select-cell {
5040
+ padding: 16px 12px;
5041
+ text-align: center;
5042
+ border-right: 1px solid var(--readable-border-light);
5057
5043
  }
5058
5044
 
5059
- .textfield2-outlined.focused,
5060
- .textfield2-outlined > input:focus,
5061
- .textfield2-outlined > textarea:focus {
5062
- border-color: var(--primary-color, #2196f3);
5045
+ .datatable2--readable input[type="checkbox"] {
5046
+ width: 18px;
5047
+ height: 18px;
5048
+ accent-color: var(--readable-focus);
5049
+ }
5050
+
5051
+ /* Filtros y búsqueda */
5052
+ .datatable2--readable .datatable2__search {
5053
+ padding: 16px 20px;
5054
+ background-color: var(--readable-header-bg);
5055
+ border-bottom: 1px solid var(--readable-border);
5056
+ }
5057
+
5058
+ .datatable2--readable .datatable2__search input {
5059
+ font-size: 15px;
5060
+ padding: 12px 16px;
5061
+ border: 2px solid var(--readable-border);
5062
+ border-radius: 8px;
5063
+ background-color: var(--readable-bg);
5064
+ color: var(--readable-text);
5065
+ transition: border-color 0.2s ease;
5066
+ }
5067
+
5068
+ .datatable2--readable .datatable2__search input:focus {
5063
5069
  outline: none;
5070
+ border-color: var(--readable-focus);
5071
+ box-shadow: 0 0 0 3px var(--readable-focus-ring);
5064
5072
  }
5065
5073
 
5066
- .textfield2-outlined.error,
5067
- .textfield2-outlined.invalid {
5068
- border-color: var(--error-color, #f44336);
5074
+ /* Iconos con mejor contraste */
5075
+ .datatable2--readable .icon {
5076
+ color: var(--readable-text-secondary);
5077
+ transition: color 0.2s ease;
5069
5078
  }
5070
5079
 
5071
- .textfield2-outlined .textfield2-bar {
5072
- display: none;
5080
+ .datatable2--readable .datatable2__header-cell:hover .icon {
5081
+ color: var(--readable-focus);
5073
5082
  }
5074
5083
 
5075
- /* Responsive adjustments */
5084
+ /* Responsive mejorado */
5076
5085
  @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;
5086
+ .datatable2--readable .datatable2__cell {
5087
+ padding: 14px 16px;
5088
+ font-size: 14px;
5090
5089
  }
5091
-
5092
- .textfield2-helper {
5093
- font-size: 0.7rem;
5090
+
5091
+ .datatable2--readable .datatable2__header-cell {
5092
+ padding: 12px 16px;
5093
+ font-size: 13px;
5094
5094
  }
5095
5095
  }
5096
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
- }
5097
+ /* ========================================
5098
+ READABLE VARIANTS - Variantes de Legibilidad
5099
+ ======================================== */
5100
+
5101
+ /* Large Text - Para mejor accesibilidad */
5102
+ .datatable2--readable-large {
5103
+ font-size: 16px;
5116
5104
  }
5117
5105
 
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
- }
5106
+ .datatable2--readable-large .datatable2__cell {
5107
+ padding: 20px 24px;
5108
+ font-size: 16px;
5109
+ line-height: 1.6;
5130
5110
  }
5131
5111
 
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
- }
5112
+ .datatable2--readable-large .datatable2__header-cell {
5113
+ padding: 18px 24px;
5114
+ font-size: 15px;
5115
+ font-weight: 600;
5149
5116
  }
5150
5117
 
5151
- /* Print styles */
5152
- @media print {
5153
- .textfield2 {
5154
- -moz-column-break-inside: avoid;
5155
- break-inside: avoid;
5156
- }
5118
+ .datatable2--readable-large .datatable2__cell[data-type="number"],
5119
+ .datatable2--readable-large .datatable2__cell[data-type="Number"] {
5120
+ font-size: 15px;
5121
+ }
5157
5122
 
5158
- .textfield2-clear,
5159
- .textfield2-password-toggle {
5160
- display: none !important;
5161
- }
5123
+ /* High Contrast - Para mejor visibilidad */
5124
+ .datatable2--readable-contrast {
5125
+ --readable-bg: #ffffff;
5126
+ --readable-text: #000000;
5127
+ --readable-text-secondary: #2d2d2d;
5128
+ --readable-text-muted: #4a4a4a;
5129
+ --readable-border: #cccccc;
5130
+ --readable-border-light: #e0e0e0;
5131
+ --readable-hover: #f0f0f0;
5132
+ --readable-selected: #e6f3ff;
5133
+ --readable-header-bg: #f5f5f5;
5134
+ --readable-header-text: #000000;
5135
+ --readable-focus: #0066cc;
5136
+ --readable-focus-ring: rgba(0, 102, 204, 0.25);
5137
+ }
5162
5138
 
5163
- .textfield2 > input,
5164
- .textfield2 > textarea {
5165
- border: 1px solid black !important;
5166
- background: white !important;
5167
- color: black !important;
5168
- }
5139
+ .datatable2--readable-contrast .datatable2__table-container {
5140
+ border: 2px solid var(--readable-border);
5141
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
5142
+ }
5169
5143
 
5170
- .textfield2-helper {
5171
- color: black !important;
5172
- }
5144
+ .datatable2--readable-contrast .datatable2__header {
5145
+ border-bottom: 3px solid var(--readable-border);
5173
5146
  }
5174
5147
 
5175
- /* Enhanced DropDown2 Styles */
5148
+ .datatable2--readable-contrast .datatable2__cell {
5149
+ border-bottom: 1px solid var(--readable-border);
5150
+ border-right: 1px solid var(--readable-border);
5151
+ }
5176
5152
 
5177
- .dropdown2 {
5178
- position: relative;
5179
- display: flex;
5180
- flex-direction: column;
5181
- min-width: 200px;
5153
+ /* Dyslexia Friendly - Optimizado para dislexia */
5154
+ .datatable2--readable-dyslexia {
5155
+ font-family: 'OpenDyslexic', 'Comic Sans MS', 'Trebuchet MS', sans-serif;
5156
+ letter-spacing: 0.05em;
5157
+ word-spacing: 0.1em;
5182
5158
  }
5183
5159
 
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;
5160
+ .datatable2--readable-dyslexia .datatable2__cell {
5161
+ padding: 20px 24px;
5162
+ font-size: 15px;
5163
+ line-height: 1.8;
5164
+ letter-spacing: 0.05em;
5165
+ word-spacing: 0.1em;
5195
5166
  }
5196
5167
 
5197
- .dropdown2-control:focus {
5198
- outline: none;
5199
- border-color: var(--primary-color, #2196f3);
5168
+ .datatable2--readable-dyslexia .datatable2__header-cell {
5169
+ padding: 18px 24px;
5170
+ font-size: 14px;
5171
+ font-weight: 700;
5172
+ letter-spacing: 0.1em;
5173
+ text-transform: uppercase;
5200
5174
  }
5201
5175
 
5202
- .dropdown2.disabled .dropdown2-control {
5203
- opacity: 0.6;
5204
- cursor: not-allowed;
5205
- pointer-events: none;
5176
+ .datatable2--readable-dyslexia .datatable2__row:nth-child(even) {
5177
+ background-color: #fafbfc;
5206
5178
  }
5207
5179
 
5208
- .dropdown2.readonly .dropdown2-control {
5209
- background-color: var(--disabled-background, #f5f5f5);
5210
- cursor: default;
5180
+ .datatable2--readable-dyslexia .datatable2__row:nth-child(odd) {
5181
+ background-color: #ffffff;
5211
5182
  }
5212
5183
 
5213
- .dropdown2.error .dropdown2-control {
5214
- border-color: var(--error-color, #f44336);
5184
+ /* Print Optimized - Para impresión */
5185
+ .datatable2--readable-print {
5186
+ font-family: 'Times New Roman', 'Georgia', serif;
5187
+ color: #000000;
5188
+ background-color: #ffffff;
5215
5189
  }
5216
5190
 
5217
- .dropdown2.outlined .dropdown2-control {
5218
- border-width: 2px;
5191
+ .datatable2--readable-print .datatable2__table-container {
5192
+ border: 2px solid #000000;
5193
+ border-radius: 0;
5194
+ box-shadow: none;
5219
5195
  }
5220
5196
 
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;
5197
+ .datatable2--readable-print .datatable2__cell {
5198
+ padding: 12px 16px;
5199
+ font-size: 12px;
5200
+ line-height: 1.4;
5201
+ border: 1px solid #000000;
5228
5202
  }
5229
5203
 
5230
- .dropdown2-value.placeholder {
5231
- color: var(--text-color-light, #666);
5204
+ .datatable2--readable-print .datatable2__header-cell {
5205
+ padding: 12px 16px;
5206
+ font-size: 12px;
5207
+ font-weight: bold;
5208
+ background-color: #f0f0f0;
5209
+ border: 1px solid #000000;
5232
5210
  }
5233
5211
 
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;
5212
+ @media print {
5213
+ .datatable2--readable-print {
5214
+ -webkit-print-color-adjust: exact;
5215
+ print-color-adjust: exact;
5216
+ }
5241
5217
  }
5242
5218
 
5243
- /* Indicators */
5244
- .dropdown2-indicators {
5245
- display: flex;
5246
- align-items: center;
5247
- gap: 0.25rem;
5248
- margin-left: 0.5rem;
5219
+ /* Compact Readable - Legible pero compacto */
5220
+ .datatable2--readable-compact .datatable2__cell {
5221
+ padding: 12px 16px;
5222
+ font-size: 14px;
5223
+ line-height: 1.5;
5249
5224
  }
5250
5225
 
5251
- .dropdown2-clear {
5252
- color: var(--text-color-light, #666);
5253
- cursor: pointer;
5254
- transition: color 0.2s ease;
5226
+ .datatable2--readable-compact .datatable2__header-cell {
5227
+ padding: 12px 16px;
5228
+ font-size: 13px;
5255
5229
  }
5256
5230
 
5257
- .dropdown2-clear:hover {
5258
- color: var(--text-color, #333);
5231
+ /* Focus Mode - Reduce distracciones */
5232
+ .datatable2--readable-focus {
5233
+ --readable-border-light: transparent;
5234
+ --readable-hover: rgba(59, 130, 246, 0.05);
5259
5235
  }
5260
5236
 
5261
- .dropdown2-arrow {
5262
- color: var(--text-color-light, #666);
5263
- transition: transform 0.2s ease;
5237
+ .datatable2--readable-focus .datatable2__table-container {
5238
+ border: none;
5239
+ box-shadow: none;
5264
5240
  }
5265
5241
 
5266
- .dropdown2.open .dropdown2-arrow {
5267
- transform: rotate(180deg);
5242
+ .datatable2--readable-focus .datatable2__cell {
5243
+ border-right: none;
5244
+ border-bottom: 1px solid #f1f5f9;
5268
5245
  }
5269
5246
 
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;
5247
+ .datatable2--readable-focus .datatable2__header-cell {
5248
+ border-right: none;
5249
+ background: transparent;
5250
+ border-bottom: 2px solid #e2e8f0;
5281
5251
  }
5282
5252
 
5283
- .dropdown2-label.active {
5284
- transform: scale(0.9);
5253
+ .datatable2--readable-focus .datatable2__row:hover {
5254
+ background-color: var(--readable-hover);
5255
+ transform: translateY(-1px);
5256
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
5257
+ }
5258
+
5259
+ /* Dark Mode Readable */
5260
+ .datatable2--readable-dark {
5261
+ --readable-bg: #1a202c;
5262
+ --readable-text: #f7fafc;
5263
+ --readable-text-secondary: #e2e8f0;
5264
+ --readable-text-muted: #a0aec0;
5265
+ --readable-border: #2d3748;
5266
+ --readable-border-light: #4a5568;
5267
+ --readable-hover: #2d3748;
5268
+ --readable-selected: #2a4a6b;
5269
+ --readable-header-bg: #2d3748;
5270
+ --readable-header-text: #f7fafc;
5271
+ --readable-focus: #63b3ed;
5272
+ --readable-focus-ring: rgba(99, 179, 237, 0.25);
5273
+ }
5274
+
5275
+ .datatable2--readable-dark .datatable2__table-container {
5276
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
5277
+ }
5278
+
5279
+ /* Accessibility Helpers */
5280
+ .datatable2--readable [role="columnheader"]:focus,
5281
+ .datatable2--readable [role="gridcell"]:focus {
5282
+ outline: 3px solid var(--readable-focus);
5283
+ outline-offset: -3px;
5284
+ z-index: 1;
5285
+ position: relative;
5285
5286
  }
5286
5287
 
5287
- /* Dropdown menu */
5288
- .dropdown2-menu {
5288
+ .datatable2--readable .sr-only {
5289
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);
5290
+ width: 1px;
5291
+ height: 1px;
5292
+ padding: 0;
5293
+ margin: -1px;
5298
5294
  overflow: hidden;
5299
- margin-top: 0.25rem;
5295
+ clip: rect(0, 0, 0, 0);
5296
+ white-space: nowrap;
5297
+ border: 0;
5300
5298
  }
5301
5299
 
5302
- .dropdown2-menu.top {
5303
- top: auto;
5304
- bottom: 100%;
5305
- margin-top: 0;
5306
- margin-bottom: 0.25rem;
5300
+ /* ========================================
5301
+ TOOLBAR & PANEL SYSTEM - Sistema de Toolbar y Panel
5302
+ ======================================== */
5303
+
5304
+ .datatable2__container {
5305
+ position: relative;
5306
+ display: flex;
5307
+ width: 100%;
5308
+ border: 1px solid #e2e8f0;
5309
+ border-radius: 8px;
5310
+ overflow: visible; /* Permitir que el panel se vea cuando se desliza */
5311
+ /* min-height removido - ahora es dinámico */
5307
5312
  }
5308
5313
 
5309
- .dropdown2-menu ul {
5310
- list-style: none;
5311
- margin: 0;
5312
- padding: 0.25rem 0;
5313
- max-height: inherit;
5314
- overflow-y: auto;
5314
+ .datatable2__main {
5315
+ flex: 1;
5316
+ min-width: 0;
5317
+ transition: margin-right 0.3s cubic-bezier(0.4, 0, 0.2, 1);
5318
+ overflow: hidden;
5315
5319
  }
5316
5320
 
5317
- /* Options */
5318
- .dropdown2-option {
5321
+ .datatable2__main--with-panel {
5322
+ margin-right: 320px; /* Espacio para el panel */
5323
+ }
5324
+
5325
+ /* Vertical Toolbar */
5326
+ .datatable2__toolbar {
5327
+ width: 50px;
5328
+ min-width: 50px;
5329
+ background: #f8fafc;
5330
+ border-left: 1px solid #e2e8f0;
5319
5331
  display: flex;
5332
+ flex-direction: column;
5320
5333
  align-items: center;
5321
- padding: 0.5rem 0.75rem;
5322
- cursor: pointer;
5323
- transition: background-color 0.2s ease;
5334
+ padding: 1rem 0;
5324
5335
  gap: 0.5rem;
5325
5336
  }
5326
5337
 
5327
- .dropdown2-option:hover,
5328
- .dropdown2-option.focused {
5329
- background-color: var(--primary-color-lighter, #e3f2fd);
5338
+ .datatable2__toolbar-button {
5339
+ width: 36px;
5340
+ height: 36px;
5341
+ background: #ffffff;
5342
+ border: 1px solid #e2e8f0;
5343
+ border-radius: 6px;
5344
+ display: flex;
5345
+ align-items: center;
5346
+ justify-content: center;
5347
+ cursor: pointer;
5348
+ transition: all 0.2s ease;
5349
+ color: #64748b;
5350
+ position: relative;
5351
+ font-size: 16px;
5352
+ line-height: 1;
5330
5353
  }
5331
5354
 
5332
- .dropdown2-option.selected {
5333
- background-color: var(--primary-color-light, #bbdefb);
5334
- color: var(--primary-color-text, #1976d2);
5355
+ /* Active state for toolbar icons */
5356
+ .datatable2__toolbar-icon--active {
5357
+ color: #3b82f6 !important;
5358
+ background: rgba(59, 130, 246, 0.1) !important;
5359
+ border-radius: 4px;
5335
5360
  }
5336
5361
 
5337
- .dropdown2-option.selected:hover {
5338
- background-color: var(--primary-color, #2196f3);
5339
- color: var(--primary-color-text, white);
5362
+ .datatable2__toolbar-button:hover {
5363
+ background: #f1f5f9;
5364
+ border-color: #cbd5e1;
5365
+ color: #3b82f6;
5366
+ transform: translateY(-1px);
5367
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
5340
5368
  }
5341
5369
 
5342
- .dropdown2-checkbox,
5343
- .dropdown2-option-icon,
5344
- .dropdown2-check {
5345
- flex-shrink: 0;
5370
+ .datatable2__toolbar-button--active {
5371
+ background: #3b82f6;
5372
+ border-color: #3b82f6;
5373
+ color: #ffffff;
5374
+ box-shadow: 0 2px 8px rgba(59, 130, 246, 0.3);
5346
5375
  }
5347
5376
 
5348
- .dropdown2-option-text {
5349
- flex: 1;
5350
- overflow: hidden;
5351
- text-overflow: ellipsis;
5352
- white-space: nowrap;
5377
+ .datatable2__toolbar-button--active:hover {
5378
+ background: #2563eb;
5379
+ border-color: #2563eb;
5380
+ color: #ffffff;
5353
5381
  }
5354
5382
 
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);
5383
+ /* Sliding Panel */
5384
+ .datatable2__panel {
5385
+ width: 320px;
5386
+ min-width: 320px;
5387
+ background: #ffffff;
5388
+ border-left: 1px solid #e2e8f0;
5389
+ transform: translateX(100%);
5390
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
5391
+ overflow-y: auto;
5392
+ max-height: 100%;
5393
+ position: absolute;
5394
+ right: 50px; /* Posicionado después de la toolbar */
5395
+ top: 0;
5396
+ height: 100%;
5397
+ z-index: 10;
5364
5398
  }
5365
5399
 
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;
5400
+ .datatable2__panel--open {
5401
+ transform: translateX(0);
5372
5402
  }
5373
5403
 
5374
- /* Helper text */
5375
- .dropdown2-helper {
5404
+ .datatable2__panel-header {
5405
+ padding: 1.5rem;
5406
+ border-bottom: 1px solid #e2e8f0;
5407
+ background: #f8fafc;
5376
5408
  display: flex;
5377
5409
  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);
5410
+ justify-content: space-between;
5411
+ position: sticky;
5412
+ top: 0;
5413
+ z-index: 10;
5391
5414
  }
5392
5415
 
5393
- .dropdown2-helper .icon {
5394
- flex-shrink: 0;
5416
+ .datatable2__panel-title {
5417
+ font-size: 1rem;
5418
+ font-weight: 600;
5419
+ color: #1a202c;
5420
+ margin: 0;
5395
5421
  }
5396
5422
 
5397
- /* Multiple selection */
5398
- .dropdown2.multiple .dropdown2-value {
5423
+ .datatable2__panel-close {
5424
+ background: none;
5425
+ border: none;
5426
+ padding: 0.5rem;
5427
+ cursor: pointer;
5428
+ border-radius: 6px;
5429
+ color: #64748b;
5430
+ transition: all 0.2s ease;
5431
+ width: 32px;
5432
+ height: 32px;
5399
5433
  display: flex;
5400
5434
  align-items: center;
5401
- gap: 0.25rem;
5435
+ justify-content: center;
5402
5436
  }
5403
5437
 
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
- }
5438
+ .datatable2__panel-close:hover {
5439
+ background: #e2e8f0;
5440
+ color: #1a202c;
5422
5441
  }
5423
5442
 
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
- }
5443
+ .datatable2__panel-content {
5444
+ padding: 1.5rem;
5437
5445
  }
5438
5446
 
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
- }
5447
+ .datatable2__panel-section {
5448
+ margin-bottom: 2rem;
5448
5449
  }
5449
5450
 
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
- }
5451
+ .datatable2__panel-section:last-child {
5452
+ margin-bottom: 0;
5453
+ }
5456
5454
 
5457
- .dropdown2-menu {
5458
- background-color: var(--paper-color-dark, #424242);
5459
- border-color: var(--divider-color-dark, #616161);
5460
- }
5455
+ .datatable2__panel-section-title {
5456
+ font-size: 0.875rem;
5457
+ font-weight: 600;
5458
+ color: #374151;
5459
+ margin: 0 0 1rem 0;
5460
+ text-transform: uppercase;
5461
+ letter-spacing: 0.05em;
5462
+ }
5461
5463
 
5462
- .dropdown2-label {
5463
- background-color: var(--paper-color-dark, #424242);
5464
- }
5464
+ /* Column Visibility Controls */
5465
+ .datatable2__column-list {
5466
+ list-style: none;
5467
+ padding: 0;
5468
+ margin: 0;
5469
+ }
5465
5470
 
5466
- .dropdown2-value,
5467
- .dropdown2-search {
5468
- color: var(--text-color-dark, #ffffff);
5469
- }
5471
+ .datatable2__column-item {
5472
+ display: flex;
5473
+ align-items: center;
5474
+ padding: 0.75rem 0;
5475
+ border-bottom: 1px solid #f1f5f9;
5470
5476
  }
5471
5477
 
5472
- /* Print styles for dropdown */
5473
- @media print {
5474
- .dropdown2-menu {
5475
- display: none !important;
5476
- }
5478
+ .datatable2__column-item:last-child {
5479
+ border-bottom: none;
5480
+ }
5477
5481
 
5478
- .dropdown2-control {
5479
- border: 1px solid black !important;
5480
- background: white !important;
5481
- }
5482
+ .datatable2__column-checkbox {
5483
+ margin-right: 0.75rem;
5484
+ width: 18px;
5485
+ height: 18px;
5486
+ accent-color: #3b82f6;
5487
+ cursor: pointer;
5488
+ }
5482
5489
 
5483
- .dropdown2-value {
5484
- color: black !important;
5485
- }
5490
+ .datatable2__column-label {
5491
+ flex: 1;
5492
+ font-size: 0.875rem;
5493
+ color: #374151;
5494
+ cursor: pointer;
5495
+ -webkit-user-select: none;
5496
+ -moz-user-select: none;
5497
+ user-select: none;
5498
+ }
5486
5499
 
5487
- .dropdown2-indicators {
5488
- display: none !important;
5489
- }
5500
+ .datatable2__column-label:hover {
5501
+ color: #1f2937;
5490
5502
  }
5491
5503
 
5492
- /* Enhanced DateRange2 Styles */
5504
+ .datatable2__column-count {
5505
+ font-size: 0.75rem;
5506
+ color: #6b7280;
5507
+ background: #f3f4f6;
5508
+ padding: 0.25rem 0.5rem;
5509
+ border-radius: 12px;
5510
+ min-width: 24px;
5511
+ text-align: center;
5512
+ }
5493
5513
 
5494
- .date-range2 {
5514
+ /* Export Options */
5515
+ .datatable2__export-options {
5495
5516
  display: flex;
5496
5517
  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;
5518
+ gap: 0.75rem;
5505
5519
  }
5506
5520
 
5507
- .date-range2-fields {
5521
+ .datatable2__export-button {
5508
5522
  display: flex;
5509
5523
  align-items: center;
5510
- gap: 1rem;
5511
- flex-wrap: wrap;
5524
+ gap: 0.75rem;
5525
+ padding: 0.75rem 1rem;
5526
+ background: #ffffff;
5527
+ border: 1px solid #e2e8f0;
5528
+ border-radius: 6px;
5529
+ cursor: pointer;
5530
+ transition: all 0.2s ease;
5531
+ font-size: 0.875rem;
5532
+ color: #374151;
5533
+ text-align: left;
5534
+ width: 100%;
5512
5535
  }
5513
5536
 
5514
- .date-range2-from,
5515
- .date-range2-to {
5516
- flex: 1;
5517
- min-width: 150px;
5537
+ .datatable2__export-button:hover {
5538
+ background: #f8fafc;
5539
+ border-color: #cbd5e1;
5540
+ color: #1f2937;
5541
+ transform: translateY(-1px);
5542
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
5518
5543
  }
5519
5544
 
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;
5545
+ .datatable2__export-button .icon {
5546
+ color: #6b7280;
5547
+ transition: color 0.2s ease;
5525
5548
  }
5526
5549
 
5527
- /* States */
5528
- .date-range2.disabled {
5529
- opacity: 0.6;
5530
- pointer-events: none;
5550
+ .datatable2__export-button:hover .icon {
5551
+ color: #3b82f6;
5531
5552
  }
5532
5553
 
5533
- .date-range2.readonly {
5534
- opacity: 0.8;
5554
+ /* Filter Options */
5555
+ .datatable2__filter-options {
5556
+ padding: 1rem 0;
5535
5557
  }
5536
5558
 
5537
- .date-range2.error .date-range2-label {
5538
- color: var(--error-color, #f44336);
5559
+ /* Filters Row */
5560
+ .datatable2__filters-row {
5561
+ background: #f8fafc;
5562
+ border-bottom: 1px solid #e2e8f0;
5539
5563
  }
5540
5564
 
5541
- .date-range2.outlined .date-range2-fields {
5565
+ .datatable2__filter-cell {
5542
5566
  padding: 0.5rem;
5543
- border: 1px solid var(--divider-color, #e0e0e0);
5544
- border-radius: 4px;
5545
- background-color: var(--paper-color, #fff);
5567
+ vertical-align: middle;
5568
+ border-bottom: 1px solid #e2e8f0;
5546
5569
  }
5547
5570
 
5548
- .date-range2.outlined.error {
5549
- border-color: var(--error-color, #f44336);
5571
+ .datatable2__filter-cell--checkbox,
5572
+ .datatable2__filter-cell--row-number {
5573
+ background: #f1f5f9;
5574
+ border-right: 1px solid #e2e8f0;
5550
5575
  }
5551
5576
 
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;
5577
+ .datatable2__filter-cell--actions {
5578
+ text-align: center;
5579
+ background: #f1f5f9;
5580
+ border-left: 1px solid #e2e8f0;
5561
5581
  }
5562
5582
 
5563
- .date-range2-helper.helper {
5564
- color: var(--text-color-light, #666);
5583
+ .datatable2__filter-field {
5584
+ width: 100%;
5585
+ min-width: 120px;
5586
+ font-size: 0.875rem;
5565
5587
  }
5566
5588
 
5567
- .date-range2-helper.error {
5568
- color: var(--error-color, #f44336);
5589
+ .datatable2__filter-field input,
5590
+ .datatable2__filter-field select {
5591
+ border: 1px solid #d1d5db;
5592
+ border-radius: 4px;
5593
+ padding: 0.375rem 0.75rem;
5594
+ font-size: 0.875rem;
5595
+ transition: border-color 0.2s ease, box-shadow 0.2s ease;
5569
5596
  }
5570
5597
 
5571
- .date-range2-helper .icon {
5572
- flex-shrink: 0;
5598
+ .datatable2__filter-field input:focus,
5599
+ .datatable2__filter-field select:focus {
5600
+ outline: none;
5601
+ border-color: #3b82f6;
5602
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
5573
5603
  }
5574
5604
 
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
- }
5605
+ .datatable2__clear-filters {
5606
+ opacity: 0.5;
5607
+ transition: opacity 0.2s ease;
5608
+ }
5582
5609
 
5583
- .date-range2-from,
5584
- .date-range2-to {
5585
- min-width: auto;
5586
- }
5610
+ .datatable2__clear-filters--active {
5611
+ opacity: 1;
5612
+ }
5587
5613
 
5588
- .date-range2-separator {
5589
- text-align: center;
5590
- padding: 0;
5591
- }
5614
+ .datatable2__clear-filters:hover {
5615
+ opacity: 1;
5616
+ color: #ef4444;
5592
5617
  }
5593
5618
 
5594
- /* High contrast mode support */
5595
- @media (prefers-contrast: high) {
5596
- .date-range2.outlined .date-range2-fields {
5597
- border-width: 2px;
5619
+ /* Responsive filters */
5620
+ @media (max-width: 768px) {
5621
+ .datatable2__filter-field {
5622
+ min-width: 80px;
5623
+ font-size: 0.8rem;
5598
5624
  }
5599
5625
 
5600
- .date-range2.outlined.error {
5601
- border-width: 2px;
5626
+ .datatable2__filter-cell {
5627
+ padding: 0.25rem;
5602
5628
  }
5603
5629
  }
5604
5630
 
5605
- /* Dark theme support */
5606
- @media (prefers-color-scheme: dark) {
5607
- .date-range2-label {
5608
- color: var(--text-color-dark, #ffffff);
5609
- }
5631
+ /* Summary Row */
5632
+ .datatable2__summary-row {
5633
+ background: #f8fafc;
5634
+ border-top: 2px solid #e2e8f0;
5635
+ font-weight: 600;
5636
+ }
5610
5637
 
5611
- .date-range2.outlined .date-range2-fields {
5612
- background-color: var(--paper-color-dark, #424242);
5613
- border-color: var(--divider-color-dark, #616161);
5614
- }
5638
+ .datatable2__summary-cell {
5639
+ padding: 0.75rem;
5640
+ vertical-align: middle;
5641
+ border-top: 1px solid #e2e8f0;
5642
+ background: #f1f5f9;
5643
+ color: #374151;
5644
+ font-size: 0.875rem;
5615
5645
  }
5616
5646
 
5617
- /* Print styles for date range */
5618
- @media print {
5619
- .date-range2-fields {
5620
- border: 1px solid black !important;
5621
- background: white !important;
5622
- }
5647
+ .datatable2__summary-cell--checkbox,
5648
+ .datatable2__summary-cell--row-number {
5649
+ background: #e2e8f0;
5650
+ border-right: 1px solid #cbd5e1;
5651
+ text-align: center;
5652
+ font-weight: bold;
5653
+ color: #1f2937;
5654
+ }
5623
5655
 
5624
- .date-range2-label {
5625
- color: black !important;
5626
- }
5656
+ .datatable2__summary-cell--actions {
5657
+ background: #e2e8f0;
5658
+ border-left: 1px solid #cbd5e1;
5659
+ }
5627
5660
 
5628
- .date-range2-separator {
5629
- color: black !important;
5630
- }
5661
+ .datatable2__summary-value {
5662
+ display: inline-block;
5663
+ padding: 0.25rem 0.5rem;
5664
+ background: #ffffff;
5665
+ border: 1px solid #d1d5db;
5666
+ border-radius: 4px;
5667
+ font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', monospace;
5668
+ font-size: 0.8rem;
5669
+ font-weight: 600;
5670
+ color: #059669;
5671
+ cursor: help;
5672
+ transition: all 0.2s ease;
5631
5673
  }
5632
5674
 
5633
- /* DataTable2 CSS - Enhanced version maintaining 100% compatibility */
5675
+ .datatable2__summary-value:hover {
5676
+ background: #f0fdf4;
5677
+ border-color: #059669;
5678
+ transform: translateY(-1px);
5679
+ box-shadow: 0 2px 4px rgba(5, 150, 105, 0.1);
5680
+ }
5634
5681
 
5635
- /* Original table styles included inline for compatibility */
5682
+ /* Summary row responsive */
5683
+ @media (max-width: 768px) {
5684
+ .datatable2__summary-cell {
5685
+ padding: 0.5rem 0.25rem;
5686
+ font-size: 0.8rem;
5687
+ }
5636
5688
 
5637
- .datatable8 {
5638
- border: solid 0px var(--divider-color);
5639
- background-color: var(--paper-color);
5640
- overflow: auto;
5641
- max-height: 100%;
5642
- width: 100%;
5689
+ .datatable2__summary-value {
5690
+ font-size: 0.75rem;
5691
+ padding: 0.2rem 0.4rem;
5692
+ }
5643
5693
  }
5644
5694
 
5645
- .datatable8.outlined {
5646
- border: solid 1px var(--divider-color);
5695
+ /* Export Panel */
5696
+ .datatable2__export-environment-notice {
5697
+ display: flex;
5698
+ align-items: flex-start;
5699
+ gap: 0.75rem;
5700
+ padding: 0.75rem;
5701
+ margin-bottom: 1rem;
5702
+ background: #fffbeb;
5703
+ border: 1px solid #fbbf24;
5704
+ border-radius: 6px;
5705
+ color: #92400e;
5647
5706
  }
5648
5707
 
5649
- .datatable8 table {
5650
- width: 100%;
5708
+ .datatable2__export-environment-notice strong {
5709
+ display: block;
5710
+ font-size: 0.875rem;
5711
+ margin-bottom: 0.25rem;
5651
5712
  }
5652
5713
 
5653
- .datatable8 thead {
5654
- position: sticky;
5655
- top: 0px;
5656
- overflow: hidden;
5657
- color: var(--text-color-light);
5658
- z-index: 10;
5714
+ .datatable2__export-environment-notice p {
5715
+ margin: 0;
5716
+ font-size: 0.8rem;
5717
+ color: #a16207;
5659
5718
  }
5660
5719
 
5661
- .datatable8 thead th {
5662
- height: 2.1rem;
5663
- padding: 0 1rem;
5664
- text-align: left;
5665
- font-weight: 600 !important;
5666
- border-bottom: solid 1px var(--divider-color);
5667
- background-color: var(--paper-color);
5720
+ .datatable2__export-stats {
5721
+ display: flex;
5722
+ gap: 1rem;
5723
+ margin-bottom: 1rem;
5724
+ padding: 0.75rem;
5725
+ background: #f8fafc;
5726
+ border: 1px solid #e2e8f0;
5727
+ border-radius: 6px;
5668
5728
  }
5669
5729
 
5670
- .datatable8 thead th>div {
5671
- width: 100%;
5730
+ .datatable2__stat {
5672
5731
  display: flex;
5673
- justify-content: space-between;
5732
+ flex-direction: column;
5674
5733
  align-items: center;
5675
- text-transform: uppercase;
5676
- font-size: .8rem;
5677
- }
5678
-
5679
- .datatable8 tbody {
5680
- overflow: visible;
5681
- height: 5rem;
5734
+ gap: 0.25rem;
5682
5735
  }
5683
5736
 
5684
- .datatable8 tbody tr.selected {
5685
- background-color: rgba(200,200,200,.6);
5737
+ .datatable2__stat-label {
5738
+ font-size: 0.75rem;
5739
+ color: #6b7280;
5740
+ font-weight: 500;
5686
5741
  }
5687
5742
 
5688
- .datatable8 tbody tr:hover {
5689
- background-color: rgba(200,200,200,.2);
5690
- cursor: pointer
5743
+ .datatable2__stat-value {
5744
+ font-size: 1.25rem;
5745
+ font-weight: bold;
5746
+ color: #1f2937;
5691
5747
  }
5692
5748
 
5693
- .datatable8 tbody tr.selected:hover {
5694
- background-color: rgba(200,200,200,.4);
5749
+ .datatable2__export-status {
5750
+ display: flex;
5751
+ align-items: center;
5752
+ gap: 0.5rem;
5753
+ padding: 0.75rem;
5754
+ border-radius: 6px;
5755
+ margin-bottom: 1rem;
5756
+ font-size: 0.875rem;
5757
+ font-weight: 500;
5695
5758
  }
5696
5759
 
5697
- .datatable8 tbody td {
5698
- height: 3rem;
5699
- padding: 0 1rem;
5700
- overflow: visible;
5701
- text-overflow: ellipsis;
5702
- white-space: nowrap;
5703
- max-width: 10rem;
5704
- color: var(--text-color-light);
5760
+ .datatable2__export-status--success {
5761
+ background: #f0fdf4;
5762
+ color: #166534;
5763
+ border: 1px solid #bbf7d0;
5705
5764
  }
5706
5765
 
5707
- .datatable8 tbody td.index {
5708
- width: 3rem;
5709
- overflow: hidden;
5710
- color: var(--text-color-lighter);
5766
+ .datatable2__export-status--error {
5767
+ background: #fef2f2;
5768
+ color: #dc2626;
5769
+ border: 1px solid #fecaca;
5711
5770
  }
5712
5771
 
5713
- .datatable8 tbody td.checked
5714
- {
5715
- width: 3rem;
5716
- overflow: hidden;
5717
- }
5718
-
5719
- .datatable8 tbody td.checked .checkmark {
5720
- border-color: var(--text-color-lighter) !important;
5772
+ .datatable2__export-section {
5773
+ margin-bottom: 1.5rem;
5721
5774
  }
5722
5775
 
5723
- .datatable8 .string-viewer img {
5724
- height: 5rem;
5776
+ .datatable2__export-section-title {
5777
+ font-size: 0.875rem;
5778
+ font-weight: 600;
5779
+ color: #374151;
5780
+ margin: 0 0 0.75rem 0;
5781
+ padding-bottom: 0.5rem;
5782
+ border-bottom: 1px solid #e5e7eb;
5725
5783
  }
5726
5784
 
5727
- .datatable8 th.resizable-column {
5728
- resize: horizontal;
5729
- overflow: hidden;
5785
+ .datatable2__export-options {
5786
+ display: flex;
5787
+ flex-direction: column;
5788
+ gap: 0.5rem;
5730
5789
  }
5731
5790
 
5732
- /* Enhanced DataTable2 Styles - New functionality while maintaining compatibility */
5733
-
5734
- .datatable2 {
5735
- position: relative;
5736
- width: 100%;
5737
- overflow: hidden;
5738
- border-radius: 8px;
5739
- background: var(--background-color, #ffffff);
5740
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
5791
+ .datatable2__export-button {
5792
+ display: flex;
5793
+ align-items: center;
5794
+ gap: 0.75rem;
5795
+ padding: 0.75rem 1rem;
5796
+ background: #ffffff;
5797
+ border: 1px solid #d1d5db;
5798
+ border-radius: 6px;
5799
+ cursor: pointer;
5741
5800
  transition: all 0.2s ease;
5801
+ font-size: 0.875rem;
5802
+ font-weight: 500;
5803
+ color: #374151;
5804
+ text-align: left;
5805
+ width: 100%;
5742
5806
  }
5743
5807
 
5744
- /* Fix table borders - single 1px borders */
5745
- .datatable2 table {
5746
- border-collapse: collapse;
5747
- width: 100%;
5748
- border-spacing: 0;
5808
+ .datatable2__export-button:hover:not(:disabled) {
5809
+ background: #f9fafb;
5810
+ border-color: #9ca3af;
5811
+ transform: translateY(-1px);
5812
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
5749
5813
  }
5750
5814
 
5751
- .datatable2 th,
5752
- .datatable2 td {
5753
- border: 1px solid var(--divider-color, #e0e0e0);
5754
- padding: 0.5rem 0.75rem;
5755
- text-align: left;
5756
- vertical-align: middle;
5757
- position: relative;
5815
+ .datatable2__export-button:active:not(:disabled) {
5816
+ transform: translateY(0);
5817
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
5758
5818
  }
5759
5819
 
5760
- /* Fix editable fields to stay within cells */
5761
- .datatable2 .field-editor {
5762
- width: 100%;
5763
- max-width: 100%;
5764
- box-sizing: border-box;
5820
+ .datatable2__export-button:disabled {
5821
+ opacity: 0.5;
5822
+ cursor: not-allowed;
5823
+ background: #f3f4f6;
5765
5824
  }
5766
5825
 
5767
- .datatable2 .field-editor input,
5768
- .datatable2 .field-editor select,
5769
- .datatable2 .field-editor textarea {
5770
- width: 100%;
5771
- max-width: 100%;
5772
- box-sizing: border-box;
5773
- border: none;
5774
- outline: none;
5775
- background: transparent;
5776
- padding: 0.25rem;
5777
- margin: 0;
5778
- font-size: inherit;
5779
- font-family: inherit;
5780
- line-height: inherit;
5826
+ .datatable2__export-button--selected {
5827
+ border-color: #3b82f6;
5828
+ background: #eff6ff;
5829
+ color: #1d4ed8;
5781
5830
  }
5782
5831
 
5783
- .datatable2 .field-editor input:focus,
5784
- .datatable2 .field-editor select:focus,
5785
- .datatable2 .field-editor textarea:focus {
5786
- background: rgba(33, 150, 243, 0.05);
5787
- border-radius: 2px;
5832
+ .datatable2__export-button--selected:hover:not(:disabled) {
5833
+ background: #dbeafe;
5834
+ border-color: #2563eb;
5788
5835
  }
5789
5836
 
5790
- /* Search functionality */
5791
- .datatable2__search {
5792
- padding: 1rem;
5793
- border-bottom: 1px solid var(--divider-color, #e0e0e0);
5794
- background: var(--background-color-light, #f8f9fa);
5837
+ .datatable2__export-description {
5838
+ font-size: 0.75rem;
5839
+ color: #6b7280;
5840
+ font-weight: normal;
5841
+ margin-left: auto;
5795
5842
  }
5796
5843
 
5797
- /* Toolbar */
5798
- .datatable2__toolbar {
5799
- display: flex;
5800
- justify-content: space-between;
5801
- align-items: center;
5802
- padding: 0.5rem 1rem;
5803
- border-bottom: 1px solid var(--divider-color, #e0e0e0);
5804
- background: var(--background-color-light, #f8f9fa);
5844
+ .datatable2__export-info {
5845
+ margin-top: 1rem;
5846
+ padding: 0.75rem;
5847
+ background: #f0f9ff;
5848
+ border: 1px solid #bae6fd;
5849
+ border-radius: 6px;
5805
5850
  }
5806
5851
 
5807
- .datatable2__export-btn {
5852
+ .datatable2__export-note {
5808
5853
  display: flex;
5809
5854
  align-items: center;
5810
5855
  gap: 0.5rem;
5811
- padding: 0.5rem 1rem;
5812
- border: 1px solid var(--primary-color, #2196f3);
5813
- background: transparent;
5814
- color: var(--primary-color, #2196f3);
5815
- border-radius: 4px;
5816
- cursor: pointer;
5817
- font-size: 0.9rem;
5818
- transition: all 0.2s ease;
5856
+ margin: 0;
5857
+ font-size: 0.8rem;
5858
+ color: #0c4a6e;
5819
5859
  }
5820
5860
 
5821
- .datatable2__export-btn:hover:not(:disabled) {
5822
- background: var(--primary-color, #2196f3);
5823
- color: white;
5824
- }
5861
+ /* Export responsive */
5862
+ @media (max-width: 768px) {
5863
+ .datatable2__export-stats {
5864
+ flex-direction: column;
5865
+ gap: 0.5rem;
5866
+ }
5825
5867
 
5826
- .datatable2__export-btn:disabled {
5827
- opacity: 0.6;
5828
- cursor: not-allowed;
5829
- }
5868
+ .datatable2__stat {
5869
+ flex-direction: row;
5870
+ justify-content: space-between;
5871
+ }
5830
5872
 
5831
- /* Table variants */
5832
- .datatable2--striped tbody tr:nth-child(even) {
5833
- background-color: var(--background-color-light, #f8f9fa);
5834
- }
5873
+ .datatable2__export-button {
5874
+ padding: 0.5rem 0.75rem;
5875
+ font-size: 0.8rem;
5876
+ }
5835
5877
 
5836
- .datatable2--compact {
5837
- font-size: 0.85rem;
5878
+ .datatable2__export-description {
5879
+ display: none;
5880
+ }
5838
5881
  }
5839
5882
 
5840
- .datatable2--compact th,
5841
- .datatable2--compact td {
5842
- padding: 0.375rem 0.5rem;
5883
+ /* Table Container Adjustments */
5884
+ .datatable2__table-container {
5885
+ width: 100%;
5886
+ overflow-x: auto;
5887
+ border: none; /* El border está en el container principal */
5888
+ border-radius: 0;
5843
5889
  }
5844
5890
 
5845
- .datatable2--bordered {
5846
- border: 1px solid var(--divider-color, #e0e0e0);
5891
+ /* Row Numbers */
5892
+ .datatable2__row-number-header {
5893
+ width: 60px;
5894
+ min-width: 60px;
5895
+ max-width: 60px;
5896
+ text-align: center;
5897
+ padding: 0.75rem 0.5rem;
5898
+ font-weight: 600;
5899
+ font-size: 0.875rem;
5900
+ color: #6b7280;
5901
+ background: #f8fafc;
5902
+ border-right: 1px solid #e2e8f0;
5903
+ position: sticky;
5904
+ left: 0;
5905
+ z-index: 5;
5847
5906
  }
5848
5907
 
5849
- .datatable2--bordered th,
5850
- .datatable2--bordered td {
5851
- border: 1px solid var(--divider-color, #e0e0e0);
5908
+ .datatable2__row-number {
5909
+ width: 60px;
5910
+ min-width: 60px;
5911
+ max-width: 60px;
5912
+ text-align: center;
5913
+ padding: 0.75rem 0.5rem;
5914
+ font-size: 0.875rem;
5915
+ color: #6b7280;
5916
+ background: #fafbfc;
5917
+ border-right: 1px solid #e2e8f0;
5918
+ position: sticky;
5919
+ left: 0;
5920
+ z-index: 5;
5921
+ font-variant-numeric: tabular-nums;
5852
5922
  }
5853
5923
 
5854
- .datatable2--no-hover tbody tr:hover {
5855
- background-color: inherit !important;
5924
+ .datatable2--striped .datatable2__row:nth-child(even) .datatable2__row-number {
5925
+ background: #f1f5f9;
5856
5926
  }
5857
5927
 
5858
- /* Row height variants - Clear differences */
5859
- .datatable2--small th,
5860
- .datatable2--small td {
5861
- padding: 0.25rem 0.5rem;
5862
- font-size: 0.75rem;
5863
- line-height: 1.2;
5864
- height: 32px;
5928
+ .datatable2__row:hover .datatable2__row-number {
5929
+ background: #e2e8f0;
5930
+ color: #374151;
5865
5931
  }
5866
5932
 
5867
- .datatable2--medium th,
5868
- .datatable2--medium td {
5869
- padding: 0.5rem 0.75rem;
5870
- font-size: 0.875rem;
5871
- line-height: 1.4;
5872
- height: 44px;
5933
+ /* Responsive Design */
5934
+ @media (max-width: 1024px) {
5935
+ .datatable2__main--with-panel {
5936
+ width: calc(100% - 320px); /* Solo panel, toolbar se oculta */
5937
+ }
5938
+
5939
+ .datatable2__toolbar {
5940
+ display: none;
5941
+ }
5942
+
5943
+ .datatable2__panel {
5944
+ width: 320px;
5945
+ position: absolute;
5946
+ right: 0;
5947
+ top: 0;
5948
+ height: 100%;
5949
+ z-index: 1000;
5950
+ box-shadow: -4px 0 12px rgba(0, 0, 0, 0.1);
5951
+ }
5873
5952
  }
5874
5953
 
5875
- .datatable2--large th,
5876
- .datatable2--large td {
5877
- padding: 0.75rem 1rem;
5878
- font-size: 1rem;
5879
- line-height: 1.6;
5880
- height: 56px;
5954
+ @media (max-width: 768px) {
5955
+ .datatable2__main--with-panel {
5956
+ width: 100%;
5957
+ }
5958
+
5959
+ .datatable2__panel {
5960
+ width: 100%;
5961
+ max-width: 320px;
5962
+ position: fixed;
5963
+ top: 0;
5964
+ right: 0;
5965
+ height: 100vh;
5966
+ z-index: 1001;
5967
+ }
5968
+
5969
+ .datatable2__panel-content {
5970
+ padding: 1rem;
5971
+ }
5972
+
5973
+ .datatable2__row-number-header,
5974
+ .datatable2__row-number {
5975
+ width: 50px;
5976
+ min-width: 50px;
5977
+ max-width: 50px;
5978
+ padding: 0.5rem 0.25rem;
5979
+ font-size: 0.75rem;
5980
+ }
5881
5981
  }
5882
5982
 
5883
- /* Density variants - Clear differences */
5884
- .datatable2--compact {
5885
- font-size: 0.8rem;
5983
+ /* Dark theme adjustments */
5984
+ .datatable2--dark .datatable2__container {
5985
+ border-color: #2d3748;
5886
5986
  }
5887
5987
 
5888
- .datatable2--compact th,
5889
- .datatable2--compact td {
5890
- padding: 0.25rem 0.5rem;
5891
- line-height: 1.2;
5892
- height: 28px;
5988
+ .datatable2--dark .datatable2__toolbar {
5989
+ background: #2d3748;
5990
+ border-left-color: #4a5568;
5893
5991
  }
5894
5992
 
5895
- .datatable2--normal {
5896
- font-size: 0.9rem;
5993
+ .datatable2--dark .datatable2__toolbar-button {
5994
+ background: #1a202c;
5995
+ border-color: #4a5568;
5996
+ color: #a0aec0;
5897
5997
  }
5898
5998
 
5899
- .datatable2--normal th,
5900
- .datatable2--normal td {
5901
- padding: 0.5rem 0.75rem;
5902
- line-height: 1.4;
5903
- height: 40px;
5999
+ .datatable2--dark .datatable2__toolbar-button:hover {
6000
+ background: #2d3748;
6001
+ border-color: #63b3ed;
6002
+ color: #63b3ed;
5904
6003
  }
5905
6004
 
5906
- .datatable2--comfortable {
5907
- font-size: 1rem;
6005
+ .datatable2--dark .datatable2__toolbar-button--active {
6006
+ background: #63b3ed;
6007
+ border-color: #63b3ed;
6008
+ color: #1a202c;
5908
6009
  }
5909
6010
 
5910
- .datatable2--comfortable th,
5911
- .datatable2--comfortable td {
5912
- padding: 0.875rem 1.25rem;
5913
- line-height: 1.6;
5914
- height: 52px;
6011
+ .datatable2--dark .datatable2__panel {
6012
+ background: #1a202c;
6013
+ border-left-color: #2d3748;
5915
6014
  }
5916
6015
 
5917
- /* Theme variants */
5918
- .datatable2--dark {
5919
- background: var(--background-color-dark, #303030);
5920
- color: var(--text-color-dark, #ffffff);
6016
+ .datatable2--dark .datatable2__panel-header {
6017
+ background: #2d3748;
6018
+ border-bottom-color: #4a5568;
5921
6019
  }
5922
6020
 
5923
- .datatable2--dark th {
5924
- background: var(--background-color-light-dark, #424242);
5925
- color: var(--text-color-dark, #ffffff);
6021
+ .datatable2--dark .datatable2__panel-title {
6022
+ color: #f7fafc;
5926
6023
  }
5927
6024
 
5928
- .datatable2--dark tbody tr:hover {
5929
- background-color: var(--hover-color-dark, rgba(255, 255, 255, 0.08));
6025
+ .datatable2--dark .datatable2__panel-close {
6026
+ color: #a0aec0;
5930
6027
  }
5931
6028
 
5932
- .datatable2--minimal {
5933
- box-shadow: none;
5934
- border: none;
6029
+ .datatable2--dark .datatable2__panel-close:hover {
6030
+ background: #4a5568;
6031
+ color: #f7fafc;
5935
6032
  }
5936
6033
 
5937
- .datatable2--minimal th {
5938
- border-bottom: 2px solid var(--primary-color, #2196f3);
5939
- background: transparent;
6034
+ .datatable2--dark .datatable2__column-item {
6035
+ border-bottom-color: #2d3748;
5940
6036
  }
5941
6037
 
5942
- /* Header enhancements */
5943
- .datatable2__header--sticky {
5944
- position: sticky;
5945
- top: 0;
5946
- z-index: 10;
5947
- background: var(--background-color, #ffffff);
5948
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
6038
+ .datatable2--dark .datatable2__column-label {
6039
+ color: #e2e8f0;
5949
6040
  }
5950
6041
 
5951
- .datatable2__row-number-header {
5952
- width: 60px;
6042
+ .datatable2--dark .datatable2__column-label:hover {
6043
+ color: #f7fafc;
6044
+ }
6045
+
6046
+ .datatable2--dark .datatable2__row-number-header {
6047
+ background: #2d3748;
6048
+ border-right-color: #4a5568;
6049
+ color: #a0aec0;
6050
+ }
6051
+
6052
+ .datatable2--dark .datatable2__row-number {
6053
+ background: #1a202c;
6054
+ border-right-color: #4a5568;
6055
+ color: #a0aec0;
6056
+ }
6057
+
6058
+ /* Selection styles */
6059
+ .datatable2__select-header {
6060
+ width: 50px;
6061
+ min-width: 50px;
6062
+ max-width: 50px;
5953
6063
  text-align: center;
5954
- background: var(--background-color-light, #f8f9fa);
5955
- font-weight: 600;
6064
+ padding: 0.5rem;
6065
+ vertical-align: middle;
6066
+ }
6067
+
6068
+ .datatable2__select-header input[type="checkbox"] {
6069
+ margin: 0;
6070
+ cursor: pointer;
6071
+ vertical-align: middle;
6072
+ }
6073
+
6074
+ .datatable2__select-cell {
6075
+ width: 50px;
6076
+ min-width: 50px;
6077
+ max-width: 50px;
6078
+ text-align: center;
6079
+ padding: 0.5rem;
6080
+ vertical-align: middle;
6081
+ }
6082
+
6083
+ .datatable2__select-cell input[type="checkbox"] {
6084
+ margin: 0;
6085
+ cursor: pointer;
6086
+ vertical-align: middle;
6087
+ }
6088
+
6089
+ .datatable2__row--selected {
6090
+ background-color: var(--selection-bg, #e3f2fd) !important;
6091
+ border-color: var(--selection-border, #2196f3) !important;
6092
+ }
6093
+
6094
+ .datatable2__row--selected:hover {
6095
+ background-color: var(--selection-hover-bg, #bbdefb) !important;
6096
+ }
6097
+
6098
+ /* Row styles */
6099
+ .datatable2__row {
6100
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
6101
+ transition: background-color 0.2s ease;
6102
+ }
6103
+
6104
+ .datatable2__row:last-child {
6105
+ border-bottom: none;
6106
+ }
6107
+
6108
+ .datatable2__row:hover {
6109
+ background: var(--hover-color, rgba(0, 0, 0, 0.02));
6110
+ }
6111
+
6112
+ .datatable2__row--selected {
6113
+ background: var(--selection-color, rgba(33, 150, 243, 0.08));
6114
+ border-left: 3px solid var(--primary-color, #2196f3);
6115
+ }
6116
+
6117
+ /* Cell styles */
6118
+ .datatable2__cell {
6119
+ padding: 12px 16px;
6120
+ color: var(--text-color, #333);
6121
+ font-size: 0.875rem;
6122
+ border-right: 1px solid var(--divider-color-light, #f0f0f0);
6123
+ position: relative;
6124
+ vertical-align: middle;
6125
+ }
6126
+
6127
+ .datatable2__cell:last-child {
6128
+ border-right: none;
6129
+ }
6130
+
6131
+ .datatable2__cell--editable {
6132
+ cursor: pointer;
6133
+ transition: background-color 0.2s ease;
6134
+ }
6135
+
6136
+ .datatable2__cell--editable:hover {
6137
+ background: var(--hover-color, rgba(0, 0, 0, 0.02));
6138
+ }
6139
+
6140
+ .datatable2__cell--editing {
6141
+ padding: 0;
6142
+ background: var(--edit-color, rgba(33, 150, 243, 0.05));
6143
+ }
6144
+
6145
+ /* Editable field styles - seamlessly integrated */
6146
+ .datatable2__edit-field {
6147
+ width: 100% !important;
6148
+ height: 100% !important;
6149
+ border: none !important;
6150
+ outline: none !important;
6151
+ background: transparent !important;
6152
+ margin: 0 !important;
6153
+ padding: 12px 16px !important;
6154
+ font-size: 0.875rem !important;
6155
+ color: inherit !important;
6156
+ box-shadow: none !important;
6157
+ border-radius: 0 !important;
6158
+ }
6159
+
6160
+ .datatable2__edit-field:focus {
6161
+ background: var(--edit-focus-color, rgba(33, 150, 243, 0.1)) !important;
6162
+ }
6163
+
6164
+ /* Special cell types */
6165
+ .datatable2__select-cell,
6166
+ .datatable2__actions-cell {
6167
+ width: 48px;
6168
+ text-align: center;
6169
+ padding: 8px;
5956
6170
  }
5957
6171
 
5958
- /* Row numbers */
5959
6172
  .datatable2__row-number {
5960
6173
  width: 60px;
5961
6174
  text-align: center;
5962
- background: var(--background-color-light, #f8f9fa);
5963
- font-weight: 500;
5964
- color: var(--text-color-light, #666);
5965
- border-right: 1px solid var(--divider-color, #e0e0e0);
6175
+ color: var(--text-color-secondary, #666);
6176
+ font-size: 0.75rem;
6177
+ background: var(--surface-color, #f8f9fa);
5966
6178
  }
5967
6179
 
5968
- /* Column resizing - Enhanced visibility */
5969
- .resizable-column {
5970
- position: relative;
5971
- -webkit-user-select: none;
5972
- -moz-user-select: none;
5973
- user-select: none;
6180
+ /* Expanded row styles */
6181
+ .datatable2__expanded-row {
6182
+ background: var(--expanded-bg, #f8f9fa);
6183
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
6184
+ }
6185
+
6186
+ .datatable2__expanded-cell {
6187
+ padding: 0;
6188
+ border-right: none;
6189
+ }
6190
+
6191
+ .datatable2__expanded-content {
6192
+ padding: 16px;
6193
+ border-left: 3px solid var(--primary-color, #2196f3);
6194
+ background: var(--expanded-content-bg, #ffffff);
6195
+ margin: 8px;
6196
+ border-radius: 4px;
6197
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
6198
+ }
6199
+
6200
+ /* Filter row styles */
6201
+ .datatable2__filters-row {
6202
+ background: var(--surface-color, #f8f9fa);
6203
+ border-bottom: 1px solid var(--divider-color, #e0e0e0);
6204
+ }
6205
+
6206
+ .datatable2__filter-cell {
6207
+ padding: 8px 12px;
6208
+ }
6209
+
6210
+ .datatable2__filter-field {
6211
+ width: 100% !important;
6212
+ height: 32px !important;
6213
+ border: 1px solid var(--divider-color, #e0e0e0) !important;
6214
+ border-radius: 4px !important;
6215
+ padding: 4px 8px !important;
6216
+ font-size: 0.75rem !important;
6217
+ background: white !important;
6218
+ }
6219
+
6220
+ .datatable2__filter-field:focus {
6221
+ border-color: var(--primary-color, #2196f3) !important;
6222
+ box-shadow: 0 0 0 2px rgba(33, 150, 243, 0.2) !important;
6223
+ }
6224
+
6225
+ .datatable2__filter-actions-cell {
6226
+ text-align: center;
6227
+ padding: 8px;
6228
+ }
6229
+
6230
+ /* Empty state */
6231
+ .datatable2__empty-cell {
6232
+ padding: 48px 24px;
6233
+ text-align: center;
6234
+ }
6235
+
6236
+ .datatable2__empty-state {
6237
+ display: flex;
6238
+ flex-direction: column;
6239
+ align-items: center;
6240
+ gap: 16px;
6241
+ color: var(--text-color-secondary, #666);
6242
+ }
6243
+
6244
+ /* Skeleton loading */
6245
+ .datatable2__skeleton-row {
6246
+ animation: pulse 1.5s ease-in-out infinite;
6247
+ }
6248
+
6249
+ .datatable2__skeleton-cell {
6250
+ padding: 12px 16px;
6251
+ }
6252
+
6253
+ .datatable2__skeleton-text {
6254
+ height: 16px;
6255
+ background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
6256
+ background-size: 200% 100%;
6257
+ animation: shimmer 1.5s infinite;
6258
+ border-radius: 4px;
6259
+ }
6260
+
6261
+ .datatable2__skeleton-text--short {
6262
+ width: 60%;
6263
+ }
6264
+
6265
+ @keyframes shimmer {
6266
+ 0% { background-position: -200% 0; }
6267
+ 100% { background-position: 200% 0; }
6268
+ }
6269
+
6270
+ @keyframes pulse {
6271
+ 0%, 100% { opacity: 1; }
6272
+ 50% { opacity: 0.7; }
6273
+ }
6274
+
6275
+ /* Search */
6276
+ .datatable2__search {
6277
+ padding: 16px;
6278
+ border-bottom: 1px solid var(--divider-color, #e0e0e0);
6279
+ background: var(--surface-color, #f8f9fa);
6280
+ }
6281
+
6282
+ /* Footer */
6283
+ .datatable2__footer {
6284
+ padding: 16px;
6285
+ border-top: 1px solid var(--divider-color, #e0e0e0);
6286
+ background: var(--surface-color, #f8f9fa);
6287
+ display: flex;
6288
+ justify-content: flex-end;
6289
+ }
6290
+
6291
+ .datatable2__export-btn {
6292
+ display: flex;
6293
+ align-items: center;
6294
+ gap: 8px;
6295
+ padding: 8px 16px;
6296
+ border: 1px solid var(--primary-color, #2196f3);
6297
+ background: transparent;
6298
+ color: var(--primary-color, #2196f3);
6299
+ border-radius: 4px;
6300
+ cursor: pointer;
6301
+ font-size: 0.875rem;
6302
+ transition: all 0.2s ease;
6303
+ }
6304
+
6305
+ .datatable2__export-btn:hover {
6306
+ background: var(--primary-color, #2196f3);
6307
+ color: white;
6308
+ }
6309
+
6310
+ /* Size variants */
6311
+ .datatable2--small .datatable2__cell,
6312
+ .datatable2--small .datatable2__header-cell {
6313
+ padding: 8px 12px;
6314
+ font-size: 0.75rem;
6315
+ }
6316
+
6317
+ .datatable2--large .datatable2__cell,
6318
+ .datatable2--large .datatable2__header-cell {
6319
+ padding: 16px 20px;
6320
+ font-size: 1rem;
6321
+ }
6322
+
6323
+ /* Density variants */
6324
+ .datatable2--compact .datatable2__cell,
6325
+ .datatable2--compact .datatable2__header-cell {
6326
+ padding: 6px 12px;
6327
+ height: 32px;
6328
+ }
6329
+
6330
+ .datatable2--compact .datatable2__edit-field {
6331
+ padding: 6px 12px !important;
6332
+ height: 32px !important;
6333
+ }
6334
+
6335
+ .datatable2--comfortable .datatable2__cell,
6336
+ .datatable2--comfortable .datatable2__header-cell {
6337
+ padding: 16px 20px;
6338
+ height: 56px;
6339
+ }
6340
+
6341
+ .datatable2--comfortable .datatable2__edit-field {
6342
+ padding: 16px 20px !important;
6343
+ height: 56px !important;
6344
+ }
6345
+
6346
+ /* Style variants */
6347
+ .datatable2--striped .datatable2__row:nth-child(even) {
6348
+ background: var(--stripe-color, rgba(0, 0, 0, 0.02));
6349
+ }
6350
+
6351
+ .datatable2--bordered {
6352
+ border: 1px solid var(--divider-color, #e0e0e0);
6353
+ }
6354
+
6355
+ .datatable2--bordered .datatable2__cell,
6356
+ .datatable2--bordered .datatable2__header-cell {
6357
+ border: 1px solid var(--divider-color, #e0e0e0);
6358
+ }
6359
+
6360
+ .datatable2--no-hover .datatable2__row:hover {
6361
+ background: transparent;
6362
+ }
6363
+
6364
+ /* Theme variants */
6365
+ .datatable2--minimal {
6366
+ box-shadow: none;
6367
+ border: 1px solid var(--divider-color-light, #f0f0f0);
6368
+ background: transparent;
6369
+ }
6370
+
6371
+ .datatable2--dark {
6372
+ background: #2c1810;
6373
+ color: #f4e6d7;
6374
+ border-color: #5d4037;
5974
6375
  }
5975
6376
 
5976
- .column-resizer {
5977
- position: absolute;
5978
- top: 0;
5979
- right: -2px;
5980
- width: 6px;
5981
- height: 100%;
5982
- cursor: col-resize;
5983
- background: transparent;
5984
- transition: all 0.2s ease;
5985
- z-index: 10;
5986
- border-right: 2px solid transparent;
5987
- }
6377
+ .datatable2--dark .datatable2__header {
6378
+ background: #3e2723;
6379
+ color: #f4e6d7;
6380
+ border-color: #5d4037;
6381
+ }
6382
+
6383
+ .datatable2--dark .datatable2__cell,
6384
+ .datatable2--dark .datatable2__header-cell {
6385
+ border-color: #5d4037;
6386
+ color: #f4e6d7;
6387
+ }
6388
+
6389
+ .datatable2--dark .datatable2__row:hover {
6390
+ background: #3e2723;
6391
+ }
6392
+
6393
+ .datatable2--dark .datatable2__row--selected {
6394
+ background: #4e342e;
6395
+ border-left-color: #8d6e63;
6396
+ }
6397
+
6398
+ .datatable2--dark .datatable2__edit-field {
6399
+ color: #f4e6d7 !important;
6400
+ }
6401
+
6402
+ .datatable2--dark .datatable2__filter-field {
6403
+ background: #3e2723 !important;
6404
+ border-color: #5d4037 !important;
6405
+ color: #f4e6d7 !important;
6406
+ }
6407
+
6408
+ .datatable2--dark .datatable2__expanded-row {
6409
+ background: #3a251a;
6410
+ }
6411
+
6412
+ .datatable2--dark .datatable2__expanded-content {
6413
+ background: #2c1810;
6414
+ border-left-color: #8d6e63;
6415
+ color: #f4e6d7;
6416
+ }
6417
+
6418
+ /* Responsive */
6419
+ @media (max-width: 768px) {
6420
+ .datatable2__table-container {
6421
+ overflow-x: auto;
6422
+ }
6423
+
6424
+ .datatable2__cell,
6425
+ .datatable2__header-cell {
6426
+ min-width: 120px;
6427
+ white-space: nowrap;
6428
+ }
6429
+ }
6430
+
6431
+ /* Enhanced TextField2 Styles */
6432
+
6433
+ .textfield2 {
6434
+ flex: 1;
6435
+ position: relative;
6436
+ padding-top: 1.5rem;
6437
+ overflow: visible;
6438
+ display: flex;
6439
+ flex-direction: column;
6440
+ min-height: auto;
6441
+ transition: all 0.2s ease;
6442
+ }
6443
+
6444
+ .textfield2.no-label {
6445
+ padding-top: 0.5rem;
6446
+ padding-bottom: 0.5rem;
6447
+ }
6448
+
6449
+ .textfield2.label-left {
6450
+ flex-direction: row;
6451
+ align-items: center;
6452
+ padding-top: 0.5rem;
6453
+ }
6454
+
6455
+ /* Input and textarea base styles */
6456
+ .textfield2 > input,
6457
+ .textfield2 > textarea {
6458
+ flex: 1;
6459
+ padding: 10px 10px 10px 0.5rem;
6460
+ display: block;
6461
+ border: none;
6462
+ border-bottom: 1px solid var(--divider-color, #e0e0e0);
6463
+ overflow: hidden;
6464
+ font-size: 1rem;
6465
+ color: var(--text-color, #333);
6466
+ background-color: var(--paper-color, #fff);
6467
+ transition: border-color 0.2s ease;
6468
+ resize: vertical;
6469
+ min-height: 2.5rem;
6470
+ }
6471
+
6472
+ .textfield2 > textarea {
6473
+ min-height: 4rem;
6474
+ padding-top: 0.75rem;
6475
+ line-height: 1.4;
6476
+ }
6477
+
6478
+ /* Focus styles */
6479
+ .textfield2 > input:focus,
6480
+ .textfield2 > textarea:focus {
6481
+ outline: none;
6482
+ border-color: var(--primary-color, #2196f3);
6483
+ }
6484
+
6485
+ .textfield2.focused > input,
6486
+ .textfield2.focused > textarea {
6487
+ border-color: var(--primary-color, #2196f3);
6488
+ }
6489
+
6490
+ /* Read-only styles */
6491
+ .textfield2 > input:-moz-read-only, .textfield2 > textarea:-moz-read-only {
6492
+ background-color: var(--disabled-background, #f5f5f5);
6493
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
6494
+ cursor: default;
6495
+ }
6496
+ .textfield2 > input:read-only,
6497
+ .textfield2 > textarea:read-only,
6498
+ .textfield2.readonly > input,
6499
+ .textfield2.readonly > textarea {
6500
+ background-color: var(--disabled-background, #f5f5f5);
6501
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
6502
+ cursor: default;
6503
+ }
6504
+
6505
+ /* Disabled styles */
6506
+ .textfield2.disabled {
6507
+ opacity: 0.6;
6508
+ pointer-events: none;
6509
+ }
6510
+
6511
+ .textfield2.disabled > input,
6512
+ .textfield2.disabled > textarea {
6513
+ background-color: var(--disabled-background, #f5f5f5);
6514
+ color: var(--text-color-disabled, #999);
6515
+ cursor: not-allowed;
6516
+ }
6517
+
6518
+ /* Error styles */
6519
+ .textfield2.error > input,
6520
+ .textfield2.error > textarea,
6521
+ .textfield2.invalid > input,
6522
+ .textfield2.invalid > textarea {
6523
+ border-color: var(--error-color, #f44336);
6524
+ }
6525
+
6526
+ .textfield2.error > label,
6527
+ .textfield2.invalid > label {
6528
+ color: var(--error-color, #f44336);
6529
+ }
6530
+
6531
+ /* Icons */
6532
+ .textfield2-clear,
6533
+ .textfield2-password-toggle {
6534
+ position: absolute;
6535
+ top: 1.5rem;
6536
+ right: 0.2rem;
6537
+ color: var(--text-color-light, #666);
6538
+ cursor: pointer;
6539
+ transition: color 0.2s ease;
6540
+ }
6541
+
6542
+ .textfield2-clear:hover,
6543
+ .textfield2-password-toggle:hover {
6544
+ color: var(--text-color, #333);
6545
+ }
6546
+
6547
+ .textfield2.no-label .textfield2-clear,
6548
+ .textfield2.no-label .textfield2-password-toggle {
6549
+ top: 0.5rem;
6550
+ }
6551
+
6552
+ .textfield2-password-toggle {
6553
+ right: 2.2rem;
6554
+ }
6555
+
6556
+ .textfield2.textfield2-date .textfield2-clear,
6557
+ .textfield2.textfield2-time .textfield2-clear {
6558
+ right: 2.5rem;
6559
+ }
6560
+
6561
+ /* Labels */
6562
+ .textfield2 > label {
6563
+ color: var(--primary-color, #2196f3);
6564
+ font-size: 0.9rem;
6565
+ font-weight: normal;
6566
+ position: absolute;
6567
+ pointer-events: none;
6568
+ left: 0.4rem;
6569
+ top: 2rem;
6570
+ transition: all 0.2s ease;
6571
+ transform-origin: left top;
6572
+ }
6573
+
6574
+ .textfield2.label-left > label {
6575
+ position: relative;
6576
+ margin-right: 0.5rem;
6577
+ top: 0;
6578
+ font-size: 0.9rem;
6579
+ color: var(--text-color, #333);
6580
+ pointer-events: auto;
6581
+ min-width: -moz-max-content;
6582
+ min-width: max-content;
6583
+ }
6584
+
6585
+ /* Active label states */
6586
+ .textfield2 > input:focus ~ label,
6587
+ .textfield2 > input:valid ~ label,
6588
+ .textfield2 > input[value]:not([value=""]) ~ label,
6589
+ .textfield2 > textarea:focus ~ label,
6590
+ .textfield2 > textarea:valid ~ label,
6591
+ .textfield2 > textarea[value]:not([value=""]) ~ label,
6592
+ .textfield2.focused > label,
6593
+ .textfield2.has-placeholder > label {
6594
+ top: 0.3rem;
6595
+ font-size: 0.8rem;
6596
+ color: var(--primary-color, #2196f3);
6597
+ transform: scale(0.9);
6598
+ }
6599
+
6600
+ .textfield2.error > input:focus ~ label,
6601
+ .textfield2.error > textarea:focus ~ label,
6602
+ .textfield2.invalid > input:focus ~ label,
6603
+ .textfield2.invalid > textarea:focus ~ label {
6604
+ color: var(--error-color, #f44336);
6605
+ }
6606
+
6607
+ /* Date/time input labels */
6608
+ .textfield2 input[type="date"] ~ label,
6609
+ .textfield2 input[type="time"] ~ label,
6610
+ .textfield2 input[type="datetime-local"] ~ label,
6611
+ .textfield2 input[type="month"] ~ label,
6612
+ .textfield2 input[type="week"] ~ label {
6613
+ top: 0.3rem;
6614
+ font-size: 0.8rem;
6615
+ color: var(--primary-color, #2196f3);
6616
+ transform: scale(0.9);
6617
+ }
6618
+
6619
+ /* Focus bar animation */
6620
+ .textfield2-bar {
6621
+ position: relative;
6622
+ display: block;
6623
+ width: 100%;
6624
+ }
6625
+
6626
+ .textfield2-bar:before,
6627
+ .textfield2-bar:after {
6628
+ content: "";
6629
+ height: 2px;
6630
+ width: 0;
6631
+ bottom: 1px;
6632
+ position: absolute;
6633
+ background: var(--primary-color, #2196f3);
6634
+ transition: width 0.2s ease;
6635
+ }
6636
+
6637
+ .textfield2-bar:before {
6638
+ left: 50%;
6639
+ }
6640
+
6641
+ .textfield2-bar:after {
6642
+ right: 50%;
6643
+ }
6644
+
6645
+ /* Active bar state */
6646
+ .textfield2 > input:focus ~ .textfield2-bar:before,
6647
+ .textfield2 > input:focus ~ .textfield2-bar:after,
6648
+ .textfield2 > textarea:focus ~ .textfield2-bar:before,
6649
+ .textfield2 > textarea:focus ~ .textfield2-bar:after,
6650
+ .textfield2.focused .textfield2-bar:before,
6651
+ .textfield2.focused .textfield2-bar:after {
6652
+ width: 50%;
6653
+ }
6654
+
6655
+ .textfield2.error .textfield2-bar:before,
6656
+ .textfield2.error .textfield2-bar:after,
6657
+ .textfield2.invalid .textfield2-bar:before,
6658
+ .textfield2.invalid .textfield2-bar:after {
6659
+ background: var(--error-color, #f44336);
6660
+ }
6661
+
6662
+ /* Helper text */
6663
+ .textfield2-helper {
6664
+ display: flex;
6665
+ align-items: center;
6666
+ gap: 0.25rem;
6667
+ margin-top: 0.25rem;
6668
+ font-size: 0.75rem;
6669
+ line-height: 1.2;
6670
+ min-height: 1rem;
6671
+ }
6672
+
6673
+ .textfield2-helper.helper {
6674
+ color: var(--text-color-light, #666);
6675
+ }
6676
+
6677
+ .textfield2-helper.error {
6678
+ color: var(--error-color, #f44336);
6679
+ }
6680
+
6681
+ .textfield2-helper .icon {
6682
+ flex-shrink: 0;
6683
+ }
6684
+
6685
+ /* Outlined variant */
6686
+ .textfield2-outlined {
6687
+ border: 1px solid var(--divider-color, #e0e0e0);
6688
+ border-radius: 4px;
6689
+ padding: 0.5rem;
6690
+ background-color: var(--paper-color, #fff);
6691
+ }
6692
+
6693
+ .textfield2-outlined > input,
6694
+ .textfield2-outlined > textarea {
6695
+ border: none;
6696
+ padding: 0.5rem;
6697
+ }
6698
+
6699
+ .textfield2-outlined > label {
6700
+ background-color: var(--paper-color, #fff);
6701
+ padding: 0 0.25rem;
6702
+ left: 0.75rem;
6703
+ top: -0.5rem;
6704
+ }
6705
+
6706
+ .textfield2-outlined.focused,
6707
+ .textfield2-outlined > input:focus,
6708
+ .textfield2-outlined > textarea:focus {
6709
+ border-color: var(--primary-color, #2196f3);
6710
+ outline: none;
6711
+ }
6712
+
6713
+ .textfield2-outlined.error,
6714
+ .textfield2-outlined.invalid {
6715
+ border-color: var(--error-color, #f44336);
6716
+ }
6717
+
6718
+ .textfield2-outlined .textfield2-bar {
6719
+ display: none;
6720
+ }
6721
+
6722
+ /* Responsive adjustments */
6723
+ @media (max-width: 768px) {
6724
+ .textfield2 {
6725
+ padding-top: 1.25rem;
6726
+ }
6727
+
6728
+ .textfield2 > input,
6729
+ .textfield2 > textarea {
6730
+ font-size: 0.9rem;
6731
+ padding: 8px 8px 8px 0.4rem;
6732
+ }
6733
+
6734
+ .textfield2 > label {
6735
+ font-size: 0.8rem;
6736
+ left: 0.3rem;
6737
+ }
6738
+
6739
+ .textfield2-helper {
6740
+ font-size: 0.7rem;
6741
+ }
6742
+ }
6743
+
6744
+ /* High contrast mode support */
6745
+ @media (prefers-contrast: high) {
6746
+ .textfield2 > input,
6747
+ .textfield2 > textarea {
6748
+ border-width: 2px;
6749
+ }
6750
+
6751
+ .textfield2.focused > input,
6752
+ .textfield2.focused > textarea {
6753
+ border-width: 3px;
6754
+ }
6755
+
6756
+ .textfield2-outlined {
6757
+ border-width: 2px;
6758
+ }
6759
+
6760
+ .textfield2-outlined.focused {
6761
+ border-width: 3px;
6762
+ }
6763
+ }
6764
+
6765
+ /* Reduced motion support */
6766
+ @media (prefers-reduced-motion: reduce) {
6767
+ .textfield2,
6768
+ .textfield2 > input,
6769
+ .textfield2 > textarea,
6770
+ .textfield2 > label,
6771
+ .textfield2-bar:before,
6772
+ .textfield2-bar:after,
6773
+ .textfield2-clear,
6774
+ .textfield2-password-toggle {
6775
+ transition: none;
6776
+ }
6777
+ }
6778
+
6779
+ /* Dark theme support */
6780
+ @media (prefers-color-scheme: dark) {
6781
+ .textfield2 > input,
6782
+ .textfield2 > textarea {
6783
+ background-color: var(--paper-color-dark, #424242);
6784
+ color: var(--text-color-dark, #ffffff);
6785
+ border-color: var(--divider-color-dark, #616161);
6786
+ }
6787
+
6788
+ .textfield2-outlined {
6789
+ background-color: var(--paper-color-dark, #424242);
6790
+ border-color: var(--divider-color-dark, #616161);
6791
+ }
6792
+
6793
+ .textfield2 > label {
6794
+ background-color: var(--paper-color-dark, #424242);
6795
+ }
6796
+ }
6797
+
6798
+ /* Print styles */
6799
+ @media print {
6800
+ .textfield2 {
6801
+ -moz-column-break-inside: avoid;
6802
+ break-inside: avoid;
6803
+ }
6804
+
6805
+ .textfield2-clear,
6806
+ .textfield2-password-toggle {
6807
+ display: none !important;
6808
+ }
6809
+
6810
+ .textfield2 > input,
6811
+ .textfield2 > textarea {
6812
+ border: 1px solid black !important;
6813
+ background: white !important;
6814
+ color: black !important;
6815
+ }
6816
+
6817
+ .textfield2-helper {
6818
+ color: black !important;
6819
+ }
6820
+ }
6821
+
6822
+ /* Enhanced DropDown2 Styles */
6823
+
6824
+ .dropdown2 {
6825
+ position: relative;
6826
+ display: flex;
6827
+ flex-direction: column;
6828
+ min-width: 200px;
6829
+ }
6830
+
6831
+ .dropdown2-control {
6832
+ display: flex;
6833
+ align-items: center;
6834
+ min-height: 2.5rem;
6835
+ padding: 0.5rem;
6836
+ border: 1px solid var(--divider-color, #e0e0e0);
6837
+ border-radius: 4px;
6838
+ background-color: var(--paper-color, #fff);
6839
+ cursor: pointer;
6840
+ transition: all 0.2s ease;
6841
+ position: relative;
6842
+ }
6843
+
6844
+ .dropdown2-control:focus {
6845
+ outline: none;
6846
+ border-color: var(--primary-color, #2196f3);
6847
+ }
6848
+
6849
+ .dropdown2.disabled .dropdown2-control {
6850
+ opacity: 0.6;
6851
+ cursor: not-allowed;
6852
+ pointer-events: none;
6853
+ }
6854
+
6855
+ .dropdown2.readonly .dropdown2-control {
6856
+ background-color: var(--disabled-background, #f5f5f5);
6857
+ cursor: default;
6858
+ }
6859
+
6860
+ .dropdown2.error .dropdown2-control {
6861
+ border-color: var(--error-color, #f44336);
6862
+ }
6863
+
6864
+ .dropdown2.outlined .dropdown2-control {
6865
+ border-width: 2px;
6866
+ }
6867
+
6868
+ /* Dropdown value and search */
6869
+ .dropdown2-value {
6870
+ flex: 1;
6871
+ color: var(--text-color, #333);
6872
+ white-space: nowrap;
6873
+ overflow: hidden;
6874
+ text-overflow: ellipsis;
6875
+ }
6876
+
6877
+ .dropdown2-value.placeholder {
6878
+ color: var(--text-color-light, #666);
6879
+ }
6880
+
6881
+ .dropdown2-search {
6882
+ flex: 1;
6883
+ border: none;
6884
+ outline: none;
6885
+ background: transparent;
6886
+ color: var(--text-color, #333);
6887
+ font-size: inherit;
6888
+ }
6889
+
6890
+ /* Indicators */
6891
+ .dropdown2-indicators {
6892
+ display: flex;
6893
+ align-items: center;
6894
+ gap: 0.25rem;
6895
+ margin-left: 0.5rem;
6896
+ }
6897
+
6898
+ .dropdown2-clear {
6899
+ color: var(--text-color-light, #666);
6900
+ cursor: pointer;
6901
+ transition: color 0.2s ease;
6902
+ }
6903
+
6904
+ .dropdown2-clear:hover {
6905
+ color: var(--text-color, #333);
6906
+ }
6907
+
6908
+ .dropdown2-arrow {
6909
+ color: var(--text-color-light, #666);
6910
+ transition: transform 0.2s ease;
6911
+ }
6912
+
6913
+ .dropdown2.open .dropdown2-arrow {
6914
+ transform: rotate(180deg);
6915
+ }
6916
+
6917
+ /* Label */
6918
+ .dropdown2-label {
6919
+ position: absolute;
6920
+ top: -0.5rem;
6921
+ left: 0.75rem;
6922
+ background-color: var(--paper-color, #fff);
6923
+ padding: 0 0.25rem;
6924
+ font-size: 0.8rem;
6925
+ color: var(--primary-color, #2196f3);
6926
+ transition: all 0.2s ease;
6927
+ pointer-events: none;
6928
+ }
6929
+
6930
+ .dropdown2-label.active {
6931
+ transform: scale(0.9);
6932
+ }
6933
+
6934
+ /* Dropdown menu */
6935
+ .dropdown2-menu {
6936
+ position: absolute;
6937
+ top: 100%;
6938
+ left: 0;
6939
+ right: 0;
6940
+ z-index: 1000;
6941
+ background-color: var(--paper-color, #fff);
6942
+ border: 1px solid var(--divider-color, #e0e0e0);
6943
+ border-radius: 4px;
6944
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
6945
+ overflow: hidden;
6946
+ margin-top: 0.25rem;
6947
+ }
6948
+
6949
+ .dropdown2-menu.top {
6950
+ top: auto;
6951
+ bottom: 100%;
6952
+ margin-top: 0;
6953
+ margin-bottom: 0.25rem;
6954
+ }
6955
+
6956
+ .dropdown2-menu ul {
6957
+ list-style: none;
6958
+ margin: 0;
6959
+ padding: 0.25rem 0;
6960
+ max-height: inherit;
6961
+ overflow-y: auto;
6962
+ }
6963
+
6964
+ /* Options */
6965
+ .dropdown2-option {
6966
+ display: flex;
6967
+ align-items: center;
6968
+ padding: 0.5rem 0.75rem;
6969
+ cursor: pointer;
6970
+ transition: background-color 0.2s ease;
6971
+ gap: 0.5rem;
6972
+ }
6973
+
6974
+ .dropdown2-option:hover,
6975
+ .dropdown2-option.focused {
6976
+ background-color: var(--primary-color-lighter, #e3f2fd);
6977
+ }
6978
+
6979
+ .dropdown2-option.selected {
6980
+ background-color: var(--primary-color-light, #bbdefb);
6981
+ color: var(--primary-color-text, #1976d2);
6982
+ }
6983
+
6984
+ .dropdown2-option.selected:hover {
6985
+ background-color: var(--primary-color, #2196f3);
6986
+ color: var(--primary-color-text, white);
6987
+ }
6988
+
6989
+ .dropdown2-checkbox,
6990
+ .dropdown2-option-icon,
6991
+ .dropdown2-check {
6992
+ flex-shrink: 0;
6993
+ }
6994
+
6995
+ .dropdown2-option-text {
6996
+ flex: 1;
6997
+ overflow: hidden;
6998
+ text-overflow: ellipsis;
6999
+ white-space: nowrap;
7000
+ }
7001
+
7002
+ /* Group labels */
7003
+ .dropdown2-group-label {
7004
+ padding: 0.5rem 0.75rem 0.25rem;
7005
+ font-weight: 600;
7006
+ color: var(--text-color-light, #666);
7007
+ font-size: 0.8rem;
7008
+ text-transform: uppercase;
7009
+ letter-spacing: 0.5px;
7010
+ border-bottom: 1px solid var(--divider-color-light, #f0f0f0);
7011
+ }
7012
+
7013
+ /* No options */
7014
+ .dropdown2-no-options {
7015
+ padding: 1rem 0.75rem;
7016
+ text-align: center;
7017
+ color: var(--text-color-light, #666);
7018
+ font-style: italic;
7019
+ }
7020
+
7021
+ /* Helper text */
7022
+ .dropdown2-helper {
7023
+ display: flex;
7024
+ align-items: center;
7025
+ gap: 0.25rem;
7026
+ margin-top: 0.25rem;
7027
+ font-size: 0.75rem;
7028
+ line-height: 1.2;
7029
+ min-height: 1rem;
7030
+ }
7031
+
7032
+ .dropdown2-helper.helper {
7033
+ color: var(--text-color-light, #666);
7034
+ }
7035
+
7036
+ .dropdown2-helper.error {
7037
+ color: var(--error-color, #f44336);
7038
+ }
7039
+
7040
+ .dropdown2-helper .icon {
7041
+ flex-shrink: 0;
7042
+ }
7043
+
7044
+ /* Multiple selection */
7045
+ .dropdown2.multiple .dropdown2-value {
7046
+ display: flex;
7047
+ align-items: center;
7048
+ gap: 0.25rem;
7049
+ }
7050
+
7051
+ /* Responsive adjustments */
7052
+ @media (max-width: 768px) {
7053
+ .dropdown2 {
7054
+ min-width: 150px;
7055
+ }
7056
+
7057
+ .dropdown2-control {
7058
+ min-height: 2.25rem;
7059
+ padding: 0.375rem;
7060
+ }
7061
+
7062
+ .dropdown2-option {
7063
+ padding: 0.375rem 0.5rem;
7064
+ }
7065
+
7066
+ .dropdown2-menu {
7067
+ max-height: 150px;
7068
+ }
7069
+ }
7070
+
7071
+ /* High contrast mode support */
7072
+ @media (prefers-contrast: high) {
7073
+ .dropdown2-control {
7074
+ border-width: 2px;
7075
+ }
7076
+
7077
+ .dropdown2-control:focus {
7078
+ border-width: 3px;
7079
+ }
7080
+
7081
+ .dropdown2-option.selected {
7082
+ border: 2px solid var(--primary-color, #2196f3);
7083
+ }
7084
+ }
7085
+
7086
+ /* Reduced motion support */
7087
+ @media (prefers-reduced-motion: reduce) {
7088
+ .dropdown2-control,
7089
+ .dropdown2-arrow,
7090
+ .dropdown2-label,
7091
+ .dropdown2-option,
7092
+ .dropdown2-clear {
7093
+ transition: none;
7094
+ }
7095
+ }
7096
+
7097
+ /* Dark theme support */
7098
+ @media (prefers-color-scheme: dark) {
7099
+ .dropdown2-control {
7100
+ background-color: var(--paper-color-dark, #424242);
7101
+ border-color: var(--divider-color-dark, #616161);
7102
+ }
7103
+
7104
+ .dropdown2-menu {
7105
+ background-color: var(--paper-color-dark, #424242);
7106
+ border-color: var(--divider-color-dark, #616161);
7107
+ }
7108
+
7109
+ .dropdown2-label {
7110
+ background-color: var(--paper-color-dark, #424242);
7111
+ }
7112
+
7113
+ .dropdown2-value,
7114
+ .dropdown2-search {
7115
+ color: var(--text-color-dark, #ffffff);
7116
+ }
7117
+ }
7118
+
7119
+ /* Print styles for dropdown */
7120
+ @media print {
7121
+ .dropdown2-menu {
7122
+ display: none !important;
7123
+ }
7124
+
7125
+ .dropdown2-control {
7126
+ border: 1px solid black !important;
7127
+ background: white !important;
7128
+ }
7129
+
7130
+ .dropdown2-value {
7131
+ color: black !important;
7132
+ }
5988
7133
 
5989
- .column-resizer:hover {
5990
- background: rgba(33, 150, 243, 0.1);
5991
- border-right-color: var(--primary-color, #2196f3);
7134
+ .dropdown2-indicators {
7135
+ display: none !important;
7136
+ }
5992
7137
  }
5993
7138
 
5994
- .column-resizer:active {
5995
- background: rgba(33, 150, 243, 0.2);
5996
- border-right-color: var(--primary-color, #2196f3);
5997
- }
7139
+ /* Enhanced DateRange2 Styles */
5998
7140
 
5999
- /* Add resize indicator */
6000
- .resizable-column:hover .column-resizer::after {
6001
- content: '';
6002
- position: absolute;
6003
- top: 50%;
6004
- right: 1px;
6005
- transform: translateY(-50%);
6006
- width: 2px;
6007
- height: 20px;
6008
- background: var(--primary-color, #2196f3);
6009
- border-radius: 1px;
7141
+ .date-range2 {
7142
+ display: flex;
7143
+ flex-direction: column;
7144
+ gap: 0.5rem;
6010
7145
  }
6011
7146
 
6012
- /* Loading states */
6013
- .datatable2--loading {
6014
- opacity: 0.7;
6015
- pointer-events: none;
7147
+ .date-range2-label {
7148
+ font-size: 0.9rem;
7149
+ font-weight: 500;
7150
+ color: var(--text-color, #333);
7151
+ margin-bottom: 0.25rem;
6016
7152
  }
6017
7153
 
6018
- .datatable2--skeleton .skeleton-text {
6019
- background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
6020
- background-size: 200% 100%;
6021
- animation: skeleton-loading 1.5s infinite;
6022
- border-radius: 4px;
6023
- height: 1rem;
6024
- margin: 0.25rem 0;
7154
+ .date-range2-fields {
7155
+ display: flex;
7156
+ align-items: center;
7157
+ gap: 1rem;
7158
+ flex-wrap: wrap;
6025
7159
  }
6026
7160
 
6027
- .datatable2--skeleton .skeleton-text--header {
6028
- height: 1.2rem;
6029
- background: linear-gradient(90deg, #e0e0e0 25%, #d0d0d0 50%, #e0e0e0 75%);
6030
- background-size: 200% 100%;
7161
+ .date-range2-from,
7162
+ .date-range2-to {
7163
+ flex: 1;
7164
+ min-width: 150px;
6031
7165
  }
6032
7166
 
6033
- /* Row selection */
6034
- .datatable2 tbody tr.selected {
6035
- background-color: rgba(33, 150, 243, 0.1);
6036
- border-left: 3px solid var(--primary-color, #2196f3);
7167
+ .date-range2-separator {
7168
+ color: var(--text-color-light, #666);
7169
+ font-size: 0.9rem;
7170
+ padding: 0 0.5rem;
7171
+ white-space: nowrap;
6037
7172
  }
6038
7173
 
6039
- .datatable2 tbody tr:hover {
6040
- background-color: var(--hover-color, rgba(0, 0, 0, 0.04));
7174
+ /* States */
7175
+ .date-range2.disabled {
7176
+ opacity: 0.6;
7177
+ pointer-events: none;
6041
7178
  }
6042
7179
 
6043
- /* Footer */
6044
- .datatable2__footer {
6045
- padding: 1rem;
6046
- border-top: 1px solid var(--divider-color, #e0e0e0);
6047
- background: var(--background-color-light, #f8f9fa);
6048
- display: flex;
6049
- justify-content: space-between;
6050
- align-items: center;
7180
+ .date-range2.readonly {
7181
+ opacity: 0.8;
6051
7182
  }
6052
7183
 
6053
- /* Pagination */
6054
- .datatable2__pagination {
6055
- display: flex;
6056
- justify-content: center;
6057
- align-items: center;
6058
- gap: 1rem;
6059
- padding: 1rem;
6060
- border-top: 1px solid var(--divider-color, #e0e0e0);
7184
+ .date-range2.error .date-range2-label {
7185
+ color: var(--error-color, #f44336);
6061
7186
  }
6062
7187
 
6063
- .datatable2__pagination button {
6064
- padding: 0.5rem 1rem;
7188
+ .date-range2.outlined .date-range2-fields {
7189
+ padding: 0.5rem;
6065
7190
  border: 1px solid var(--divider-color, #e0e0e0);
6066
- background: white;
6067
- color: var(--text-color, #333);
6068
7191
  border-radius: 4px;
6069
- cursor: pointer;
6070
- transition: all 0.2s ease;
6071
- }
6072
-
6073
- .datatable2__pagination button:hover:not(:disabled) {
6074
- background: var(--primary-color, #2196f3);
6075
- color: white;
6076
- border-color: var(--primary-color, #2196f3);
7192
+ background-color: var(--paper-color, #fff);
6077
7193
  }
6078
7194
 
6079
- .datatable2__pagination button:disabled {
6080
- opacity: 0.6;
6081
- cursor: not-allowed;
7195
+ .date-range2.outlined.error {
7196
+ border-color: var(--error-color, #f44336);
6082
7197
  }
6083
7198
 
6084
- /* Enhanced cell viewers */
6085
- .image-cell {
7199
+ /* Helper text */
7200
+ .date-range2-helper {
6086
7201
  display: flex;
6087
7202
  align-items: center;
6088
- gap: 0.5rem;
6089
- }
6090
-
6091
- .image-cell img {
6092
- width: 32px;
6093
- height: 32px;
6094
- border-radius: 50%;
6095
- -o-object-fit: cover;
6096
- object-fit: cover;
6097
- }
6098
-
6099
- .entity-cell {
6100
- padding: 0.25rem 0.5rem;
7203
+ gap: 0.25rem;
7204
+ margin-top: 0.25rem;
7205
+ font-size: 0.75rem;
7206
+ line-height: 1.2;
7207
+ min-height: 1rem;
6101
7208
  }
6102
7209
 
6103
- .field-editor {
6104
- width: 100%;
7210
+ .date-range2-helper.helper {
7211
+ color: var(--text-color-light, #666);
6105
7212
  }
6106
7213
 
6107
- .string-viewer {
6108
- max-width: 200px;
6109
- overflow: hidden;
6110
- text-overflow: ellipsis;
6111
- white-space: nowrap;
7214
+ .date-range2-helper.error {
7215
+ color: var(--error-color, #f44336);
6112
7216
  }
6113
7217
 
6114
- /* Responsive design */
6115
- .datatable2--responsive {
6116
- overflow-x: auto;
7218
+ .date-range2-helper .icon {
7219
+ flex-shrink: 0;
6117
7220
  }
6118
7221
 
7222
+ /* Responsive adjustments */
6119
7223
  @media (max-width: 768px) {
6120
- .datatable2--responsive table {
6121
- min-width: 600px;
6122
- }
6123
-
6124
- .datatable2__search {
6125
- padding: 0.75rem;
6126
- }
6127
-
6128
- .datatable2__toolbar {
6129
- padding: 0.5rem 0.75rem;
7224
+ .date-range2-fields {
6130
7225
  flex-direction: column;
6131
- gap: 0.5rem;
6132
- }
6133
-
6134
- .datatable2__export-btn {
6135
- width: 100%;
6136
- justify-content: center;
6137
- }
6138
-
6139
- .datatable2__row-number {
6140
- width: 40px;
6141
- }
6142
-
6143
- .datatable2__row-number-header {
6144
- width: 40px;
6145
- }
6146
-
6147
- .datatable2--small th,
6148
- .datatable2--small td,
6149
- .datatable2--medium th,
6150
- .datatable2--medium td,
6151
- .datatable2--large th,
6152
- .datatable2--large td {
6153
- padding: 0.375rem 0.5rem;
6154
- font-size: 0.8rem;
7226
+ gap: 0.75rem;
7227
+ align-items: stretch;
6155
7228
  }
6156
- }
6157
7229
 
6158
- /* Animations */
6159
- @keyframes skeleton-loading {
6160
- 0% {
6161
- background-position: 200% 0;
6162
- }
6163
- 100% {
6164
- background-position: -200% 0;
7230
+ .date-range2-from,
7231
+ .date-range2-to {
7232
+ min-width: auto;
6165
7233
  }
6166
- }
6167
7234
 
6168
- /* Dark theme support */
6169
- @media (prefers-color-scheme: dark) {
6170
- .datatable2 {
6171
- background: var(--background-color-dark, #303030);
6172
- color: var(--text-color-dark, #ffffff);
6173
- }
6174
-
6175
- .datatable2__search,
6176
- .datatable2__toolbar,
6177
- .datatable2__footer {
6178
- background: var(--background-color-light-dark, #424242);
6179
- border-color: var(--divider-color-dark, #616161);
6180
- }
6181
-
6182
- .datatable2--striped tbody tr:nth-child(even) {
6183
- background-color: var(--background-color-light-dark, #424242);
6184
- }
6185
-
6186
- .datatable2__header--sticky {
6187
- background: var(--background-color-dark, #303030);
6188
- }
6189
-
6190
- .datatable2__row-number,
6191
- .datatable2__row-number-header {
6192
- background: var(--background-color-light-dark, #424242);
6193
- color: var(--text-color-light-dark, #cccccc);
6194
- border-color: var(--divider-color-dark, #616161);
6195
- }
6196
-
6197
- .datatable2 tbody tr:hover {
6198
- background-color: var(--hover-color-dark, rgba(255, 255, 255, 0.08));
6199
- }
6200
-
6201
- .datatable2 tbody tr.selected {
6202
- background-color: rgba(100, 181, 246, 0.2);
6203
- border-left-color: var(--primary-color-dark, #64b5f6);
6204
- }
6205
-
6206
- .datatable2--skeleton .skeleton-text {
6207
- background: linear-gradient(90deg, #424242 25%, #616161 50%, #424242 75%);
6208
- background-size: 200% 100%;
6209
- }
6210
-
6211
- .datatable2--skeleton .skeleton-text--header {
6212
- background: linear-gradient(90deg, #616161 25%, #757575 50%, #616161 75%);
6213
- background-size: 200% 100%;
6214
- }
6215
-
6216
- .datatable2__pagination button {
6217
- background: var(--background-color-dark, #303030);
6218
- color: var(--text-color-dark, #ffffff);
6219
- border-color: var(--divider-color-dark, #616161);
6220
- }
6221
-
6222
- .datatable2__export-btn {
6223
- border-color: var(--primary-color-dark, #64b5f6);
6224
- color: var(--primary-color-dark, #64b5f6);
6225
- }
6226
-
6227
- .datatable2__export-btn:hover:not(:disabled) {
6228
- background: var(--primary-color-dark, #64b5f6);
6229
- color: var(--text-color-dark, #000);
7235
+ .date-range2-separator {
7236
+ text-align: center;
7237
+ padding: 0;
6230
7238
  }
6231
7239
  }
6232
7240
 
6233
- /* High contrast mode */
7241
+ /* High contrast mode support */
6234
7242
  @media (prefers-contrast: high) {
6235
- .datatable2 {
6236
- border: 2px solid currentColor;
6237
- }
6238
-
6239
- .datatable2--bordered th,
6240
- .datatable2--bordered td {
7243
+ .date-range2.outlined .date-range2-fields {
6241
7244
  border-width: 2px;
6242
7245
  }
6243
-
6244
- .datatable2 tbody tr.selected {
6245
- outline: 3px solid var(--primary-color, #2196f3);
6246
- outline-offset: -3px;
6247
- }
6248
-
6249
- .datatable2__export-btn {
7246
+
7247
+ .date-range2.outlined.error {
6250
7248
  border-width: 2px;
6251
- font-weight: 600;
6252
7249
  }
6253
7250
  }
6254
7251
 
6255
- /* Reduced motion */
6256
- @media (prefers-reduced-motion: reduce) {
6257
- .datatable2,
6258
- .datatable2__export-btn,
6259
- .datatable2__pagination button,
6260
- .column-resizer {
6261
- transition: none;
7252
+ /* Dark theme support */
7253
+ @media (prefers-color-scheme: dark) {
7254
+ .date-range2-label {
7255
+ color: var(--text-color-dark, #ffffff);
6262
7256
  }
6263
-
6264
- .datatable2--skeleton .skeleton-text,
6265
- .datatable2--skeleton .skeleton-text--header {
6266
- animation: none;
6267
- background: #e0e0e0;
7257
+
7258
+ .date-range2.outlined .date-range2-fields {
7259
+ background-color: var(--paper-color-dark, #424242);
7260
+ border-color: var(--divider-color-dark, #616161);
6268
7261
  }
6269
7262
  }
6270
7263
 
6271
- /* Print styles */
7264
+ /* Print styles for date range */
6272
7265
  @media print {
6273
- .datatable2 {
6274
- -moz-column-break-inside: avoid;
6275
- break-inside: avoid;
6276
- box-shadow: none !important;
6277
- border: 1px solid black !important;
6278
- }
6279
-
6280
- .datatable2__search,
6281
- .datatable2__toolbar,
6282
- .datatable2__footer,
6283
- .datatable2__pagination {
6284
- display: none !important;
6285
- }
6286
-
6287
- .datatable2 th,
6288
- .datatable2 td {
7266
+ .date-range2-fields {
6289
7267
  border: 1px solid black !important;
6290
7268
  background: white !important;
6291
- color: black !important;
6292
- }
6293
-
6294
- .datatable2 tbody tr:hover {
6295
- background: white !important;
6296
7269
  }
6297
-
6298
- .datatable2 tbody tr.selected {
6299
- background: #f0f0f0 !important;
6300
- border-left: none !important;
7270
+
7271
+ .date-range2-label {
7272
+ color: black !important;
6301
7273
  }
6302
-
6303
- .column-resizer {
6304
- display: none !important;
7274
+
7275
+ .date-range2-separator {
7276
+ color: black !important;
6305
7277
  }
6306
7278
  }
6307
7279
 
@@ -6991,8 +7963,7 @@ textarea:read-only ~ label,
6991
7963
  }
6992
7964
 
6993
7965
  .tree-node:focus-within > .tree-item {
6994
- outline: 2px solid var(--primary-color, #2196f3);
6995
- outline-offset: -2px;
7966
+ outline: none;
6996
7967
  }
6997
7968
 
6998
7969
  /* TreeNode toggle */
@@ -7075,8 +8046,7 @@ textarea:read-only ~ label,
7075
8046
  }
7076
8047
 
7077
8048
  .tree-item:focus {
7078
- outline: 2px solid var(--primary-color, #2196f3);
7079
- outline-offset: -2px;
8049
+ outline: none;
7080
8050
  }
7081
8051
 
7082
8052
  /* TreeItem checkbox */
@@ -8426,6 +9396,7 @@ li.selected,
8426
9396
  padding: 1rem 1rem 0 1rem;
8427
9397
  display: flex;
8428
9398
  flex-direction: column;
9399
+ gap: 1rem
8429
9400
  }
8430
9401
 
8431
9402
  .login-box .message {