ywana-core8 0.1.78 → 0.1.80

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 (63) hide show
  1. package/dist/index.cjs +3244 -2215
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.css +2127 -1063
  4. package/dist/index.css.map +1 -1
  5. package/dist/index.modern.js +3244 -2215
  6. package/dist/index.modern.js.map +1 -1
  7. package/dist/index.umd.js +3244 -2215
  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/checkbox.example.js +93 -4
  19. package/src/html/checkbox.example.js.backup +316 -0
  20. package/src/html/chip.example.js +108 -4
  21. package/src/html/chip.example.js.backup +355 -0
  22. package/src/html/color.example.js +108 -4
  23. package/src/html/color.example.js.backup +527 -0
  24. package/src/html/components.example.js +123 -4
  25. package/src/html/components.example.js.backup +492 -0
  26. package/src/html/convert-examples.js +183 -0
  27. package/src/html/demo-sidebar.html +410 -0
  28. package/src/html/form.example.js +93 -4
  29. package/src/html/form.example.js.backup +385 -0
  30. package/src/html/header2.example.js +108 -4
  31. package/src/html/header2.example.js.backup +411 -0
  32. package/src/html/icon.example.js +77 -3
  33. package/src/html/icon.example.js.backup +268 -0
  34. package/src/html/list.example.js +93 -4
  35. package/src/html/list.example.js.backup +404 -0
  36. package/src/html/progress.example.js +74 -4
  37. package/src/html/progress.example.js.backup +424 -0
  38. package/src/html/property.example.js +123 -4
  39. package/src/html/property.example.js.backup +553 -0
  40. package/src/html/radio.example.js +108 -4
  41. package/src/html/radio.example.js.backup +389 -0
  42. package/src/html/section.example.js +42 -3
  43. package/src/html/section.example.js.backup +99 -0
  44. package/src/html/switch.example.js +108 -4
  45. package/src/html/switch.example.js.backup +461 -0
  46. package/src/html/tab.example.js +93 -4
  47. package/src/html/tab.example.js.backup +446 -0
  48. package/src/html/table-export-utils.js +483 -0
  49. package/src/html/table-summary-functions.js +363 -0
  50. package/src/html/table2.css +1496 -432
  51. package/src/html/table2.example.js +2937 -512
  52. package/src/html/table2.example.js.broken +1226 -0
  53. package/src/html/table2.js +1426 -1000
  54. package/src/html/test-resize.html +279 -0
  55. package/src/html/test-selection.html +387 -0
  56. package/src/html/textfield2.example.js +108 -4
  57. package/src/html/textfield2.example.js.backup +1370 -0
  58. package/src/html/tokenfield.example.js +108 -4
  59. package/src/html/tokenfield.example.js.backup +503 -0
  60. package/src/html/tree.css +2 -4
  61. package/src/html/tree.example.js +93 -4
  62. package/src/html/tree.example.js.backup +475 -0
  63. package/src/html/tree.js +19 -3
package/dist/index.css CHANGED
@@ -4781,1433 +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
- }
5587
-
5588
- .date-range2-separator {
5589
- text-align: center;
5590
- padding: 0;
5591
- }
5610
+ .datatable2__clear-filters--active {
5611
+ opacity: 1;
5592
5612
  }
5593
5613
 
