@genspectrum/dashboard-components 0.17.1 → 0.18.1

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 (52) hide show
  1. package/custom-elements.json +3 -3
  2. package/dist/assets/{mutationOverTimeWorker-CPfQDLe6.js.map → mutationOverTimeWorker-ChQTFL68.js.map} +1 -1
  3. package/dist/components.d.ts +46 -46
  4. package/dist/components.js +304 -3960
  5. package/dist/components.js.map +1 -1
  6. package/dist/style.css +2 -3687
  7. package/dist/util.d.ts +46 -46
  8. package/package.json +5 -5
  9. package/src/preact/aggregatedData/aggregate.tsx +3 -3
  10. package/src/preact/components/clearable-select.tsx +1 -1
  11. package/src/preact/components/color-scale-selector-dropdown.tsx +1 -1
  12. package/src/preact/components/color-scale-selector.tsx +1 -1
  13. package/src/preact/components/confidence-interval-selector.tsx +1 -1
  14. package/src/preact/components/downshift-combobox.tsx +3 -3
  15. package/src/preact/components/fullscreen.tsx +6 -2
  16. package/src/preact/components/info.tsx +1 -1
  17. package/src/preact/components/mutation-type-selector.tsx +1 -1
  18. package/src/preact/components/percent-intput.tsx +3 -3
  19. package/src/preact/components/proportion-selector-dropdown.tsx +1 -1
  20. package/src/preact/components/scaling-selector.tsx +1 -1
  21. package/src/preact/components/select.tsx +1 -1
  22. package/src/preact/components/tabs.tsx +1 -1
  23. package/src/preact/dateRangeFilter/date-picker.tsx +1 -1
  24. package/src/preact/dateRangeFilter/date-range-filter.tsx +4 -4
  25. package/src/preact/mutationComparison/mutation-comparison.tsx +1 -1
  26. package/src/preact/mutationFilter/mutation-filter.tsx +1 -1
  27. package/src/preact/mutations/mutations.tsx +2 -2
  28. package/src/preact/mutationsOverTime/__mockData__/aminoAcidMutationsByDay.ts +3773 -2290
  29. package/src/preact/mutationsOverTime/__mockData__/byWeek.ts +3012 -948
  30. package/src/preact/mutationsOverTime/__mockData__/defaultMockData.ts +8799 -4406
  31. package/src/preact/mutationsOverTime/__mockData__/showsMessageWhenTooManyMutations.ts +1836 -0
  32. package/src/preact/mutationsOverTime/getFilteredMutationsOverTime.spec.ts +3 -1
  33. package/src/preact/mutationsOverTime/mutations-over-time-grid.tsx +56 -21
  34. package/src/preact/mutationsOverTime/mutations-over-time.tsx +3 -2
  35. package/src/preact/numberSequencesOverTime/number-sequences-over-time.tsx +1 -1
  36. package/src/preact/prevalenceOverTime/prevalence-over-time.tsx +1 -1
  37. package/src/preact/sequencesByLocation/sequences-by-location-map.tsx +1 -1
  38. package/src/preact/sequencesByLocation/sequences-by-location.tsx +3 -7
  39. package/src/preact/wastewater/mutationsOverTime/computeWastewaterMutationsOverTimeDataPerLocation.spec.ts +5 -5
  40. package/src/preact/wastewater/mutationsOverTime/computeWastewaterMutationsOverTimeDataPerLocation.ts +1 -3
  41. package/src/query/queryMutationsOverTime.spec.ts +28 -26
  42. package/src/query/queryMutationsOverTime.ts +20 -8
  43. package/src/styles/tailwind.css +14 -3
  44. package/src/web-components/input/gs-date-range-filter.stories.ts +2 -2
  45. package/src/web-components/input/gs-lineage-filter.stories.ts +1 -1
  46. package/src/web-components/input/gs-location-filter.stories.ts +1 -1
  47. package/src/web-components/input/gs-mutation-filter.stories.ts +1 -1
  48. package/src/web-components/input/gs-text-filter.stories.ts +1 -1
  49. package/standalone-bundle/assets/{mutationOverTimeWorker-CERZSdcA.js.map → mutationOverTimeWorker-jChgWnwp.js.map} +1 -1
  50. package/standalone-bundle/dashboard-components.js +5455 -5431
  51. package/standalone-bundle/dashboard-components.js.map +1 -1
  52. package/standalone-bundle/style.css +1 -1