5594
- /* High contrast mode support */
5595
- @media (prefers-contrast: high) {
5596
- .date-range2.outlined .date-range2-fields {
5597
- border-width: 2px;
5598
- }
5599
-
5600
- .date-range2.outlined.error {
5601
- border-width: 2px;
5602
- }
5614
+ .datatable2__clear-filters:hover {
5615
+ opacity: 1;
5616
+ color: #ef4444;
5603
5617
  }
5604
5618
 
5605
- /* Dark theme support */
5606
- @media (prefers-color-scheme: dark) {
5607
- .date-range2-label {
5608
- color: var(--text-color-dark, #ffffff);
5619
+ /* Responsive filters */
5620
+ @media (max-width: 768px) {
5621
+ .datatable2__filter-field {
5622
+ min-width: 80px;
5623
+ font-size: 0.8rem;
5609
5624
  }
5610
5625
 
5611
- .date-range2.outlined .date-range2-fields {
5612
- background-color: var(--paper-color-dark, #424242);
5613
- border-color: var(--divider-color-dark, #616161);
5626
+ .datatable2__filter-cell {
5627
+ padding: 0.25rem;
5614
5628
  }
5615
5629
  }
5616
5630
 
5617
- /* Print styles for date range */
5618
- @media print {
5619
- .date-range2-fields {
5620
- border: 1px solid black !important;
5621
- background: white !important;
5622
- }
5623
-
5624
- .date-range2-label {
5625
- color: black !important;
5626
- }
5627
-
5628
- .date-range2-separator {
5629
- color: black !important;
5630
- }
5631
+ /* Summary Row */
5632
+ .datatable2__summary-row {
5633
+ background: #f8fafc;
5634
+ border-top: 2px solid #e2e8f0;
5635
+ font-weight: 600;
5631
5636
  }
5632
5637
 
5633
- /* DataTable2 CSS - Enhanced version maintaining 100% compatibility */
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;
5645
+ }
5634
5646
 
5635
- /* Import original table styles for compatibility */
5636
- @import './table.css';
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
+ }
5637
5655
 
5638
- /* Enhanced DataTable2 Styles - New functionality while maintaining compatibility */
5656
+ .datatable2__summary-cell--actions {
5657
+ background: #e2e8f0;
5658
+ border-left: 1px solid #cbd5e1;
5659
+ }
5639
5660
 
5640
- .datatable2 {
5641
- position: relative;
5642
- width: 100%;
5643
- overflow: hidden;
5644
- border-radius: 8px;
5645
- background: var(--background-color, #ffffff);
5646
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
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;
5647
5672
  transition: all 0.2s ease;
5648
5673
  }
5649
5674
 
5650
- /* Fix table borders - single 1px borders */
5651
- .datatable2 table {
5652
- border-collapse: collapse;
5653
- width: 100%;
5654
- border-spacing: 0;
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);
5655
5680
  }
5656
5681
 
5657
- .datatable2 th,
5658
- .datatable2 td {
5659
- border: 1px solid var(--divider-color, #e0e0e0);
5660
- padding: 0.5rem 0.75rem;
5661
- text-align: left;
5662
- vertical-align: middle;
5663
- position: relative;
5664
- }
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
+ }
5665
5688
 
5666
- /* Fix editable fields to stay within cells */
5667
- .datatable2 .field-editor {
5668
- width: 100%;
5669
- max-width: 100%;
5670
- box-sizing: border-box;
5689
+ .datatable2__summary-value {
5690
+ font-size: 0.75rem;
5691
+ padding: 0.2rem 0.4rem;
5692
+ }
5671
5693
  }
5672
5694
 
5673
- .datatable2 .field-editor input,
5674
- .datatable2 .field-editor select,
5675
- .datatable2 .field-editor textarea {
5676
- width: 100%;
5677
- max-width: 100%;
5678
- box-sizing: border-box;
5679
- border: none;
5680
- outline: none;
5681
- background: transparent;
5682
- padding: 0.25rem;
5683
- margin: 0;
5684
- font-size: inherit;
5685
- font-family: inherit;
5686
- line-height: inherit;
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;
5687
5706
  }
5688
5707
 
5689
- .datatable2 .field-editor input:focus,
5690
- .datatable2 .field-editor select:focus,
5691
- .datatable2 .field-editor textarea:focus {
5692
- background: rgba(33, 150, 243, 0.05);
5693
- border-radius: 2px;
5708
+ .datatable2__export-environment-notice strong {
5709
+ display: block;
5710
+ font-size: 0.875rem;
5711
+ margin-bottom: 0.25rem;
5694
5712
  }
5695
5713
 
5696
- /* Search functionality */
5697
- .datatable2__search {
5698
- padding: 1rem;
5699
- border-bottom: 1px solid var(--divider-color, #e0e0e0);
5700
- background: var(--background-color-light, #f8f9fa);
5714
+ .datatable2__export-environment-notice p {
5715
+ margin: 0;
5716
+ font-size: 0.8rem;
5717
+ color: #a16207;
5701
5718
  }
5702
5719
 
5703
- /* Toolbar */
5704
- .datatable2__toolbar {
5720
+ .datatable2__export-stats {
5705
5721
  display: flex;
5706
- justify-content: space-between;
5707
- align-items: center;
5708
- padding: 0.5rem 1rem;
5709
- border-bottom: 1px solid var(--divider-color, #e0e0e0);
5710
- background: var(--background-color-light, #f8f9fa);
5722
+ gap: 1rem;
5723
+ margin-bottom: 1rem;
5724
+ padding: 0.75rem;
5725
+ background: #f8fafc;
5726
+ border: 1px solid #e2e8f0;
5727
+ border-radius: 6px;
5711
5728
  }
5712
5729
 
5713
- .datatable2__export-btn {
5730
+ .datatable2__stat {
5714
5731
  display: flex;
5732
+ flex-direction: column;
5715
5733
  align-items: center;
5716
- gap: 0.5rem;
5717
- padding: 0.5rem 1rem;
5718
- border: 1px solid var(--primary-color, #2196f3);
5719
- background: transparent;
5720
- color: var(--primary-color, #2196f3);
5721
- border-radius: 4px;
5722
- cursor: pointer;
5723
- font-size: 0.9rem;
5724
- transition: all 0.2s ease;
5725
- }
5726
-
5727
- .datatable2__export-btn:hover:not(:disabled) {
5728
- background: var(--primary-color, #2196f3);
5729
- color: white;
5734
+ gap: 0.25rem;
5730
5735
  }
5731
5736
 
5732
- .datatable2__export-btn:disabled {
5733
- opacity: 0.6;
5734
- cursor: not-allowed;
5737
+ .datatable2__stat-label {
5738
+ font-size: 0.75rem;
5739
+ color: #6b7280;
5740
+ font-weight: 500;
5735
5741
  }
5736
5742
 
5737
- /* Table variants */
5738
- .datatable2--striped tbody tr:nth-child(even) {
5739
- background-color: var(--background-color-light, #f8f9fa);
5743
+ .datatable2__stat-value {
5744
+ font-size: 1.25rem;
5745
+ font-weight: bold;
5746
+ color: #1f2937;
5740
5747
  }
5741
5748
 
5742
- .datatable2--compact {
5743
- font-size: 0.85rem;
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;
5744
5758
  }
5745
5759
 
5746
- .datatable2--compact th,
5747
- .datatable2--compact td {
5748
- padding: 0.375rem 0.5rem;
5760
+ .datatable2__export-status--success {
5761
+ background: #f0fdf4;
5762
+ color: #166534;
5763
+ border: 1px solid #bbf7d0;
5749
5764
  }
5750
5765
 
5751
- .datatable2--bordered {
5752
- border: 1px solid var(--divider-color, #e0e0e0);
5766
+ .datatable2__export-status--error {
5767
+ background: #fef2f2;
5768
+ color: #dc2626;
5769
+ border: 1px solid #fecaca;
5753
5770
  }
5754
5771
 
5755
- .datatable2--bordered th,
5756
- .datatable2--bordered td {
5757
- border: 1px solid var(--divider-color, #e0e0e0);
5772
+ .datatable2__export-section {
5773
+ margin-bottom: 1.5rem;
5758
5774
  }
5759
5775
 
5760
- .datatable2--no-hover tbody tr:hover {
5761
- background-color: inherit !important;
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;
5762
5783
  }
5763
5784
 
5764
- /* Row height variants - Clear differences */
5765
- .datatable2--small th,
5766
- .datatable2--small td {
5767
- padding: 0.25rem 0.5rem;
5768
- font-size: 0.75rem;
5769
- line-height: 1.2;
5770
- height: 32px;
5785
+ .datatable2__export-options {
5786
+ display: flex;
5787
+ flex-direction: column;
5788
+ gap: 0.5rem;
5771
5789
  }
5772
5790
 
5773
- .datatable2--medium th,
5774
- .datatable2--medium td {
5775
- padding: 0.5rem 0.75rem;
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;
5800
+ transition: all 0.2s ease;
5776
5801
  font-size: 0.875rem;
5777
- line-height: 1.4;
5778
- height: 44px;
5802
+ font-weight: 500;
5803
+ color: #374151;
5804
+ text-align: left;
5805
+ width: 100%;
5779
5806
  }
5780
5807
 
5781
- .datatable2--large th,
5782
- .datatable2--large td {
5783
- padding: 0.75rem 1rem;
5784
- font-size: 1rem;
5785
- line-height: 1.6;
5786
- height: 56px;
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);
5787
5813
  }
5788
5814
 
5789
- /* Density variants - Clear differences */
5790
- .datatable2--compact {
5791
- font-size: 0.8rem;
5815
+ .datatable2__export-button:active:not(:disabled) {
5816
+ transform: translateY(0);
5817
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
5792
5818
  }
5793
5819
 
5794
- .datatable2--compact th,
5795
- .datatable2--compact td {
5796
- padding: 0.25rem 0.5rem;
5797
- line-height: 1.2;
5798
- height: 28px;
5820
+ .datatable2__export-button:disabled {
5821
+ opacity: 0.5;
5822
+ cursor: not-allowed;
5823
+ background: #f3f4f6;
5799
5824
  }
5800
5825
 
5801
- .datatable2--normal {
5802
- font-size: 0.9rem;
5826
+ .datatable2__export-button--selected {
5827
+ border-color: #3b82f6;
5828
+ background: #eff6ff;
5829
+ color: #1d4ed8;
5803
5830
  }
5804
5831
 
5805
- .datatable2--normal th,
5806
- .datatable2--normal td {
5807
- padding: 0.5rem 0.75rem;
5808
- line-height: 1.4;
5809
- height: 40px;
5832
+ .datatable2__export-button--selected:hover:not(:disabled) {
5833
+ background: #dbeafe;
5834
+ border-color: #2563eb;
5810
5835
  }
5811
5836
 
5812
- .datatable2--comfortable {
5813
- font-size: 1rem;
5837
+ .datatable2__export-description {
5838
+ font-size: 0.75rem;
5839
+ color: #6b7280;
5840
+ font-weight: normal;
5841
+ margin-left: auto;
5814
5842
  }
5815
5843
 
5816
- .datatable2--comfortable th,
5817
- .datatable2--comfortable td {
5818
- padding: 0.875rem 1.25rem;
5819
- line-height: 1.6;
5820
- height: 52px;
5844
+ .datatable2__export-info {
5845
+ margin-top: 1rem;
5846
+ padding: 0.75rem;
5847
+ background: #f0f9ff;
5848
+ border: 1px solid #bae6fd;
5849
+ border-radius: 6px;
5821
5850
  }
5822
5851
 
5823
- /* Theme variants */
5824
- .datatable2--dark {
5825
- background: var(--background-color-dark, #303030);
5826
- color: var(--text-color-dark, #ffffff);
5852
+ .datatable2__export-note {
5853
+ display: flex;
5854
+ align-items: center;
5855
+ gap: 0.5rem;
5856
+ margin: 0;
5857
+ font-size: 0.8rem;
5858
+ color: #0c4a6e;
5827
5859
  }
5828
5860
 
5829
- .datatable2--dark th {
5830
- background: var(--background-color-light-dark, #424242);
5831
- color: var(--text-color-dark, #ffffff);
5832
- }
5861
+ /* Export responsive */
5862
+ @media (max-width: 768px) {
5863
+ .datatable2__export-stats {
5864
+ flex-direction: column;
5865
+ gap: 0.5rem;
5866
+ }
5833
5867
 
5834
- .datatable2--dark tbody tr:hover {
5835
- background-color: var(--hover-color-dark, rgba(255, 255, 255, 0.08));
5836
- }
5868
+ .datatable2__stat {
5869
+ flex-direction: row;
5870
+ justify-content: space-between;
5871
+ }
5837
5872
 
5838
- .datatable2--minimal {
5839
- box-shadow: none;
5840
- border: none;
5841
- }
5873
+ .datatable2__export-button {
5874
+ padding: 0.5rem 0.75rem;
5875
+ font-size: 0.8rem;
5876
+ }
5842
5877
 
5843
- .datatable2--minimal th {
5844
- border-bottom: 2px solid var(--primary-color, #2196f3);
5845
- background: transparent;
5878
+ .datatable2__export-description {
5879
+ display: none;
5880
+ }
5846
5881
  }
5847
5882
 
5848
- /* Header enhancements */
5849
- .datatable2__header--sticky {
5850
- position: sticky;
5851
- top: 0;
5852
- z-index: 10;
5853
- background: var(--background-color, #ffffff);
5854
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
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;
5855
5889
  }
5856
5890
 
5891
+ /* Row Numbers */
5857
5892
  .datatable2__row-number-header {
5858
5893
  width: 60px;
5894
+ min-width: 60px;
5895
+ max-width: 60px;
5859
5896
  text-align: center;
5860
- background: var(--background-color-light, #f8f9fa);
5897
+ padding: 0.75rem 0.5rem;
5861
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;
5862
5906
  }
5863
5907
 
5864
- /* Row numbers */
5865
5908
  .datatable2__row-number {
5866
5909
  width: 60px;
5910
+ min-width: 60px;
5911
+ max-width: 60px;
5867
5912
  text-align: center;
5868
- background: var(--background-color-light, #f8f9fa);
5869
- font-weight: 500;
5870
- color: var(--text-color-light, #666);
5871
- border-right: 1px solid var(--divider-color, #e0e0e0);
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;
5872
5922
  }
5873
5923
 
5874
- /* Column resizing - Enhanced visibility */
5875
- .resizable-column {
5876
- position: relative;
5877
- -webkit-user-select: none;
5878
- -moz-user-select: none;
5879
- user-select: none;
5924
+ .datatable2--striped .datatable2__row:nth-child(even) .datatable2__row-number {
5925
+ background: #f1f5f9;
5926
+ }
5927
+
5928
+ .datatable2__row:hover .datatable2__row-number {
5929
+ background: #e2e8f0;
5930
+ color: #374151;
5880
5931
  }
5881
5932
 
5882
- .column-resizer {
5883
- position: absolute;
5884
- top: 0;
5885
- right: -2px;
5886
- width: 6px;
5887
- height: 100%;
5888
- cursor: col-resize;
5889
- background: transparent;
5890
- transition: all 0.2s ease;
5891
- z-index: 10;
5892
- border-right: 2px solid transparent;
5893
- }
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
+ }
5952
+ }
5953
+
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
+ }
5981
+ }
5982
+
5983
+ /* Dark theme adjustments */
5984
+ .datatable2--dark .datatable2__container {
5985
+ border-color: #2d3748;
5986
+ }
5987
+
5988
+ .datatable2--dark .datatable2__toolbar {
5989
+ background: #2d3748;
5990
+ border-left-color: #4a5568;
5991
+ }
5992
+
5993
+ .datatable2--dark .datatable2__toolbar-button {
5994
+ background: #1a202c;
5995
+ border-color: #4a5568;
5996
+ color: #a0aec0;
5997
+ }
5998
+
5999
+ .datatable2--dark .datatable2__toolbar-button:hover {
6000
+ background: #2d3748;
6001
+ border-color: #63b3ed;
6002
+ color: #63b3ed;
6003
+ }
6004
+
6005
+ .datatable2--dark .datatable2__toolbar-button--active {
6006
+ background: #63b3ed;
6007
+ border-color: #63b3ed;
6008
+ color: #1a202c;
6009
+ }
6010
+
6011
+ .datatable2--dark .datatable2__panel {
6012
+ background: #1a202c;
6013
+ border-left-color: #2d3748;
6014
+ }
6015
+
6016
+ .datatable2--dark .datatable2__panel-header {
6017
+ background: #2d3748;
6018
+ border-bottom-color: #4a5568;
6019
+ }
6020
+
6021
+ .datatable2--dark .datatable2__panel-title {
6022
+ color: #f7fafc;
6023
+ }
6024
+
6025
+ .datatable2--dark .datatable2__panel-close {
6026
+ color: #a0aec0;
6027
+ }
6028
+
6029
+ .datatable2--dark .datatable2__panel-close:hover {
6030
+ background: #4a5568;
6031
+ color: #f7fafc;
6032
+ }
6033
+
6034
+ .datatable2--dark .datatable2__column-item {
6035
+ border-bottom-color: #2d3748;
6036
+ }
6037
+
6038
+ .datatable2--dark .datatable2__column-label {
6039
+ color: #e2e8f0;
6040
+ }
6041
+
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;
6063
+ text-align: center;
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;
6170
+ }
6171
+
6172
+ .datatable2__row-number {
6173
+ width: 60px;
6174
+ text-align: center;
6175
+ color: var(--text-color-secondary, #666);
6176
+ font-size: 0.75rem;
6177
+ background: var(--surface-color, #f8f9fa);
6178
+ }
6179
+
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;
6375
+ }
6376
+
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
+ }
5894
7133
 
5895
- .column-resizer:hover {
5896
- background: rgba(33, 150, 243, 0.1);
5897
- border-right-color: var(--primary-color, #2196f3);
7134
+ .dropdown2-indicators {
7135
+ display: none !important;
7136
+ }
5898
7137
  }
5899
7138
 
5900
- .column-resizer:active {
5901
- background: rgba(33, 150, 243, 0.2);
5902
- border-right-color: var(--primary-color, #2196f3);
5903
- }
7139
+ /* Enhanced DateRange2 Styles */
5904
7140
 
5905
- /* Add resize indicator */
5906
- .resizable-column:hover .column-resizer::after {
5907
- content: '';
5908
- position: absolute;
5909
- top: 50%;
5910
- right: 1px;
5911
- transform: translateY(-50%);
5912
- width: 2px;
5913
- height: 20px;
5914
- background: var(--primary-color, #2196f3);
5915
- border-radius: 1px;
7141
+ .date-range2 {
7142
+ display: flex;
7143
+ flex-direction: column;
7144
+ gap: 0.5rem;
5916
7145
  }
5917
7146
 
5918
- /* Loading states */
5919
- .datatable2--loading {
5920
- opacity: 0.7;
5921
- 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;
5922
7152
  }
5923
7153
 
5924
- .datatable2--skeleton .skeleton-text {
5925
- background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
5926
- background-size: 200% 100%;
5927
- animation: skeleton-loading 1.5s infinite;
5928
- border-radius: 4px;
5929
- height: 1rem;
5930
- margin: 0.25rem 0;
7154
+ .date-range2-fields {
7155
+ display: flex;
7156
+ align-items: center;
7157
+ gap: 1rem;
7158
+ flex-wrap: wrap;
5931
7159
  }
5932
7160
 
5933
- .datatable2--skeleton .skeleton-text--header {
5934
- height: 1.2rem;
5935
- background: linear-gradient(90deg, #e0e0e0 25%, #d0d0d0 50%, #e0e0e0 75%);
5936
- background-size: 200% 100%;
7161
+ .date-range2-from,
7162
+ .date-range2-to {
7163
+ flex: 1;
7164
+ min-width: 150px;
5937
7165
  }
5938
7166
 
5939
- /* Row selection */
5940
- .datatable2 tbody tr.selected {
5941
- background-color: rgba(33, 150, 243, 0.1);
5942
- border-left: 3px solid var(--primary-color, #2196f3);
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;
5943
7172
  }
5944
7173
 
5945
- .datatable2 tbody tr:hover {
5946
- 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;
5947
7178
  }
5948
7179
 
5949
- /* Footer */
5950
- .datatable2__footer {
5951
- padding: 1rem;
5952
- border-top: 1px solid var(--divider-color, #e0e0e0);
5953
- background: var(--background-color-light, #f8f9fa);
5954
- display: flex;
5955
- justify-content: space-between;
5956
- align-items: center;
7180
+ .date-range2.readonly {
7181
+ opacity: 0.8;
5957
7182
  }
5958
7183
 
5959
- /* Pagination */
5960
- .datatable2__pagination {
5961
- display: flex;
5962
- justify-content: center;
5963
- align-items: center;
5964
- gap: 1rem;
5965
- padding: 1rem;
5966
- border-top: 1px solid var(--divider-color, #e0e0e0);
7184
+ .date-range2.error .date-range2-label {
7185
+ color: var(--error-color, #f44336);
5967
7186
  }
5968
7187
 
5969
- .datatable2__pagination button {
5970
- padding: 0.5rem 1rem;
7188
+ .date-range2.outlined .date-range2-fields {
7189
+ padding: 0.5rem;
5971
7190
  border: 1px solid var(--divider-color, #e0e0e0);
5972
- background: white;
5973
- color: var(--text-color, #333);
5974
7191
  border-radius: 4px;
5975
- cursor: pointer;
5976
- transition: all 0.2s ease;
5977
- }
5978
-
5979
- .datatable2__pagination button:hover:not(:disabled) {
5980
- background: var(--primary-color, #2196f3);
5981
- color: white;
5982
- border-color: var(--primary-color, #2196f3);
7192
+ background-color: var(--paper-color, #fff);
5983
7193
  }
5984
7194
 
5985
- .datatable2__pagination button:disabled {
5986
- opacity: 0.6;
5987
- cursor: not-allowed;
7195
+ .date-range2.outlined.error {
7196
+ border-color: var(--error-color, #f44336);
5988
7197
  }
5989
7198
 
5990
- /* Enhanced cell viewers */
5991
- .image-cell {
7199
+ /* Helper text */
7200
+ .date-range2-helper {
5992
7201
  display: flex;
5993
7202
  align-items: center;
5994
- gap: 0.5rem;
5995
- }
5996
-
5997
- .image-cell img {
5998
- width: 32px;
5999
- height: 32px;
6000
- border-radius: 50%;
6001
- -o-object-fit: cover;
6002
- object-fit: cover;
6003
- }
6004
-
6005
- .entity-cell {
6006
- padding: 0.25rem 0.5rem;
7203
+ gap: 0.25rem;
7204
+ margin-top: 0.25rem;
7205
+ font-size: 0.75rem;
7206
+ line-height: 1.2;
7207
+ min-height: 1rem;
6007
7208
  }
6008
7209
 
6009
- .field-editor {
6010
- width: 100%;
7210
+ .date-range2-helper.helper {
7211
+ color: var(--text-color-light, #666);
6011
7212
  }
6012
7213
 
6013
- .string-viewer {
6014
- max-width: 200px;
6015
- overflow: hidden;
6016
- text-overflow: ellipsis;
6017
- white-space: nowrap;
7214
+ .date-range2-helper.error {
7215
+ color: var(--error-color, #f44336);
6018
7216
  }
6019
7217
 
6020
- /* Responsive design */
6021
- .datatable2--responsive {
6022
- overflow-x: auto;
7218
+ .date-range2-helper .icon {
7219
+ flex-shrink: 0;
6023
7220
  }
6024
7221
 
7222
+ /* Responsive adjustments */
6025
7223
  @media (max-width: 768px) {
6026
- .datatable2--responsive table {
6027
- min-width: 600px;
6028
- }
6029
-
6030
- .datatable2__search {
6031
- padding: 0.75rem;
6032
- }
6033
-
6034
- .datatable2__toolbar {
6035
- padding: 0.5rem 0.75rem;
7224
+ .date-range2-fields {
6036
7225
  flex-direction: column;
6037
- gap: 0.5rem;
6038
- }
6039
-
6040
- .datatable2__export-btn {
6041
- width: 100%;
6042
- justify-content: center;
6043
- }
6044
-
6045
- .datatable2__row-number {
6046
- width: 40px;
6047
- }
6048
-
6049
- .datatable2__row-number-header {
6050
- width: 40px;
6051
- }
6052
-
6053
- .datatable2--small th,
6054
- .datatable2--small td,
6055
- .datatable2--medium th,
6056
- .datatable2--medium td,
6057
- .datatable2--large th,
6058
- .datatable2--large td {
6059
- padding: 0.375rem 0.5rem;
6060
- font-size: 0.8rem;
7226
+ gap: 0.75rem;
7227
+ align-items: stretch;
6061
7228
  }
6062
- }
6063
7229
 
6064
- /* Animations */
6065
- @keyframes skeleton-loading {
6066
- 0% {
6067
- background-position: 200% 0;
6068
- }
6069
- 100% {
6070
- background-position: -200% 0;
7230
+ .date-range2-from,
7231
+ .date-range2-to {
7232
+ min-width: auto;
6071
7233
  }
6072
- }
6073
7234
 
6074
- /* Dark theme support */
6075
- @media (prefers-color-scheme: dark) {
6076
- .datatable2 {
6077
- background: var(--background-color-dark, #303030);
6078
- color: var(--text-color-dark, #ffffff);
6079
- }
6080
-
6081
- .datatable2__search,
6082
- .datatable2__toolbar,
6083
- .datatable2__footer {
6084
- background: var(--background-color-light-dark, #424242);
6085
- border-color: var(--divider-color-dark, #616161);
6086
- }
6087
-
6088
- .datatable2--striped tbody tr:nth-child(even) {
6089
- background-color: var(--background-color-light-dark, #424242);
6090
- }
6091
-
6092
- .datatable2__header--sticky {
6093
- background: var(--background-color-dark, #303030);
6094
- }
6095
-
6096
- .datatable2__row-number,
6097
- .datatable2__row-number-header {
6098
- background: var(--background-color-light-dark, #424242);
6099
- color: var(--text-color-light-dark, #cccccc);
6100
- border-color: var(--divider-color-dark, #616161);
6101
- }
6102
-
6103
- .datatable2 tbody tr:hover {
6104
- background-color: var(--hover-color-dark, rgba(255, 255, 255, 0.08));
6105
- }
6106
-
6107
- .datatable2 tbody tr.selected {
6108
- background-color: rgba(100, 181, 246, 0.2);
6109
- border-left-color: var(--primary-color-dark, #64b5f6);
6110
- }
6111
-
6112
- .datatable2--skeleton .skeleton-text {
6113
- background: linear-gradient(90deg, #424242 25%, #616161 50%, #424242 75%);
6114
- background-size: 200% 100%;
6115
- }
6116
-
6117
- .datatable2--skeleton .skeleton-text--header {
6118
- background: linear-gradient(90deg, #616161 25%, #757575 50%, #616161 75%);
6119
- background-size: 200% 100%;
6120
- }
6121
-
6122
- .datatable2__pagination button {
6123
- background: var(--background-color-dark, #303030);
6124
- color: var(--text-color-dark, #ffffff);
6125
- border-color: var(--divider-color-dark, #616161);
6126
- }
6127
-
6128
- .datatable2__export-btn {
6129
- border-color: var(--primary-color-dark, #64b5f6);
6130
- color: var(--primary-color-dark, #64b5f6);
6131
- }
6132
-
6133
- .datatable2__export-btn:hover:not(:disabled) {
6134
- background: var(--primary-color-dark, #64b5f6);
6135
- color: var(--text-color-dark, #000);
7235
+ .date-range2-separator {
7236
+ text-align: center;
7237
+ padding: 0;
6136
7238
  }
6137
7239
  }
6138
7240
 
6139
- /* High contrast mode */
7241
+ /* High contrast mode support */
6140
7242
  @media (prefers-contrast: high) {
6141
- .datatable2 {
6142
- border: 2px solid currentColor;
6143
- }
6144
-
6145
- .datatable2--bordered th,
6146
- .datatable2--bordered td {
7243
+ .date-range2.outlined .date-range2-fields {
6147
7244
  border-width: 2px;
6148
7245
  }
6149
-
6150
- .datatable2 tbody tr.selected {
6151
- outline: 3px solid var(--primary-color, #2196f3);
6152
- outline-offset: -3px;
6153
- }
6154
-
6155
- .datatable2__export-btn {
7246
+
7247
+ .date-range2.outlined.error {
6156
7248
  border-width: 2px;
6157
- font-weight: 600;
6158
7249
  }
6159
7250
  }
6160
7251
 
6161
- /* Reduced motion */
6162
- @media (prefers-reduced-motion: reduce) {
6163
- .datatable2,
6164
- .datatable2__export-btn,
6165
- .datatable2__pagination button,
6166
- .column-resizer {
6167
- transition: none;
7252
+ /* Dark theme support */
7253
+ @media (prefers-color-scheme: dark) {
7254
+ .date-range2-label {
7255
+ color: var(--text-color-dark, #ffffff);
6168
7256
  }
6169
-
6170
- .datatable2--skeleton .skeleton-text,
6171
- .datatable2--skeleton .skeleton-text--header {
6172
- animation: none;
6173
- 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);
6174
7261
  }
6175
7262
  }
6176
7263
 
6177
- /* Print styles */
7264
+ /* Print styles for date range */
6178
7265
  @media print {
6179
- .datatable2 {
6180
- -moz-column-break-inside: avoid;
6181
- break-inside: avoid;
6182
- box-shadow: none !important;
6183
- border: 1px solid black !important;
6184
- }
6185
-
6186
- .datatable2__search,
6187
- .datatable2__toolbar,
6188
- .datatable2__footer,
6189
- .datatable2__pagination {
6190
- display: none !important;
6191
- }
6192
-
6193
- .datatable2 th,
6194
- .datatable2 td {
7266
+ .date-range2-fields {
6195
7267
  border: 1px solid black !important;
6196
7268
  background: white !important;
6197
- color: black !important;
6198
- }
6199
-
6200
- .datatable2 tbody tr:hover {
6201
- background: white !important;
6202
7269
  }
6203
-
6204
- .datatable2 tbody tr.selected {
6205
- background: #f0f0f0 !important;
6206
- border-left: none !important;
7270
+
7271
+ .date-range2-label {
7272
+ color: black !important;
6207
7273
  }
6208
-
6209
- .column-resizer {
6210
- display: none !important;
7274
+
7275
+ .date-range2-separator {
7276
+ color: black !important;
6211
7277
  }
6212
7278
  }
6213
7279
 
@@ -6897,8 +7963,7 @@ textarea:read-only ~ label,
6897
7963
  }
6898
7964
 
6899
7965
  .tree-node:focus-within > .tree-item {
6900
- outline: 2px solid var(--primary-color, #2196f3);
6901
- outline-offset: -2px;
7966
+ outline: none;
6902
7967
  }
6903
7968
 
6904
7969
  /* TreeNode toggle */
@@ -6981,8 +8046,7 @@ textarea:read-only ~ label,
6981
8046
  }
6982
8047
 
6983
8048
  .tree-item:focus {
6984
- outline: 2px solid var(--primary-color, #2196f3);
6985
- outline-offset: -2px;
8049
+ outline: none;
6986
8050
  }
6987
8051
 
6988
8052
  /* TreeItem checkbox */