package/dist/util.d.ts CHANGED
@@ -890,7 +890,7 @@ declare global {
890
890
 
891
891
  declare global {
892
892
  interface HTMLElementTagNameMap {
893
- 'gs-mutation-comparison-component': MutationComparisonComponent;
893
+ 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
894
894
  }
895
895
  }
896
896
 
@@ -898,7 +898,7 @@ declare global {
898
898
  declare global {
899
899
  namespace JSX {
900
900
  interface IntrinsicElements {
901
- 'gs-mutation-comparison-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
901
+ 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
902
902
  }
903
903
  }
904
904
  }
@@ -906,7 +906,11 @@ declare global {
906
906
 
907
907
  declare global {
908
908
  interface HTMLElementTagNameMap {
909
- 'gs-mutations-component': MutationsComponent;
909
+ 'gs-date-range-filter': DateRangeFilterComponent;
910
+ }
911
+ interface HTMLElementEventMap {
912
+ 'gs-date-range-filter-changed': CustomEvent<Record<string, string>>;
913
+ 'gs-date-range-option-changed': DateRangeOptionChangedEvent;
910
914
  }
911
915
  }
912
916
 
@@ -914,7 +918,7 @@ declare global {
914
918
  declare global {
915
919
  namespace JSX {
916
920
  interface IntrinsicElements {
917
- 'gs-mutations-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
921
+ 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
918
922
  }
919
923
  }
920
924
  }
@@ -922,7 +926,10 @@ declare global {
922
926
 
923
927
  declare global {
924
928
  interface HTMLElementTagNameMap {
925
- 'gs-prevalence-over-time': PrevalenceOverTimeComponent;
929
+ 'gs-location-filter': LocationFilterComponent;
930
+ }
931
+ interface HTMLElementEventMap {
932
+ 'gs-location-changed': LocationChangedEvent;
926
933
  }
927
934
  }
928
935
 
@@ -930,7 +937,7 @@ declare global {
930
937
  declare global {
931
938
  namespace JSX {
932
939
  interface IntrinsicElements {
933
- 'gs-prevalence-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
940
+ 'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
934
941
  }
935
942
  }
936
943
  }
@@ -938,7 +945,10 @@ declare global {
938
945
 
939
946
  declare global {
940
947
  interface HTMLElementTagNameMap {
941
- 'gs-relative-growth-advantage': RelativeGrowthAdvantageComponent;
948
+ 'gs-text-filter': TextFilterComponent;
949
+ }
950
+ interface HTMLElementEventMap {
951
+ 'gs-text-filter-changed': TextFilterChangedEvent;
942
952
  }
943
953
  }
944
954
 
@@ -946,7 +956,7 @@ declare global {
946
956
  declare global {
947
957
  namespace JSX {
948
958
  interface IntrinsicElements {
949
- 'gs-relative-growth-advantage': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
959
+ 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
950
960
  }
951
961
  }
952
962
  }
@@ -954,7 +964,10 @@ declare global {
954
964
 
955
965
  declare global {
956
966
  interface HTMLElementTagNameMap {
957
- 'gs-aggregate': AggregateComponent;
967
+ 'gs-mutation-filter': MutationFilterComponent;
968
+ }
969
+ interface HTMLElementEventMap {
970
+ 'gs-mutation-filter-changed': CustomEvent<MutationsFilter>;
958
971
  }
959
972
  }
960
973
 
@@ -962,7 +975,7 @@ declare global {
962
975
  declare global {
963
976
  namespace JSX {
964
977
  interface IntrinsicElements {
965
- 'gs-aggregate': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
978
+ 'gs-mutation-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
966
979
  }
967
980
  }
968
981
  }
@@ -970,7 +983,10 @@ declare global {
970
983
 
971
984
  declare global {
972
985
  interface HTMLElementTagNameMap {
973
- 'gs-mutations-over-time': MutationsOverTimeComponent;
986
+ 'gs-lineage-filter': LineageFilterComponent;
987
+ }
988
+ interface HTMLElementEventMap {
989
+ 'gs-lineage-filter-changed': LineageFilterChangedEvent;
974
990
  }
975
991
  }
976
992
 
@@ -978,7 +994,7 @@ declare global {
978
994
  declare global {
979
995
  namespace JSX {
980
996
  interface IntrinsicElements {
981
- 'gs-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
997
+ 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
982
998
  }
983
999
  }
984
1000
  }
@@ -986,7 +1002,7 @@ declare global {
986
1002
 
987
1003
  declare global {
988
1004
  interface HTMLElementTagNameMap {
989
- 'gs-number-sequences-over-time': NumberSequencesOverTimeComponent;
1005
+ 'gs-mutations-component': MutationsComponent;
990
1006
  }
991
1007
  }
992
1008
 
@@ -994,7 +1010,7 @@ declare global {
994
1010
  declare global {
995
1011
  namespace JSX {
996
1012
  interface IntrinsicElements {
997
- 'gs-number-sequences-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1013
+ 'gs-mutations-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
998
1014
  }
999
1015
  }
1000
1016
  }
@@ -1002,7 +1018,7 @@ declare global {
1002
1018
 
1003
1019
  declare global {
1004
1020
  interface HTMLElementTagNameMap {
1005
- 'gs-sequences-by-location': SequencesByLocationComponent;
1021
+ 'gs-mutation-comparison-component': MutationComparisonComponent;
1006
1022
  }
1007
1023
  }
1008
1024
 
@@ -1010,7 +1026,7 @@ declare global {
1010
1026
  declare global {
1011
1027
  namespace JSX {
1012
1028
  interface IntrinsicElements {
1013
- 'gs-sequences-by-location': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1029
+ 'gs-mutation-comparison-component': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1014
1030
  }
1015
1031
  }
1016
1032
  }
@@ -1018,7 +1034,7 @@ declare global {
1018
1034
 
1019
1035
  declare global {
1020
1036
  interface HTMLElementTagNameMap {
1021
- 'gs-statistics': StatisticsComponent;
1037
+ 'gs-relative-growth-advantage': RelativeGrowthAdvantageComponent;
1022
1038
  }
1023
1039
  }
1024
1040
 
@@ -1026,7 +1042,7 @@ declare global {
1026
1042
  declare global {
1027
1043
  namespace JSX {
1028
1044
  interface IntrinsicElements {
1029
- 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1045
+ 'gs-relative-growth-advantage': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1030
1046
  }
1031
1047
  }
1032
1048
  }
@@ -1034,7 +1050,7 @@ declare global {
1034
1050
 
1035
1051
  declare global {
1036
1052
  interface HTMLElementTagNameMap {
1037
- 'gs-wastewater-mutations-over-time': WastewaterMutationsOverTimeComponent;
1053
+ 'gs-prevalence-over-time': PrevalenceOverTimeComponent;
1038
1054
  }
1039
1055
  }
1040
1056
 
@@ -1042,7 +1058,7 @@ declare global {
1042
1058
  declare global {
1043
1059
  namespace JSX {
1044
1060
  interface IntrinsicElements {
1045
- 'gs-wastewater-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1061
+ 'gs-prevalence-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1046
1062
  }
1047
1063
  }
1048
1064
  }
@@ -1050,11 +1066,7 @@ declare global {
1050
1066
 
1051
1067
  declare global {
1052
1068
  interface HTMLElementTagNameMap {
1053
- 'gs-date-range-filter': DateRangeFilterComponent;
1054
- }
1055
- interface HTMLElementEventMap {
1056
- 'gs-date-range-filter-changed': CustomEvent<Record<string, string>>;
1057
- 'gs-date-range-option-changed': DateRangeOptionChangedEvent;
1069
+ 'gs-aggregate': AggregateComponent;
1058
1070
  }
1059
1071
  }
1060
1072
 
@@ -1062,7 +1074,7 @@ declare global {
1062
1074
  declare global {
1063
1075
  namespace JSX {
1064
1076
  interface IntrinsicElements {
1065
- 'gs-date-range-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1077
+ 'gs-aggregate': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1066
1078
  }
1067
1079
  }
1068
1080
  }
@@ -1070,10 +1082,7 @@ declare global {
1070
1082
 
1071
1083
  declare global {
1072
1084
  interface HTMLElementTagNameMap {
1073
- 'gs-location-filter': LocationFilterComponent;
1074
- }
1075
- interface HTMLElementEventMap {
1076
- 'gs-location-changed': LocationChangedEvent;
1085
+ 'gs-number-sequences-over-time': NumberSequencesOverTimeComponent;
1077
1086
  }
1078
1087
  }
1079
1088
 
@@ -1081,7 +1090,7 @@ declare global {
1081
1090
  declare global {
1082
1091
  namespace JSX {
1083
1092
  interface IntrinsicElements {
1084
- 'gs-location-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1093
+ 'gs-number-sequences-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1085
1094
  }
1086
1095
  }
1087
1096
  }
@@ -1089,10 +1098,7 @@ declare global {
1089
1098
 
1090
1099
  declare global {
1091
1100
  interface HTMLElementTagNameMap {
1092
- 'gs-text-filter': TextFilterComponent;
1093
- }
1094
- interface HTMLElementEventMap {
1095
- 'gs-text-filter-changed': TextFilterChangedEvent;
1101
+ 'gs-mutations-over-time': MutationsOverTimeComponent;
1096
1102
  }
1097
1103
  }
1098
1104
 
@@ -1100,7 +1106,7 @@ declare global {
1100
1106
  declare global {
1101
1107
  namespace JSX {
1102
1108
  interface IntrinsicElements {
1103
- 'gs-text-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1109
+ 'gs-mutations-over-time': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1104
1110
  }
1105
1111
  }
1106
1112
  }
@@ -1108,10 +1114,7 @@ declare global {
1108
1114
 
1109
1115
  declare global {
1110
1116
  interface HTMLElementTagNameMap {
1111
- 'gs-mutation-filter': MutationFilterComponent;
1112
- }
1113
- interface HTMLElementEventMap {
1114
- 'gs-mutation-filter-changed': CustomEvent<MutationsFilter>;
1117
+ 'gs-sequences-by-location': SequencesByLocationComponent;
1115
1118
  }
1116
1119
  }
1117
1120
 
@@ -1119,7 +1122,7 @@ declare global {
1119
1122
  declare global {
1120
1123
  namespace JSX {
1121
1124
  interface IntrinsicElements {
1122
- 'gs-mutation-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1125
+ 'gs-sequences-by-location': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1123
1126
  }
1124
1127
  }
1125
1128
  }
@@ -1127,10 +1130,7 @@ declare global {
1127
1130
 
1128
1131
  declare global {
1129
1132
  interface HTMLElementTagNameMap {
1130
- 'gs-lineage-filter': LineageFilterComponent;
1131
- }
1132
- interface HTMLElementEventMap {
1133
- 'gs-lineage-filter-changed': LineageFilterChangedEvent;
1133
+ 'gs-statistics': StatisticsComponent;
1134
1134
  }
1135
1135
  }
1136
1136
 
@@ -1138,7 +1138,7 @@ declare global {
1138
1138
  declare global {
1139
1139
  namespace JSX {
1140
1140
  interface IntrinsicElements {
1141
- 'gs-lineage-filter': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1141
+ 'gs-statistics': DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>;
1142
1142
  }
1143
1143
  }
1144
1144
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genspectrum/dashboard-components",
3
- "version": "0.17.1",
3
+ "version": "0.18.1",
4
4
  "description": "GenSpectrum web components for building dashboards",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",
@@ -102,7 +102,7 @@
102
102
  "@custom-elements-manifest/analyzer": "^0.10.2",
103
103
  "@iconify-json/mdi": "^1.1.67",
104
104
  "@iconify-json/mdi-light": "^1.1.10",
105
- "@iconify/tailwind": "^1.1.2",
105
+ "@iconify/tailwind4": "^1.0.6",
106
106
  "@playwright/test": "^1.43.1",
107
107
  "@storybook/addon-actions": "^8.0.9",
108
108
  "@storybook/addon-essentials": "^8.0.9",
@@ -116,7 +116,7 @@
116
116
  "@storybook/types": "^8.0.9",
117
117
  "@storybook/web-components": "^8.0.9",
118
118
  "@storybook/web-components-vite": "^8.0.9",
119
- "@tailwindcss/container-queries": "^0.1.1",
119
+ "@tailwindcss/postcss": "^4.0.9",
120
120
  "@testing-library/preact": "^3.2.4",
121
121
  "@types/geojson": "^7946.0.15",
122
122
  "@types/leaflet": "^1.9.15",
@@ -126,7 +126,7 @@
126
126
  "@typescript-eslint/eslint-plugin": "^8.2.0",
127
127
  "@typescript-eslint/parser": "^8.2.0",
128
128
  "autoprefixer": "^10.4.19",
129
- "daisyui": "^4.10.2",
129
+ "daisyui": "^5.0.0",
130
130
  "depcheck": "^1.4.7",
131
131
  "eslint": "^8.57.0",
132
132
  "eslint-config-preact": "^1.3.0",
@@ -142,7 +142,7 @@
142
142
  "react": "^18.3.1",
143
143
  "storybook": "^8.0.9",
144
144
  "storybook-addon-fetch-mock": "^2.0.0",
145
- "tailwindcss": "^3.4.3",
145
+ "tailwindcss": "^4.0.9",
146
146
  "typescript": "~5.7.2",
147
147
  "vite": "^6.0.3",
148
148
  "vite-plugin-dts": "^4.0.3",
@@ -119,11 +119,11 @@ type ToolbarProps = {
119
119
 
120
120
  const Toolbar: FunctionComponent<ToolbarProps> = ({ data, originalComponentProps }) => {
121
121
  return (
122
- <div class='flex flex-row'>
123
- <CsvDownloadButton className='mx-1 btn btn-xs' getData={() => data} filename='aggregate.csv' />
122
+ <>
123
+ <CsvDownloadButton className='btn btn-xs' getData={() => data} filename='aggregate.csv' />
124
124
  <AggregateInfo originalComponentProps={originalComponentProps} />
125
125
  <Fullscreen />
126
- </div>
126
+ </>
127
127
  );
128
128
  };
129
129
 
@@ -50,7 +50,7 @@ export function ClearableSelect({
50
50
  return (
51
51
  <div className={`relative inline min-w-24 ${className}`}>
52
52
  <select
53
- className={`w-full select select-bordered pr-14 ${selectClassName}`}
53
+ className={`w-full select pr-14 ${selectClassName}`}
54
54
  value={selectedOption ?? undefinedValue}
55
55
  onChange={handleChange}
56
56
  >
@@ -10,7 +10,7 @@ export const ColorScaleSelectorDropdown: FunctionComponent<ColorScaleSelectorDro
10
10
  setColorScale,
11
11
  }) => {
12
12
  return (
13
- <div className='w-20'>
13
+ <div className='w-20 inline-flex'>
14
14
  <Dropdown buttonTitle={`Color scale`} placement={'bottom-start'}>
15
15
  <ColorScaleSelector colorScale={colorScale} setColorScale={setColorScale} />
16
16
  </Dropdown>
@@ -54,7 +54,7 @@ export const ColorScaleSelector: FunctionComponent<ColorScaleSelectorProps> = ({
54
54
  );
55
55
  };
56
56
 
57
- export const getColorWithingScale = (value: number | undefined, colorScale: ColorScale) => {
57
+ export const getColorWithinScale = (value: number | undefined, colorScale: ColorScale) => {
58
58
  if (value === undefined) {
59
59
  return 'lightgrey';
60
60
  }
@@ -39,7 +39,7 @@ export const ConfidenceIntervalSelector: FunctionComponent<ConfidenceIntervalSel
39
39
  const value = select.value as ConfidenceIntervalMethod;
40
40
  setConfidenceIntervalMethod(value);
41
41
  }}
42
- selectStyle={'select-xs select-bordered'}
42
+ selectStyle={'select-xs'}
43
43
  />
44
44
  );
45
45
  };
@@ -91,7 +91,7 @@ export function DownshiftCombobox<Item>({
91
91
  <div ref={divRef} className={'relative w-full'}>
92
92
  <div className='w-full flex flex-col gap-1'>
93
93
  <div
94
- className={`flex gap-0.5 input input-bordered min-w-32 ${inputClassName}`}
94
+ className={`flex gap-0.5 input min-w-32 w-full ${inputClassName}`}
95
95
  onBlur={(event) => {
96
96
  if (event.relatedTarget != buttonRef.current) {
97
97
  closeMenu();
@@ -131,7 +131,7 @@ export function DownshiftCombobox<Item>({
131
131
  {items.length > 0 ? (
132
132
  items.map((item, index) => (
133
133
  <li
134
- className={`${highlightedIndex === index ? 'bg-blue-300' : ''} ${selectedItem !== null && itemToString(selectedItem) === itemToString(item) ? 'font-bold' : ''} py-2 px-3 shadow-sm`}
134
+ className={`${highlightedIndex === index ? 'bg-blue-300' : ''} ${selectedItem !== null && itemToString(selectedItem) === itemToString(item) ? 'font-bold' : ''} py-2 px-3 shadow-xs`}
135
135
  key={itemToString(item)}
136
136
  {...getItemProps({ item, index })}
137
137
  >
@@ -139,7 +139,7 @@ export function DownshiftCombobox<Item>({
139
139
  </li>
140
140
  ))
141
141
  ) : (
142
- <li className='py-2 px-3 shadow-sm'>No elements to select.</li>
142
+ <li className='py-2 px-3 shadow-xs'>No elements to select.</li>
143
143
  )}
144
144
  </ul>
145
145
  </div>
@@ -18,9 +18,13 @@ export const Fullscreen = () => {
18
18
  }
19
19
  }
20
20
  }}
21
- className={`mt-0.5 iconify text-2xl ${isFullscreen ? 'mdi--fullscreen-exit hover:scale-90' : 'mdi--fullscreen hover:scale-110'}`}
21
+ className={`btn btn-xs`}
22
22
  title={isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'}
23
- />
23
+ >
24
+ <div
25
+ className={`iconify text-2xl ${isFullscreen ? 'mdi--fullscreen-exit hover:scale-90' : 'mdi--fullscreen hover:scale-110'}`}
26
+ />
27
+ </button>
24
28
  );
25
29
  };
26
30
 
@@ -4,7 +4,7 @@ import { Modal } from './modal';
4
4
 
5
5
  const Info: FunctionComponent = ({ children }) => {
6
6
  return (
7
- <div className='relative'>
7
+ <div className='relative inline-flex'>
8
8
  <Modal buttonClassName='btn btn-xs' modalContent={children}>
9
9
  ?
10
10
  </Modal>
@@ -17,7 +17,7 @@ export const MutationTypeSelector: FunctionComponent<MutationTypeSelectorProps>
17
17
  setDisplayedMutationTypes,
18
18
  }) => {
19
19
  return (
20
- <div className='w-[6rem]'>
20
+ <div className='w-[6rem] inline-flex'>
21
21
  <CheckboxSelector
22
22
  items={displayedMutationTypes}
23
23
  label={getMutationTypesSelectorLabel(displayedMutationTypes)}
@@ -40,7 +40,8 @@ export const PercentInput: FunctionComponent<PercentInputProps> = ({
40
40
 
41
41
  const isError = indicateError || !percentageInRange(internalPercentage);
42
42
  return (
43
- <label className={`input input-bordered flex items-center gap-2 w-32 ${isError ? 'input-error' : ''}`}>
43
+ <label className={`input flex items-center w-32 ${isError ? 'input-error' : ''}`}>
44
+ <span className='label'>%</span>
44
45
  <input
45
46
  type='number'
46
47
  step={0.1}
@@ -49,9 +50,8 @@ export const PercentInput: FunctionComponent<PercentInputProps> = ({
49
50
  value={internalPercentage}
50
51
  onInput={handleInputChange}
51
52
  lang='en'
52
- className={`grow w-16`}
53
+ className={`grow w-12`}
53
54
  />
54
- %
55
55
  </label>
56
56
  );
57
57
  };
@@ -16,7 +16,7 @@ export const ProportionSelectorDropdown: FunctionComponent<ProportionSelectorDro
16
16
  const width = 'w-[calc(1.5 * var(--tw-space-x-reverse) + 1.5 * var(--tw-space-x))]';
17
17
 
18
18
  return (
19
- <div className={width}>
19
+ <div className={`${width} inline-flex`}>
20
20
  <Dropdown buttonTitle={`${labelPrefix} ${percentLabel}`} placement={'bottom-start'}>
21
21
  <ProportionSelector
22
22
  proportionInterval={proportionInterval}
@@ -36,7 +36,7 @@ export const ScalingSelector: FunctionComponent<ScalingSelectorProps> = ({
36
36
  const value = select.value as ScaleType;
37
37
  setYAxisScaleType(value);
38
38
  }}
39
- selectStyle={`${className} select-xs select-bordered`}
39
+ selectStyle={`${className ?? ''} select-xs`}
40
40
  />
41
41
  );
42
42
  };
@@ -10,7 +10,7 @@ export interface SelectProps {
10
10
 
11
11
  export const Select: FunctionComponent<SelectProps> = ({ items, selected, onChange, selectStyle }) => {
12
12
  return (
13
- <select class={`select select-bordered ${selectStyle}`} value={selected} onChange={onChange}>
13
+ <select class={`select ${selectStyle} w-fit`} value={selected} onChange={onChange}>
14
14
  {items.map((item) => (
15
15
  <option key={item.value} value={item.value} disabled={item.disabled}>
16
16
  {item.label}
@@ -45,7 +45,7 @@ const Tabs: FunctionComponent<ComponentTabsProps> = ({ tabs, toolbar }) => {
45
45
  {tabElements}
46
46
  {toolbar && <div className='py-2 flex flex-wrap gap-y-1'>{toolbarElement}</div>}
47
47
  </div>
48
- <div className={`p-2 flex-grow overflow-scroll border-2 border-gray-100 rounded-b-md rounded-tr-md`}>
48
+ <div className={`p-2 grow overflow-scroll border-2 border-gray-100 rounded-b-md rounded-tr-md`}>
49
49
  {tabs.map((tab) => (
50
50
  <div className='h-full' key={tab.title} hidden={activeTab !== tab.title}>
51
51
  {tab.content}
@@ -55,7 +55,7 @@ export function DatePicker({
55
55
 
56
56
  return (
57
57
  <input
58
- className={`input input-bordered w-full ${className}`}
58
+ className={`input w-full ${className}`}
59
59
  type='text'
60
60
  placeholder={placeholderText}
61
61
  ref={inputRef}
@@ -193,7 +193,7 @@ export const DateRangeFilterInner = ({
193
193
  return (
194
194
  <div className={'@container'} ref={divRef}>
195
195
  <div className='flex min-w-[7.5rem] flex-col @md:flex-row'>
196
- <div className='flex-grow'>
196
+ <div className='grow'>
197
197
  <ClearableSelect
198
198
  items={options.map((item) => item.label)}
199
199
  placeholderText={placeholder}
@@ -205,9 +205,9 @@ export const DateRangeFilterInner = ({
205
205
  selectClassName={'rounded-t-md rounded-b-none @md:rounded-l-md @md:rounded-r-none'}
206
206
  />
207
207
  </div>
208
- <div className={'flex flex-grow flex-col @4xs:flex-row'}>
208
+ <div className={'flex grow flex-col @4xs:flex-row'}>
209
209
  <DatePicker
210
- className={'flex-grow min-w-[7.5rem] @4xs:rounded-bl-md @md:rounded-l-none rounded-none'}
210
+ className={'grow min-w-[7.5rem] @4xs:rounded-bl-md @md:rounded-l-none rounded-none'}
211
211
  value={state?.dateFrom}
212
212
  onChange={onChangeDateFrom}
213
213
  maxDate={state?.dateTo}
@@ -215,7 +215,7 @@ export const DateRangeFilterInner = ({
215
215
  />
216
216
  <DatePicker
217
217
  className={
218
- 'flex-grow min-w-[7.5rem] rounded-b-md rounded-t-none @4xs:rounded-tr-none @4xs:rounded-l-none @md:rounded-r-md '
218
+ 'grow min-w-[7.5rem] rounded-b-md rounded-t-none @4xs:rounded-tr-none @4xs:rounded-l-none @md:rounded-r-md '
219
219
  }
220
220
  value={state?.dateTo}
221
221
  onChange={onChangeDateTo}
@@ -178,7 +178,7 @@ const Toolbar: FunctionComponent<ToolbarProps> = ({
178
178
  setDisplayedMutationTypes={setDisplayedMutationTypes}
179
179
  />
180
180
  <CsvDownloadButton
181
- className='mx-1 btn btn-xs'
181
+ className='btn btn-xs'
182
182
  getData={() => getMutationComparisonTableData({ content: filteredData }, proportionInterval)}
183
183
  filename='mutation_comparison.csv'
184
184
  />
@@ -326,7 +326,7 @@ const SelectedFilter = ({ handleRemoveValue, mutationFilter }: SelectedFilterPro
326
326
  }}
327
327
  >
328
328
  {mutationFilter.value.toString()}
329
- <button className='ml-1' onClick={() => handleRemoveValue(mutationFilter)}>
329
+ <button className='ml-1 cursor-pointer' onClick={() => handleRemoveValue(mutationFilter)}>
330
330
  ×
331
331
  </button>
332
332
  </span>
@@ -200,7 +200,7 @@ const Toolbar: FunctionComponent<ToolbarProps> = ({
200
200
  setMaxProportion={(max) => setProportionInterval((prev) => ({ ...prev, max }))}
201
201
  />
202
202
  <CsvDownloadButton
203
- className='mx-1 btn btn-xs'
203
+ className='btn btn-xs'
204
204
  getData={() =>
205
205
  getMutationsTableData(
206
206
  filteredData.tableData,
@@ -215,7 +215,7 @@ const Toolbar: FunctionComponent<ToolbarProps> = ({
215
215
  )}
216
216
  {activeTab === 'Insertions' && (
217
217
  <CsvDownloadButton
218
- className='mx-1 btn btn-xs'
218
+ className='btn btn-xs'
219
219
  getData={() =>
220
220
  getInsertionsTableData(filteredData.insertions).map((row) => {
221
221
  return {