@genspectrum/dashboard-components 0.18.4 → 0.18.6

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 (37) hide show
  1. package/README.md +12 -0
  2. package/custom-elements.json +1 -1
  3. package/dist/components.d.ts +44 -44
  4. package/dist/components.js +826 -343
  5. package/dist/components.js.map +1 -1
  6. package/dist/style.css +2 -2
  7. package/dist/util.d.ts +44 -44
  8. package/package.json +2 -2
  9. package/src/preact/MutationAnnotationsContext.tsx +34 -27
  10. package/src/preact/components/dropdown.tsx +1 -1
  11. package/src/preact/components/info.tsx +1 -1
  12. package/src/preact/components/mutations-over-time-text-filter.stories.tsx +57 -0
  13. package/src/preact/components/mutations-over-time-text-filter.tsx +63 -0
  14. package/src/preact/components/segment-selector.stories.tsx +12 -5
  15. package/src/preact/components/segment-selector.tsx +11 -7
  16. package/src/preact/mutationComparison/mutation-comparison.tsx +5 -1
  17. package/src/preact/mutationFilter/mutation-filter.stories.tsx +169 -50
  18. package/src/preact/mutationFilter/mutation-filter.tsx +239 -234
  19. package/src/preact/mutationFilter/parseAndValidateMutation.ts +62 -10
  20. package/src/preact/mutationFilter/parseMutation.spec.ts +62 -47
  21. package/src/preact/mutations/mutations.tsx +5 -1
  22. package/src/preact/mutationsOverTime/getFilteredMutationsOverTime.spec.ts +128 -0
  23. package/src/preact/mutationsOverTime/getFilteredMutationsOverTimeData.ts +39 -2
  24. package/src/preact/mutationsOverTime/mutations-over-time-grid.tsx +9 -12
  25. package/src/preact/mutationsOverTime/mutations-over-time.stories.tsx +27 -0
  26. package/src/preact/mutationsOverTime/mutations-over-time.tsx +31 -6
  27. package/src/preact/sequencesByLocation/__mockData__/worldAtlas.json +1 -1
  28. package/src/preact/shared/tanstackTable/pagination-context.tsx +30 -0
  29. package/src/preact/shared/tanstackTable/pagination.tsx +41 -21
  30. package/src/preact/shared/tanstackTable/tanstackTable.tsx +17 -3
  31. package/src/preact/wastewater/mutationsOverTime/wastewater-mutations-over-time.stories.tsx +22 -4
  32. package/src/preact/wastewater/mutationsOverTime/wastewater-mutations-over-time.tsx +11 -2
  33. package/src/web-components/input/gs-mutation-filter.stories.ts +4 -4
  34. package/src/web-components/visualization/gs-prevalence-over-time.stories.ts +1 -1
  35. package/standalone-bundle/dashboard-components.js +12896 -13334
  36. package/standalone-bundle/dashboard-components.js.map +1 -1
  37. package/standalone-bundle/style.css +1 -1
@@ -843,7 +843,7 @@ const InfoHeadline2 = ({ children }) => {
843
843
  return /* @__PURE__ */ u$1("h2", { className: "text-justify text-base font-bold mt-4", children });
844
844
  };
845
845
  const InfoParagraph = ({ children }) => {
846
- return /* @__PURE__ */ u$1("p", { className: "text-justify text-base font-normal my-1", children });
846
+ return /* @__PURE__ */ u$1("p", { className: "text-justify text-base font-normal my-1 text-wrap", children });
847
847
  };
848
848
  const InfoLink = ({ children, href }) => {
849
849
  return /* @__PURE__ */ u$1("a", { className: "text-blue-600 hover:text-blue-800", href, target: "_blank", rel: "noopener noreferrer", children });
@@ -1069,43 +1069,46 @@ const MutationAnnotationsContextProvider = ({ value, children }) => {
1069
1069
  if (!parseResult2.success) {
1070
1070
  return parseResult2;
1071
1071
  }
1072
- const nucleotideMap = /* @__PURE__ */ new Map();
1073
- const nucleotidePositions = /* @__PURE__ */ new Map();
1074
- const aminoAcidMap = /* @__PURE__ */ new Map();
1075
- const aminoAcidPositions = /* @__PURE__ */ new Map();
1076
- value.forEach((annotation) => {
1077
- new Set(annotation.nucleotideMutations).forEach((code) => {
1078
- addAnnotationToMap(nucleotideMap, code, annotation);
1079
- });
1080
- new Set(annotation.aminoAcidMutations).forEach((code) => {
1081
- addAnnotationToMap(aminoAcidMap, code, annotation);
1082
- });
1083
- new Set(annotation.nucleotidePositions).forEach((position) => {
1084
- addAnnotationToMap(nucleotidePositions, position, annotation);
1085
- });
1086
- new Set(annotation.aminoAcidPositions).forEach((position) => {
1087
- addAnnotationToMap(aminoAcidPositions, position, annotation);
1088
- });
1089
- });
1090
- return {
1091
- success: true,
1092
- value: {
1093
- nucleotide: { mutation: nucleotideMap, position: nucleotidePositions },
1094
- "amino acid": { mutation: aminoAcidMap, position: aminoAcidPositions }
1095
- }
1096
- };
1072
+ return { success: true, value: getMutationAnnotationsContext(value) };
1097
1073
  }, [value]);
1098
1074
  if (!parseResult.success) {
1099
1075
  return /* @__PURE__ */ u$1(ResizeContainer, { size: { width: "100%" }, children: /* @__PURE__ */ u$1(ErrorDisplay, { error: parseResult.error, layout: "vertical" }) });
1100
1076
  }
1101
1077
  return /* @__PURE__ */ u$1(MutationAnnotationsContext.Provider, { value: parseResult.value, children });
1102
1078
  };
1079
+ function getMutationAnnotationsContext(value) {
1080
+ const nucleotideMap = /* @__PURE__ */ new Map();
1081
+ const nucleotidePositions = /* @__PURE__ */ new Map();
1082
+ const aminoAcidMap = /* @__PURE__ */ new Map();
1083
+ const aminoAcidPositions = /* @__PURE__ */ new Map();
1084
+ value.forEach((annotation) => {
1085
+ new Set(annotation.nucleotideMutations).forEach((code) => {
1086
+ addAnnotationToMap(nucleotideMap, code, annotation);
1087
+ });
1088
+ new Set(annotation.aminoAcidMutations).forEach((code) => {
1089
+ addAnnotationToMap(aminoAcidMap, code, annotation);
1090
+ });
1091
+ new Set(annotation.nucleotidePositions).forEach((position) => {
1092
+ addAnnotationToMap(nucleotidePositions, position, annotation);
1093
+ });
1094
+ new Set(annotation.aminoAcidPositions).forEach((position) => {
1095
+ addAnnotationToMap(aminoAcidPositions, position, annotation);
1096
+ });
1097
+ });
1098
+ return {
1099
+ nucleotide: { mutation: nucleotideMap, position: nucleotidePositions },
1100
+ "amino acid": { mutation: aminoAcidMap, position: aminoAcidPositions }
1101
+ };
1102
+ }
1103
1103
  function addAnnotationToMap(map2, code, annotation) {
1104
1104
  const oldAnnotations = map2.get(code.toUpperCase()) ?? [];
1105
1105
  map2.set(code.toUpperCase(), [...oldAnnotations, annotation]);
1106
1106
  }
1107
1107
  function useMutationAnnotationsProvider() {
1108
1108
  const mutationAnnotations = x$1(MutationAnnotationsContext);
1109
+ return getMutationAnnotationsProvider(mutationAnnotations);
1110
+ }
1111
+ function getMutationAnnotationsProvider(mutationAnnotations) {
1109
1112
  return (mutation, sequenceType) => {
1110
1113
  const position = mutation.segment === void 0 ? `${mutation.position}` : `${mutation.segment.toUpperCase()}:${mutation.position}`;
1111
1114
  const possiblePositionAnnotations = mutationAnnotations[sequenceType].position.get(position);
@@ -1912,7 +1915,7 @@ const Dropdown = ({ children, buttonTitle, placement }) => {
1912
1915
  setShowContent(!showContent);
1913
1916
  };
1914
1917
  return /* @__PURE__ */ u$1(Fragment, { children: [
1915
- /* @__PURE__ */ u$1("button", { type: "button", className: "btn btn-xs whitespace-nowrap w-full", onClick: toggle, ref: referenceRef, children: buttonTitle }),
1918
+ /* @__PURE__ */ u$1("button", { type: "button", className: "btn btn-xs whitespace-nowrap w-full", onClick: toggle, ref: referenceRef, children: /* @__PURE__ */ u$1("span", { className: "w-full truncate", children: buttonTitle }) }),
1916
1919
  /* @__PURE__ */ u$1("div", { ref: floatingRef, className: `${dropdownClass} ${showContent ? "" : "hidden"}`, children })
1917
1920
  ] });
1918
1921
  };
@@ -2201,34 +2204,36 @@ const ProportionSelectorDropdown = ({
2201
2204
  };
2202
2205
  const SegmentSelector = ({
2203
2206
  displayedSegments,
2204
- setDisplayedSegments
2207
+ setDisplayedSegments,
2208
+ sequenceType
2205
2209
  }) => {
2206
2210
  if (displayedSegments.length <= 1) {
2207
2211
  return null;
2208
2212
  }
2209
- return /* @__PURE__ */ u$1("div", { className: "w-24", children: /* @__PURE__ */ u$1(
2213
+ return /* @__PURE__ */ u$1("div", { className: "w-24 inline-flex", children: /* @__PURE__ */ u$1(
2210
2214
  CheckboxSelector,
2211
2215
  {
2212
2216
  items: displayedSegments,
2213
- label: getSegmentSelectorLabel(displayedSegments),
2217
+ label: getSegmentSelectorLabel(displayedSegments, sequenceType),
2214
2218
  setItems: (items) => setDisplayedSegments(items)
2215
2219
  }
2216
2220
  ) });
2217
2221
  };
2218
- const getSegmentSelectorLabel = (displayedSegments) => {
2222
+ const getSegmentSelectorLabel = (displayedSegments, sequenceType) => {
2219
2223
  const allSelectedSelected = displayedSegments.filter((segment) => segment.checked).map((segment) => segment.segment);
2224
+ const label = sequenceType === "amino acid" ? "gene" : "segment";
2220
2225
  if (allSelectedSelected.length === 0) {
2221
- return `No segments`;
2226
+ return `No ${label}s`;
2222
2227
  }
2223
2228
  if (displayedSegments.length === allSelectedSelected.length) {
2224
- return `All segments`;
2229
+ return `All ${label}s`;
2225
2230
  }
2226
- const longestDisplayString = `All segments`;
2231
+ const longestDisplayString = `All ${label}s`;
2227
2232
  const allSelectedSelectedString = allSelectedSelected.join(", ");
2228
2233
  if (longestDisplayString.length >= allSelectedSelectedString.length) {
2229
2234
  return allSelectedSelectedString;
2230
2235
  }
2231
- return `${allSelectedSelected.length} ${allSelectedSelected.length === 1 ? "segment" : "segments"}`;
2236
+ return `${allSelectedSelected.length} ${allSelectedSelected.length === 1 ? label : `${label}s`}`;
2232
2237
  };
2233
2238
  function useDisplayedSegments$1(sequenceType) {
2234
2239
  const referenceGenome = x$1(ReferenceGenomeContext);
@@ -2407,7 +2412,14 @@ const Toolbar$7 = ({
2407
2412
  setMaxProportion: (max) => setProportionInterval((prev) => ({ ...prev, max }))
2408
2413
  }
2409
2414
  ),
2410
- /* @__PURE__ */ u$1(SegmentSelector, { displayedSegments, setDisplayedSegments }),
2415
+ /* @__PURE__ */ u$1(
2416
+ SegmentSelector,
2417
+ {
2418
+ displayedSegments,
2419
+ setDisplayedSegments,
2420
+ sequenceType: originalComponentProps.sequenceType
2421
+ }
2422
+ ),
2411
2423
  /* @__PURE__ */ u$1(
2412
2424
  MutationTypeSelector,
2413
2425
  {
@@ -2452,8 +2464,8 @@ const MutationComparisonInfo = ({ originalComponentProps }) => {
2452
2464
  };
2453
2465
  const gridJsStyle = '.gridjs-head button, .gridjs-footer button {\n cursor: pointer;\n background-color: transparent;\n background-image: none;\n padding: 0;\n margin: 0;\n border: none;\n outline: none;\n}\n\n.gridjs-temp {\n position: relative;\n}\n\n.gridjs-head {\n width: 100%;\n margin-bottom: 5px;\n padding: 5px 1px;\n}\n.gridjs-head::after {\n content: "";\n display: block;\n clear: both;\n}\n.gridjs-head:empty {\n padding: 0;\n border: none;\n}\n\n.gridjs-container {\n overflow: hidden;\n display: inline-block;\n padding: 2px;\n color: #000;\n position: relative;\n z-index: 0;\n}\n\n.gridjs-footer {\n display: block;\n position: relative;\n width: 100%;\n z-index: 5;\n padding: 12px 24px;\n border-top: 1px solid #e5e7eb;\n background-color: #fff;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.26);\n border-radius: 0 0 8px 8px;\n border-bottom-width: 1px;\n border-color: #e5e7eb;\n}\n.gridjs-footer:empty {\n padding: 0;\n border: none;\n}\n\ninput.gridjs-input {\n outline: none;\n background-color: #fff;\n border: 1px solid #d2d6dc;\n border-radius: 5px;\n padding: 10px 13px;\n font-size: 14px;\n line-height: 1.45;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\ninput.gridjs-input:focus {\n box-shadow: 0 0 0 3px rgba(149, 189, 243, 0.5);\n border-color: #9bc2f7;\n}\n\n.gridjs-pagination {\n color: #3d4044;\n}\n.gridjs-pagination::after {\n content: "";\n display: block;\n clear: both;\n}\n.gridjs-pagination .gridjs-summary {\n float: left;\n margin-top: 5px;\n}\n.gridjs-pagination .gridjs-pages {\n float: right;\n}\n.gridjs-pagination .gridjs-pages button {\n padding: 5px 14px;\n border: 1px solid #d2d6dc;\n background-color: #fff;\n border-right: none;\n outline: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.gridjs-pagination .gridjs-pages button:focus {\n box-shadow: 0 0 0 2px rgba(149, 189, 243, 0.5);\n position: relative;\n margin-right: -1px;\n border-right: 1px solid #d2d6dc;\n}\n.gridjs-pagination .gridjs-pages button:hover {\n background-color: #f7f7f7;\n color: rgb(60, 66, 87);\n outline: none;\n}\n.gridjs-pagination .gridjs-pages button:disabled,\n.gridjs-pagination .gridjs-pages button[disabled],\n.gridjs-pagination .gridjs-pages button:hover:disabled {\n cursor: default;\n background-color: #fff;\n color: #6b7280;\n}\n.gridjs-pagination .gridjs-pages button.gridjs-spread {\n cursor: default;\n box-shadow: none;\n background-color: #fff;\n}\n.gridjs-pagination .gridjs-pages button.gridjs-currentPage {\n background-color: #f7f7f7;\n font-weight: bold;\n}\n.gridjs-pagination .gridjs-pages button:last-child {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n border-right: 1px solid #d2d6dc;\n}\n.gridjs-pagination .gridjs-pages button:first-child {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.gridjs-pagination .gridjs-pages button:last-child:focus {\n margin-right: 0;\n}\n\nbutton.gridjs-sort {\n float: right;\n height: 24px;\n width: 13px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position-x: center;\n cursor: pointer;\n padding: 0;\n margin: 0;\n border: none;\n outline: none;\n background-size: contain;\n}\nbutton.gridjs-sort-neutral {\n opacity: 0.3;\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSI0MDEuOTk4cHgiIGhlaWdodD0iNDAxLjk5OHB4IiB2aWV3Qm94PSIwIDAgNDAxLjk5OCA0MDEuOTk4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MDEuOTk4IDQwMS45OTg7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik03My4wOTIsMTY0LjQ1MmgyNTUuODEzYzQuOTQ5LDAsOS4yMzMtMS44MDcsMTIuODQ4LTUuNDI0YzMuNjEzLTMuNjE2LDUuNDI3LTcuODk4LDUuNDI3LTEyLjg0NwoJCQljMC00Ljk0OS0xLjgxMy05LjIyOS01LjQyNy0xMi44NUwyMTMuODQ2LDUuNDI0QzIxMC4yMzIsMS44MTIsMjA1Ljk1MSwwLDIwMC45OTksMHMtOS4yMzMsMS44MTItMTIuODUsNS40MjRMNjAuMjQyLDEzMy4zMzEKCQkJYy0zLjYxNywzLjYxNy01LjQyNCw3LjkwMS01LjQyNCwxMi44NWMwLDQuOTQ4LDEuODA3LDkuMjMxLDUuNDI0LDEyLjg0N0M2My44NjMsMTYyLjY0NSw2OC4xNDQsMTY0LjQ1Miw3My4wOTIsMTY0LjQ1MnoiLz4KCQk8cGF0aCBkPSJNMzI4LjkwNSwyMzcuNTQ5SDczLjA5MmMtNC45NTIsMC05LjIzMywxLjgwOC0xMi44NSw1LjQyMWMtMy42MTcsMy42MTctNS40MjQsNy44OTgtNS40MjQsMTIuODQ3CgkJCWMwLDQuOTQ5LDEuODA3LDkuMjMzLDUuNDI0LDEyLjg0OEwxODguMTQ5LDM5Ni41N2MzLjYyMSwzLjYxNyw3LjkwMiw1LjQyOCwxMi44NSw1LjQyOHM5LjIzMy0xLjgxMSwxMi44NDctNS40MjhsMTI3LjkwNy0xMjcuOTA2CgkJCWMzLjYxMy0zLjYxNCw1LjQyNy03Ljg5OCw1LjQyNy0xMi44NDhjMC00Ljk0OC0xLjgxMy05LjIyOS01LjQyNy0xMi44NDdDMzM4LjEzOSwyMzkuMzUzLDMzMy44NTQsMjM3LjU0OSwzMjguOTA1LDIzNy41NDl6Ii8+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: center;\n}\nbutton.gridjs-sort-asc {\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyOTIuMzYycHgiIGhlaWdodD0iMjkyLjM2MXB4IiB2aWV3Qm94PSIwIDAgMjkyLjM2MiAyOTIuMzYxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyOTIuMzYyIDI5Mi4zNjE7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGQ9Ik0yODYuOTM1LDE5Ny4yODdMMTU5LjAyOCw2OS4zODFjLTMuNjEzLTMuNjE3LTcuODk1LTUuNDI0LTEyLjg0Ny01LjQyNHMtOS4yMzMsMS44MDctMTIuODUsNS40MjRMNS40MjQsMTk3LjI4NwoJCUMxLjgwNywyMDAuOTA0LDAsMjA1LjE4NiwwLDIxMC4xMzRzMS44MDcsOS4yMzMsNS40MjQsMTIuODQ3YzMuNjIxLDMuNjE3LDcuOTAyLDUuNDI1LDEyLjg1LDUuNDI1aDI1NS44MTMKCQljNC45NDksMCw5LjIzMy0xLjgwOCwxMi44NDgtNS40MjVjMy42MTMtMy42MTMsNS40MjctNy44OTgsNS40MjctMTIuODQ3UzI5MC41NDgsMjAwLjkwNCwyODYuOTM1LDE5Ny4yODd6Ii8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: 35%;\n background-size: 10px;\n}\nbutton.gridjs-sort-desc {\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyOTIuMzYycHgiIGhlaWdodD0iMjkyLjM2MnB4IiB2aWV3Qm94PSIwIDAgMjkyLjM2MiAyOTIuMzYyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyOTIuMzYyIDI5Mi4zNjI7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGQ9Ik0yODYuOTM1LDY5LjM3N2MtMy42MTQtMy42MTctNy44OTgtNS40MjQtMTIuODQ4LTUuNDI0SDE4LjI3NGMtNC45NTIsMC05LjIzMywxLjgwNy0xMi44NSw1LjQyNAoJCUMxLjgwNyw3Mi45OTgsMCw3Ny4yNzksMCw4Mi4yMjhjMCw0Ljk0OCwxLjgwNyw5LjIyOSw1LjQyNCwxMi44NDdsMTI3LjkwNywxMjcuOTA3YzMuNjIxLDMuNjE3LDcuOTAyLDUuNDI4LDEyLjg1LDUuNDI4CgkJczkuMjMzLTEuODExLDEyLjg0Ny01LjQyOEwyODYuOTM1LDk1LjA3NGMzLjYxMy0zLjYxNyw1LjQyNy03Ljg5OCw1LjQyNy0xMi44NDdDMjkyLjM2Miw3Ny4yNzksMjkwLjU0OCw3Mi45OTgsMjg2LjkzNSw2OS4zNzd6Ii8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: 65%;\n background-size: 10px;\n}\nbutton.gridjs-sort:focus {\n outline: none;\n}\n\ntable.gridjs-table {\n width: 100%;\n max-width: 100%;\n border-collapse: collapse;\n text-align: left;\n display: table;\n margin: 0;\n padding: 0;\n overflow: auto;\n table-layout: fixed;\n}\n\n.gridjs-tbody {\n background-color: #fff;\n}\n\ntd.gridjs-td {\n border: 1px solid #e5e7eb;\n padding: 12px 24px;\n background-color: #fff;\n box-sizing: content-box;\n}\ntd.gridjs-td:first-child {\n border-left: none;\n}\ntd.gridjs-td:last-child {\n border-right: none;\n}\ntd.gridjs-message {\n text-align: center;\n}\n\nth.gridjs-th {\n position: relative;\n color: #6b7280;\n background-color: #f9fafb;\n border: 1px solid #e5e7eb;\n border-top: none;\n padding: 14px 24px;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n box-sizing: border-box;\n white-space: nowrap;\n outline: none;\n vertical-align: middle;\n}\nth.gridjs-th .gridjs-th-content {\n text-overflow: ellipsis;\n overflow: hidden;\n width: 100%;\n float: left;\n}\nth.gridjs-th-sort {\n cursor: pointer;\n}\nth.gridjs-th-sort .gridjs-th-content {\n width: calc(100% - 15px);\n}\nth.gridjs-th-sort:hover {\n background-color: #e5e7eb;\n}\nth.gridjs-th-sort:focus {\n background-color: #e5e7eb;\n}\nth.gridjs-th-fixed {\n position: sticky;\n box-shadow: 0 1px 0 0 #e5e7eb;\n}\n@supports (-moz-appearance: none) {\n th.gridjs-th-fixed {\n box-shadow: 0 0 0 1px #e5e7eb;\n }\n}\nth.gridjs-th:first-child {\n border-left: none;\n}\nth.gridjs-th:last-child {\n border-right: none;\n}\n\n.gridjs-tr {\n border: none;\n}\n.gridjs-tr-selected td {\n background-color: #ebf5ff;\n}\n.gridjs-tr:last-child td {\n border-bottom: 0;\n}\n\n.gridjs *,\n.gridjs :after,\n.gridjs :before {\n box-sizing: border-box;\n}\n\n.gridjs-wrapper {\n position: relative;\n z-index: 1;\n overflow: auto;\n width: 100%;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.26);\n border-radius: 8px 8px 0 0;\n display: block;\n border-top-width: 1px;\n border-color: #e5e7eb;\n}\n.gridjs-wrapper:nth-last-of-type(2) {\n border-radius: 8px;\n border-bottom-width: 1px;\n}\n\n.gridjs-search {\n float: left;\n}\n.gridjs-search-input {\n width: 250px;\n}\n\n.gridjs-loading-bar {\n z-index: 10;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: #fff;\n opacity: 0.5;\n}\n.gridjs-loading-bar::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n transform: translateX(-100%);\n background-image: linear-gradient(90deg, rgba(204, 204, 204, 0) 0, rgba(204, 204, 204, 0.2) 20%, rgba(204, 204, 204, 0.5) 60%, rgba(204, 204, 204, 0));\n animation: shimmer 2s infinite;\n content: "";\n}\n@keyframes shimmer {\n 100% {\n transform: translateX(100%);\n }\n}\n\n.gridjs-td .gridjs-checkbox {\n display: block;\n margin: auto;\n cursor: pointer;\n}\n\n.gridjs-resizable {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n width: 5px;\n}\n.gridjs-resizable:hover {\n cursor: ew-resize;\n background-color: #9bc2f7;\n}\n/*# sourceMappingURL=mermaid.css?inline.map */';
2454
2466
  const minMaxPercentSliderCss = 'input[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n pointer-events: all;\n width: 24px;\n height: 24px;\n background-color: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px #C6C6C6;\n cursor: pointer;\n}\n\ninput[type=range]::-moz-range-thumb {\n -webkit-appearance: none;\n pointer-events: all;\n width: 24px;\n height: 24px;\n background-color: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px #C6C6C6;\n cursor: pointer;\n}\n\ninput[type=range]::-webkit-slider-thumb:hover {\n background: #f7f7f7;\n}\n\ninput[type=range]::-webkit-slider-thumb:active {\n box-shadow: inset 0 0 3px #387bbe, 0 0 9px #387bbe;\n -webkit-box-shadow: inset 0 0 3px #387bbe, 0 0 9px #387bbe;\n}\n\ninput[type="range"] {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n height: 2px;\n width: 100%;\n position: absolute;\n background-color: #C6C6C6;\n pointer-events: none;\n}';
2455
- const tailwindStyle = `/*! tailwindcss v4.0.14 | MIT License | https://tailwindcss.com */
2456
- @layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(.885 .062 18.334);--color-red-600:oklch(.577 .245 27.325);--color-red-700:oklch(.505 .213 27.518);--color-blue-300:oklch(.809 .105 251.813);--color-blue-600:oklch(.546 .245 262.881);--color-blue-700:oklch(.488 .243 264.376);--color-blue-800:oklch(.424 .199 265.638);--color-slate-200:oklch(.929 .013 255.508);--color-slate-500:oklch(.554 .046 257.417);--color-gray-100:oklch(.967 .003 264.542);--color-gray-200:oklch(.928 .006 264.531);--color-gray-300:oklch(.872 .01 258.338);--color-gray-400:oklch(.707 .022 261.325);--color-gray-500:oklch(.551 .027 264.364);--color-gray-600:oklch(.446 .03 256.802);--color-gray-700:oklch(.373 .034 259.733);--color-neutral-500:oklch(.556 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--breakpoint-lg:64rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(--font-sans--font-variation-settings);--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(--font-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-mono--font-variation-settings)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}::placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@property --radialprogress{syntax: "<percentage>"; inherits: true; initial-value: 0%;}:root{scrollbar-color:color-mix(in oklch,currentColor 35%,#0000)#0000}:root:has(.modal-open,.modal[open],.modal:target,.modal-toggle:checked,.drawer:not([class*=drawer-open])>.drawer-toggle:checked){overflow:hidden}:root,[data-theme]{background-color:var(--root-bg,var(--color-base-100));color:var(--color-base-content)}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E")}.chat{--mask-chat:url("data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e")}:where(:root:has(.modal-open,.modal[open],.modal:target,.modal-toggle:checked,.drawer:not(.drawer-open)>.drawer-toggle:checked)){scrollbar-gutter:stable;background-image:linear-gradient(var(--color-base-100),var(--color-base-100));--root-bg:color-mix(in srgb,var(--color-base-100),oklch(0% 0 0) 40%)}}@layer components;@layer utilities{.diff{webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;direction:ltr;grid-template-columns:auto 1fr;width:100%;display:grid;position:relative;overflow:hidden;container-type:inline-size}.diff:focus-visible,.diff:has(.diff-item-1:focus),.diff:focus-visible{outline-style:var(--tw-outline-style);outline-offset:1px;outline-width:2px;outline-color:var(--color-base-content)}.diff:focus-visible .diff-resizer{min-width:90cqi;max-width:90cqi}.diff:has(.diff-item-2:focus-visible){outline-style:var(--tw-outline-style);outline-offset:1px;outline-width:2px}.diff:has(.diff-item-2:focus-visible) .diff-resizer{min-width:10cqi;max-width:10cqi}@supports (-webkit-overflow-scrolling:touch) and (overflow:-webkit-paged-x){.diff:focus .diff-resizer{min-width:10cqi;max-width:10cqi}.diff:has(.diff-item-1:focus) .diff-resizer{min-width:90cqi;max-width:90cqi}}.\\@container{container-type:inline-size}.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:transform .3s ease-out,visibility .3s allow-discrete,background-color .3s ease-out,opacity .1s ease-out;overscroll-behavior:contain;z-index:999;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:hidden}.modal::backdrop{display:none}.modal.modal-open,.modal[open],.modal:target{pointer-events:auto;visibility:visible;opacity:1;background-color:oklch(0% 0 0/.4);transition:transform .3s ease-out,background-color .3s ease-out,opacity .1s ease-out}:is(.modal.modal-open,.modal[open],.modal:target) .modal-box{opacity:1;translate:0;scale:1}@starting-style{.modal.modal-open,.modal[open],.modal:target{visibility:hidden;opacity:0}}.tooltip{--tt-bg:var(--color-neutral);--tt-off:calc(100% + .5rem);--tt-tail:calc(100% + 1px + .25rem);display:inline-block;position:relative}.tooltip>:where(.tooltip-content),.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:1;--tw-content:attr(data-tip);content:var(--tw-content);width:-moz-max-content;width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25em;transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms;display:block;position:absolute}:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible))>.tooltip-content,:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible))[data-tip]:before,:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible)):after{opacity:1;--tt-pos:0rem;transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translateX(-50%)translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off)50%}.tooltip:after{transform:translateX(-50%)translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail)50%}.tab{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;--tab-p:1rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));flex-wrap:wrap;order:var(--tab-order);height:calc(var(--size-field,.25rem)*10);border-color:#0000;justify-content:center;align-items:center;padding-inline-start:var(--tab-p);padding-inline-end:var(--tab-p);font-size:.875rem;display:inline-flex;position:relative}@media (hover:hover){.tab:hover{color:var(--color-base-content)}}.tab:is(input[type=radio]){min-width:-moz-fit-content;min-width:fit-content}.tab:is(input[type=radio]):after{content:attr(aria-label)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true]))+.tab-content{height:100%;display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true]){color:color-mix(in oklab,var(--color-base-content)50%,transparent)}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:-moz-fit-content;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;-moz-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);--tw-outline-style:none;outline-style:none;box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);outline-style:none}@media (forced-colors:active){:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active){outline-offset:2px;outline:2px solid #0000}}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth)*3px)-2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.dropdown{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(summary):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(summary):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover],.dropdown .dropdown-content{z-index:999;transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:95%}}:is(.dropdown.dropdown-open,.dropdown:not(.dropdown-hover):focus,.dropdown:focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown.dropdown-open,.dropdown:not(.dropdown-hover):focus,.dropdown:focus-within) .dropdown-content{opacity:1}.dropdown.dropdown-hover:hover .dropdown-content{opacity:1;scale:100%}.dropdown:is(details) summary::-webkit-details-marker{display:none}:is(.dropdown.dropdown-open,.dropdown:focus,.dropdown:focus-within) .dropdown-content{scale:100%}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}.dropdown[popover]:not(.dropdown-open,:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0/calc(var(--depth)*.15));box-shadow:0 .5px 0 .5px oklch(100% 0 0/calc(var(--depth)*6%))inset,var(--btn-shadow);--size:calc(var(--size-field,.25rem)*10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:color-mix(in oklab,var(--btn-bg),#000 calc(var(--depth)*5%));--btn-shadow:0 3px 2px -2px color-mix(in oklab,var(--btn-bg)calc(var(--depth)*30%),#0000),0 4px 3px -2px color-mix(in oklab,var(--btn-bg)calc(var(--depth)*30%),#0000);--btn-noise:var(--fx-noise);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}.prose .btn{text-decoration-line:none}@media (hover:hover){.btn:hover{--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%)}}.btn:focus-visible{outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 5%);--btn-border:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%);--btn-shadow:0 0 0 0 oklch(0% 0 0/0),0 0 0 0 oklch(0% 0 0/0);translate:0 .5px}.btn:is(:disabled,[disabled],.btn-disabled){pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:color-mix(in oklch,var(--color-base-content)20%,#0000)}.btn:is(:disabled,[disabled],.btn-disabled):not(.btn-link,.btn-ghost){background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);box-shadow:none}@media (hover:hover){.btn:is(:disabled,[disabled],.btn-disabled):hover{pointer-events:none;background-color:color-mix(in oklab,var(--color-neutral)20%,transparent);--btn-border:#0000;--btn-fg:color-mix(in oklch,var(--color-base-content)20%,#0000)}}.btn:is(input[type=checkbox],input[type=radio]){-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn:is(input[type=checkbox],input[type=radio]):after{content:attr(aria-label)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem)*6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.invisible{visibility:hidden}.visible{visibility:visible}.list{flex-direction:column;font-size:.875rem;display:flex}.list :where(.list-row){--list-grid-cols:minmax(0,auto)1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}.list :where(.list-row):has(.list-col-grow:first-child){--list-grid-cols:1fr}.list :where(.list-row):has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row) :not(.list-col-wrap){grid-row-start:1}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border)solid;inset-inline:var(--radius-box);border-color:color-mix(in oklab,var(--color-base-content)5%,transparent);position:absolute;bottom:0}.toggle{border:var(--border)solid currentColor;color:var(--input-color);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p),var(--radius-selector-max)) + min(var(--border),var(--radius-selector-max)));padding:var(--toggle-p);box-shadow:0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000)inset;--input-color:color-mix(in oklab,var(--color-base-content)50%,#0000);--toggle-p:.1875rem;--size:calc(var(--size-selector,.25rem)*6);width:calc((var(--size)*2) - (var(--border) + var(--toggle-p))*2);height:var(--size);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;transition:color .3s,grid-template-columns .2s;display:inline-grid;position:relative}.toggle>*{z-index:1;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:none}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:none}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);height:100%;box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000);background-color:currentColor;background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px*-1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border)solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border)solid #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);border-color:var(--input-color);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1))inset;--size:calc(var(--size-field,.25rem)*10);--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;font-size:.875rem;display:inline-flex;position:relative}.input:where(input){display:inline-flex}.input :where(input){-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.input :where(input):focus,.input :where(input):focus-within){outline-offset:2px;outline:2px solid #0000}}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000);outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}.input:has(>input[disabled]),.input:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:color-mix(in oklab,var(--color-base-content)40%,transparent);box-shadow:none}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]))::-moz-placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.indicator{width:-moz-max-content;width:max-content;display:inline-flex;position:relative}.indicator :where(.indicator-item){z-index:1;white-space:nowrap;top:var(--inidicator-t,0);bottom:var(--inidicator-b,auto);left:var(--inidicator-s,auto);right:var(--inidicator-e,0);translate:var(--inidicator-x,50%)var(--indicator-y,-50%);position:absolute}.table{border-radius:var(--radius-box);text-align:left;width:100%;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:color-mix(in oklab,var(--color-base-content)60%,transparent);font-size:.875rem;font-weight:600}.table :where(tfoot){border-top:var(--border)solid color-mix(in oklch,var(--color-base-content)5%,#0000)}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr,tbody tr:not(:last-child)){border-bottom:var(--border)solid color-mix(in oklch,var(--color-base-content)5%,#0000)}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);--tw-content:"";content:var(--tw-content);border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{content:counter(step);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{content:none}.steps .step[data-content]:after{content:attr(data-content)}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.range{-webkit-appearance:none;-moz-appearance:none;appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem)*6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:color-mix(in oklab,currentColor 10%,#0000);cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size)*.5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p)solid;-webkit-appearance:none;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000),0 0 0 2rem var(--range-thumb)inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2))0 0 calc(100rem*var(--range-fill));background-color:currentColor;position:relative;top:50%;transform:translateY(-50%)}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size)*.5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p)solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000),0 0 0 2rem var(--range-thumb)inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2))0 0 calc(100rem*var(--range-fill));background-color:currentColor;position:relative;top:50%}.range:disabled{cursor:not-allowed;opacity:.3}.select{border:var(--border)solid #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);text-overflow:ellipsis;box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1))inset;border-color:var(--input-color);--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000);--size:calc(var(--size-field,.25rem)*10);background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:1rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}.select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:inherit;border-radius:inherit;border-style:none;width:calc(100% + 2.75rem);height:calc(100% - 2px);margin-inline:-1rem -1.75rem;padding-inline:1rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select select:focus,.select select:focus-within){outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000);outline:2px solid var(--input-color);outline-offset:2px}.select:has(>select[disabled]),.select:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:color-mix(in oklab,var(--color-base-content)40%,transparent)}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]))::-moz-placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}.checkbox{border:var(--border)solid var(--input-color,color-mix(in oklab,var(--color-base-content)20%,#0000));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 0 #0000 inset,0 0 #0000;--size:calc(var(--size-selector,.25rem)*6);width:var(--size);height:var(--size);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0px 3px 0 0px oklch(100% 0 0/calc(var(--depth)*.1))inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px oklch(0% 0 0/calc(var(--depth)*.1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media (forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:none}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:none}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:none}.checkbox:disabled{cursor:not-allowed;opacity:.2}.radio{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;vertical-align:middle;border:var(--border)solid var(--input-color,color-mix(in srgb,currentColor 20%,#0000));box-shadow:0 1px oklch(0% 0 0/calc(var(--depth)*.1))inset;--size:calc(var(--size-selector,.25rem)*6);width:var(--size);height:var(--size);color:var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;position:relative}.radio:before{--tw-content:"";content:var(--tw-content);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor;animation:.2s ease-out radio}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px oklch(0% 0 0/calc(var(--depth)*.1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px*-1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.radio:disabled{cursor:not-allowed;opacity:.2}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.-top-3{top:calc(var(--spacing)*-3)}.top-0{top:calc(var(--spacing)*0)}.top-1\\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-full{top:100%}.-right-3{right:calc(var(--spacing)*-3)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-10{right:calc(var(--spacing)*10)}.right-full{right:100%}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-1\\/2{left:50%}.left-full{left:100%}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.z-10{z-index:10}.z-1001{z-index:1001}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:95%;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.stat-value{white-space:nowrap;grid-column-start:1;font-size:2rem;font-weight:800}.stat-desc,.stat-title{white-space:nowrap;color:color-mix(in oklab,var(--color-base-content)60%,transparent);grid-column-start:1;font-size:.75rem}.float-right{float:right}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);flex-direction:row;align-self:stretch;align-items:center;display:flex}.divider:before,.divider:after{content:"";background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.m-1{margin:calc(var(--spacing)*1)}.m-2{margin:calc(var(--spacing)*2)}.m-4{margin:calc(var(--spacing)*4)}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{content:"×"}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.my-4{margin-block:calc(var(--spacing)*4)}.label{white-space:nowrap;color:color-mix(in oklab,currentColor 60%,transparent);align-items:center;gap:.375rem;display:inline-flex}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border)solid color-mix(in oklab,currentColor 10%,#0000);margin-inline:-.75rem .75rem}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border)solid color-mix(in oklab,currentColor 10%,#0000);margin-inline:.75rem -.75rem}.join-item:where(:not(:first-child)){margin-block-start:0;margin-inline-start:calc(var(--border,1px)*-1)}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0{margin-bottom:calc(var(--spacing)*0)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-2\\.5{margin-left:calc(var(--spacing)*2.5)}.ml-3{margin-left:calc(var(--spacing)*3)}.status{aspect-ratio:1;border-radius:var(--radius-selector);background-color:color-mix(in oklab,var(--color-base-content)20%,transparent);vertical-align:middle;width:.5rem;height:.5rem;color:color-mix(in oklab,var(--color-black)30%,transparent);background-position:50%;background-repeat:no-repeat;background-image:radial-gradient(circle at 35% 30%,oklch(1 0 0/calc(var(--depth)*.5)),#0000);box-shadow:0 2px 3px -1px color-mix(in oklab,currentColor calc(var(--depth)*100%),#0000);display:inline-block}.iconify{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.tabs{--tabs-height:auto;--tabs-direction:row;height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.stat{grid-template-columns:repeat(1,1fr);-moz-column-gap:1rem;column-gap:1rem;width:100%;padding-block:1rem;padding-inline:1.5rem;display:inline-grid}.stat:not(:last-child){border-inline-end:var(--border)dashed color-mix(in oklab,currentColor 10%,#0000);border-block-end:none}.alert{border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;border:var(--border)solid var(--color-base-200);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0/calc(var(--depth)*.08))inset,0 1px color-mix(in oklab,color-mix(in oklab,#000 20%,var(--alert-color,var(--color-base-200)))calc(var(--depth)*20%),#0000),0 4px 3px -2px oklch(0% 0 0/calc(var(--depth)*.08));grid-template-columns:auto minmax(auto,1fr);grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}.alert.alert-outline{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none}.alert.alert-dash{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none;border-style:dashed}.alert.alert-soft{color:var(--alert-color,var(--color-base-content));background:color-mix(in oklab,var(--alert-color,var(--color-base-content))8%,var(--color-base-100));border-color:color-mix(in oklab,var(--alert-color,var(--color-base-content))10%,var(--color-base-100));box-shadow:none;background-image:none}.join{--join-ss:0;--join-se:0;--join-es:0;--join-ee:0;align-items:stretch;display:inline-flex}.join :where(.join-item){border-start-start-radius:var(--join-ss,0);border-start-end-radius:var(--join-se,0);border-end-end-radius:var(--join-ee,0);border-end-start-radius:var(--join-es,0)}.join :where(.join-item) *{--join-ss:var(--radius-field);--join-se:var(--radius-field);--join-es:var(--radius-field);--join-ee:var(--radius-field)}.join>.join-item:where(:first-child),.join :first-child:not(:last-child) :where(.join-item){--join-ss:var(--radius-field);--join-se:0;--join-es:var(--radius-field);--join-ee:0}.join>.join-item:where(:last-child),.join :last-child:not(:first-child) :where(.join-item){--join-ss:0;--join-se:var(--radius-field);--join-es:0;--join-ee:var(--radius-field)}.join>.join-item:where(:only-child),.join :only-child :where(.join-item){--join-ss:var(--radius-field);--join-se:var(--radius-field);--join-es:var(--radius-field);--join-ee:var(--radius-field)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.modal-bottom{place-items:end}.modal-bottom :where(.modal-box){--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:0;--modal-br:0;width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 100%;scale:1}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.h-8{height:calc(var(--spacing)*8)}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing)*80)}.loading-md{width:calc(var(--size-selector,.25rem)*6)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-32{width:calc(var(--spacing)*32)}.w-64{width:calc(var(--spacing)*64)}.w-\\[6rem\\]{width:6rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.max-w-\\(--breakpoint-lg\\){max-width:var(--breakpoint-lg)}.min-w-24{min-width:calc(var(--spacing)*24)}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-\\[0\\.05rem\\]{min-width:.05rem}.min-w-\\[7\\.5rem\\]{min-width:7.5rem}.min-w-\\[180px\\]{min-width:180px}.flex-1{flex:1}.grow{flex-grow:1}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300);will-change:background-position;background-image:linear-gradient(105deg,#0000 0% 40%,var(--color-base-100)50%,#0000 60% 100%);background-position-x:-50%;background-repeat:no-repeat;background-size:200%;animation:1.8s ease-in-out infinite skeleton}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.link{cursor:pointer;text-decoration-line:underline}.link:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.link:focus{outline-offset:2px;outline:2px solid #0000}}.link:focus-visible{outline-offset:2px;outline:2px solid}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-inside{list-style-position:inside}.list-outside{list-style-position:outside}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-4{gap:calc(var(--spacing)*4)}.gap-y-1{row-gap:calc(var(--spacing)*1)}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-tr-md{border-top-right-radius:var(--radius-md)}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.alert-error{border-color:var(--color-error);color:var(--color-error-content);--alert-color:var(--color-error)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-500{border-color:var(--color-gray-500)}.border-slate-500{border-color:var(--color-slate-500)}.bg-blue-300{background-color:var(--color-blue-300)}.bg-red-200{background-color:var(--color-red-200)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-1{padding:calc(var(--spacing)*1)}.p-1\\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-16{padding-block:calc(var(--spacing)*16)}.pr-14{padding-right:calc(var(--spacing)*14)}.text-center{text-align:center}.text-justify{text-align:justify}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.select-xs{--size:calc(var(--size-field,.25rem)*6);font-size:.6875rem}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.text-nowrap{text-wrap:nowrap}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.text-\\[\\#606060\\]{color:#606060}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-neutral-500{color:var(--color-neutral-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible):not(:disabled,[disabled],.btn-disabled){--btn-fg:currentColor;outline-color:currentColor}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.btn-outline:not(.btn-active,:hover,:active:focus,:focus-visible,:disabled,[disabled],.btn-disabled,:checked){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem)*8)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem)*6)}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.mdi--chevron-left{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6z'/%3E%3C/svg%3E")}.mdi--chevron-left-first{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6l6 6zM6 6h2v12H6z'/%3E%3C/svg%3E")}.mdi--chevron-right{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6z'/%3E%3C/svg%3E")}.mdi--chevron-right-last{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6l-6-6zM16 6h2v12h-2z'/%3E%3C/svg%3E")}.mdi--fullscreen{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5 5h5v2H7v3H5zm9 0h5v5h-2V7h-3zm3 9h2v5h-5v-2h3zm-7 3v2H5v-5h2v3z'/%3E%3C/svg%3E")}.mdi--fullscreen-exit{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14 14h5v2h-3v3h-2zm-9 0h5v5H8v-3H5zm3-9h2v5H5V8h3zm11 3v2h-5V5h2v3z'/%3E%3C/svg%3E")}.mdi--reload{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M2 12a9 9 0 0 0 9 9c2.39 0 4.68-.94 6.4-2.6l-1.5-1.5A6.7 6.7 0 0 1 11 19c-6.24 0-9.36-7.54-4.95-11.95S18 5.77 18 12h-3l4 4h.1l3.9-4h-3a9 9 0 0 0-18 0'/%3E%3C/svg%3E")}@media (hover:hover){.peer-hover\\:visible:is(:where(.peer):hover~*){visibility:visible}.hover\\:scale-90:hover{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\\:font-bold:hover{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.hover\\:text-blue-700:hover{color:var(--color-blue-700)}.hover\\:text-blue-800:hover{color:var(--color-blue-800)}.hover\\:text-gray-400:hover{color:var(--color-gray-400)}.hover\\:text-gray-700:hover{color:var(--color-gray-700)}}@media (width>=40rem){.sm\\:modal-middle{place-items:center}.sm\\:modal-middle :where(.modal-box){--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:91.6667%;max-width:32rem;height:auto;max-height:calc(100vh - 5em);translate:0 2%;scale:98%}.sm\\:max-w-5xl{max-width:var(--container-5xl)}.sm\\:flex-row{flex-direction:row}.sm\\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}@container (width>=2rem){.\\@\\[2rem\\]\\:visible{visibility:visible}}@container (width>=6rem){.\\@\\[6rem\\]\\:visible{visibility:visible}}@container (width>=14rem){.\\@4xs\\:flex-row{flex-direction:row}.\\@4xs\\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.\\@4xs\\:rounded-tr-none{border-top-right-radius:0}.\\@4xs\\:rounded-bl-md{border-bottom-left-radius:var(--radius-md)}}@container (width>=28rem){.\\@md\\:flex-row{flex-direction:row}.\\@md\\:rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.\\@md\\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.\\@md\\:rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.\\@md\\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes progress{50%{background-position-x:-115%}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes dropdown{0%{opacity:0}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
2467
+ const tailwindStyle = `/*! tailwindcss v4.0.17 | MIT License | https://tailwindcss.com */
2468
+ @layer theme{:root,:host{--color-red-200:oklch(.885 .062 18.334);--color-red-600:oklch(.577 .245 27.325);--color-red-700:oklch(.505 .213 27.518);--color-blue-300:oklch(.809 .105 251.813);--color-blue-600:oklch(.546 .245 262.881);--color-blue-700:oklch(.488 .243 264.376);--color-blue-800:oklch(.424 .199 265.638);--color-gray-100:oklch(.967 .003 264.542);--color-gray-200:oklch(.928 .006 264.531);--color-gray-300:oklch(.872 .01 258.338);--color-gray-400:oklch(.707 .022 261.325);--color-gray-500:oklch(.551 .027 264.364);--color-gray-600:oklch(.446 .03 256.802);--color-gray-700:oklch(.373 .034 259.733);--color-neutral-500:oklch(.556 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--breakpoint-lg:64rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-feature-settings:initial;font-variation-settings:initial;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:initial;font-variation-settings:initial;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:color-mix(in oklab,currentColor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentColor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@property --radialprogress{syntax: "<percentage>"; inherits: true; initial-value: 0%;}:root{scrollbar-color:color-mix(in oklch,currentColor 35%,#0000)#0000}:root:has(.modal-open,.modal[open],.modal:target,.modal-toggle:checked,.drawer:not([class*=drawer-open])>.drawer-toggle:checked){overflow:hidden}:root,[data-theme]{background-color:var(--root-bg,var(--color-base-100));color:var(--color-base-content)}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E")}.chat{--mask-chat:url("data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e")}:where(:root:has(.modal-open,.modal[open],.modal:target,.modal-toggle:checked,.drawer:not(.drawer-open)>.drawer-toggle:checked)){scrollbar-gutter:stable;background-image:linear-gradient(var(--color-base-100),var(--color-base-100));--root-bg:color-mix(in srgb,var(--color-base-100),oklch(0% 0 0) 40%)}}@layer components;@layer utilities{.diff{webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;direction:ltr;grid-template-columns:auto 1fr;width:100%;display:grid;position:relative;overflow:hidden;container-type:inline-size}.diff:focus-visible,.diff:has(.diff-item-1:focus),.diff:focus-visible{outline-style:var(--tw-outline-style);outline-offset:1px;outline-width:2px;outline-color:var(--color-base-content)}.diff:focus-visible .diff-resizer{min-width:90cqi;max-width:90cqi}.diff:has(.diff-item-2:focus-visible){outline-style:var(--tw-outline-style);outline-offset:1px;outline-width:2px}.diff:has(.diff-item-2:focus-visible) .diff-resizer{min-width:10cqi;max-width:10cqi}@supports (-webkit-overflow-scrolling:touch) and (overflow:-webkit-paged-x){.diff:focus .diff-resizer{min-width:10cqi;max-width:10cqi}.diff:has(.diff-item-1:focus) .diff-resizer{min-width:90cqi;max-width:90cqi}}.\\@container{container-type:inline-size}.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:transform .3s ease-out,visibility .3s allow-discrete,background-color .3s ease-out,opacity .1s ease-out;overscroll-behavior:contain;z-index:999;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:hidden}.modal::backdrop{display:none}.modal.modal-open,.modal[open],.modal:target{pointer-events:auto;visibility:visible;opacity:1;background-color:oklch(0% 0 0/.4);transition:transform .3s ease-out,background-color .3s ease-out,opacity .1s ease-out}:is(.modal.modal-open,.modal[open],.modal:target) .modal-box{opacity:1;translate:0;scale:1}@starting-style{.modal.modal-open,.modal[open],.modal:target{visibility:hidden;opacity:0}}.tooltip{--tt-bg:var(--color-neutral);--tt-off:calc(100% + .5rem);--tt-tail:calc(100% + 1px + .25rem);display:inline-block;position:relative}.tooltip>:where(.tooltip-content),.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:1;--tw-content:attr(data-tip);content:var(--tw-content);width:-moz-max-content;width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25em;transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms;display:block;position:absolute}:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible))>.tooltip-content,:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible))[data-tip]:before,:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible)):after{opacity:1;--tt-pos:0rem;transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translateX(-50%)translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off)50%}.tooltip:after{transform:translateX(-50%)translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail)50%}.tab{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;--tab-p:1rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));flex-wrap:wrap;order:var(--tab-order);height:calc(var(--size-field,.25rem)*10);border-color:#0000;justify-content:center;align-items:center;padding-inline-start:var(--tab-p);padding-inline-end:var(--tab-p);font-size:.875rem;display:inline-flex;position:relative}@media (hover:hover){.tab:hover{color:var(--color-base-content)}}.tab:is(input[type=radio]){min-width:-moz-fit-content;min-width:fit-content}.tab:is(input[type=radio]):after{content:attr(aria-label)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true]))+.tab-content{height:100%;display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true]){color:color-mix(in oklab,var(--color-base-content)50%,transparent)}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:-moz-fit-content;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;-moz-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);--tw-outline-style:none;outline-style:none;box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);outline-style:none}@media (forced-colors:active){:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active){outline-offset:2px;outline:2px solid #0000}}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth)*3px)-2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.dropdown{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(summary):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(summary):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover],.dropdown .dropdown-content{z-index:999;transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:95%}}:is(.dropdown.dropdown-open,.dropdown:not(.dropdown-hover):focus,.dropdown:focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown.dropdown-open,.dropdown:not(.dropdown-hover):focus,.dropdown:focus-within) .dropdown-content{opacity:1}.dropdown.dropdown-hover:hover .dropdown-content{opacity:1;scale:100%}.dropdown:is(details) summary::-webkit-details-marker{display:none}:is(.dropdown.dropdown-open,.dropdown:focus,.dropdown:focus-within) .dropdown-content{scale:100%}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}.dropdown[popover]:not(.dropdown-open,:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0/calc(var(--depth)*.15));box-shadow:0 .5px 0 .5px oklch(100% 0 0/calc(var(--depth)*6%))inset,var(--btn-shadow);--size:calc(var(--size-field,.25rem)*10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:color-mix(in oklab,var(--btn-bg),#000 calc(var(--depth)*5%));--btn-shadow:0 3px 2px -2px color-mix(in oklab,var(--btn-bg)calc(var(--depth)*30%),#0000),0 4px 3px -2px color-mix(in oklab,var(--btn-bg)calc(var(--depth)*30%),#0000);--btn-noise:var(--fx-noise);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}:where(.btn){width:unset}.prose .btn{text-decoration-line:none}@media (hover:hover){.btn:hover{--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%)}}.btn:focus-visible{outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 5%);--btn-border:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%);--btn-shadow:0 0 0 0 oklch(0% 0 0/0),0 0 0 0 oklch(0% 0 0/0);translate:0 .5px}.btn:is(:disabled,[disabled],.btn-disabled){pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:color-mix(in oklch,var(--color-base-content)20%,#0000)}.btn:is(:disabled,[disabled],.btn-disabled):not(.btn-link,.btn-ghost){background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);box-shadow:none}@media (hover:hover){.btn:is(:disabled,[disabled],.btn-disabled):hover{pointer-events:none;background-color:color-mix(in oklab,var(--color-neutral)20%,transparent);--btn-border:#0000;--btn-fg:color-mix(in oklch,var(--color-base-content)20%,#0000)}}.btn:is(input[type=checkbox],input[type=radio]){-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn:is(input[type=checkbox],input[type=radio]):after{content:attr(aria-label)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem)*6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.invisible{visibility:hidden}.visible{visibility:visible}.list{flex-direction:column;font-size:.875rem;display:flex}.list :where(.list-row){--list-grid-cols:minmax(0,auto)1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}.list :where(.list-row):has(.list-col-grow:first-child){--list-grid-cols:1fr}.list :where(.list-row):has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row) :not(.list-col-wrap){grid-row-start:1}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border)solid;inset-inline:var(--radius-box);border-color:color-mix(in oklab,var(--color-base-content)5%,transparent);position:absolute;bottom:0}.toggle{border:var(--border)solid currentColor;color:var(--input-color);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p),var(--radius-selector-max)) + min(var(--border),var(--radius-selector-max)));padding:var(--toggle-p);box-shadow:0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000)inset;--input-color:color-mix(in oklab,var(--color-base-content)50%,#0000);--toggle-p:.1875rem;--size:calc(var(--size-selector,.25rem)*6);width:calc((var(--size)*2) - (var(--border) + var(--toggle-p))*2);height:var(--size);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;transition:color .3s,grid-template-columns .2s;display:inline-grid;position:relative}.toggle>*{z-index:1;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:none}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:none}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);height:100%;box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000);background-color:currentColor;background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px*-1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border)solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border)solid #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);border-color:var(--input-color);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1))inset;--size:calc(var(--size-field,.25rem)*10);--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;font-size:.875rem;display:inline-flex;position:relative}.input:where(input){display:inline-flex}.input :where(input){-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.input :where(input):focus,.input :where(input):focus-within){outline-offset:2px;outline:2px solid #0000}}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000);outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}.input:has(>input[disabled]),.input:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:color-mix(in oklab,var(--color-base-content)40%,transparent);box-shadow:none}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]))::-moz-placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.indicator{width:-moz-max-content;width:max-content;display:inline-flex;position:relative}.indicator :where(.indicator-item){z-index:1;white-space:nowrap;top:var(--inidicator-t,0);bottom:var(--inidicator-b,auto);left:var(--inidicator-s,auto);right:var(--inidicator-e,0);translate:var(--inidicator-x,50%)var(--indicator-y,-50%);position:absolute}.table{border-radius:var(--radius-box);text-align:left;width:100%;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:color-mix(in oklab,var(--color-base-content)60%,transparent);font-size:.875rem;font-weight:600}.table :where(tfoot){border-top:var(--border)solid color-mix(in oklch,var(--color-base-content)5%,#0000)}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr,tbody tr:not(:last-child)){border-bottom:var(--border)solid color-mix(in oklch,var(--color-base-content)5%,#0000)}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);--tw-content:"";content:var(--tw-content);border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{content:counter(step);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{content:none}.steps .step[data-content]:after{content:attr(data-content)}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.range{-webkit-appearance:none;-moz-appearance:none;appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem)*6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:color-mix(in oklab,currentColor 10%,#0000);cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size)*.5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p)solid;-webkit-appearance:none;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000),0 0 0 2rem var(--range-thumb)inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2))0 0 calc(100rem*var(--range-fill));background-color:currentColor;position:relative;top:50%;transform:translateY(-50%)}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size)*.5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p)solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000),0 0 0 2rem var(--range-thumb)inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2))0 0 calc(100rem*var(--range-fill));background-color:currentColor;position:relative;top:50%}.range:disabled{cursor:not-allowed;opacity:.3}.select{border:var(--border)solid #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);text-overflow:ellipsis;box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1))inset;border-color:var(--input-color);--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000);--size:calc(var(--size-field,.25rem)*10);background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:1rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}.select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:inherit;border-radius:inherit;border-style:none;width:calc(100% + 2.75rem);height:calc(100% - 2px);margin-inline:-1rem -1.75rem;padding-inline:1rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select select:focus,.select select:focus-within){outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000);outline:2px solid var(--input-color);outline-offset:2px}.select:has(>select[disabled]),.select:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:color-mix(in oklab,var(--color-base-content)40%,transparent)}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]))::-moz-placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}.checkbox{border:var(--border)solid var(--input-color,color-mix(in oklab,var(--color-base-content)20%,#0000));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 0 #0000 inset,0 0 #0000;--size:calc(var(--size-selector,.25rem)*6);width:var(--size);height:var(--size);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0px 3px 0 0px oklch(100% 0 0/calc(var(--depth)*.1))inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px oklch(0% 0 0/calc(var(--depth)*.1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media (forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:none}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:none}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:none}.checkbox:disabled{cursor:not-allowed;opacity:.2}.radio{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;vertical-align:middle;border:var(--border)solid var(--input-color,color-mix(in srgb,currentColor 20%,#0000));box-shadow:0 1px oklch(0% 0 0/calc(var(--depth)*.1))inset;--size:calc(var(--size-selector,.25rem)*6);width:var(--size);height:var(--size);color:var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;position:relative}.radio:before{--tw-content:"";content:var(--tw-content);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor;animation:.2s ease-out radio}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px oklch(0% 0 0/calc(var(--depth)*.1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px*-1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.radio:disabled{cursor:not-allowed;opacity:.2}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-full{top:100%}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-10{right:calc(var(--spacing)*10)}.right-full{right:100%}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-1\\/2{left:50%}.left-full{left:100%}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.z-10{z-index:10}.z-1001{z-index:1001}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:95%;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.stat-value{white-space:nowrap;grid-column-start:1;font-size:2rem;font-weight:800}.stat-desc,.stat-title{white-space:nowrap;color:color-mix(in oklab,var(--color-base-content)60%,transparent);grid-column-start:1;font-size:.75rem}.float-right{float:right}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);flex-direction:row;align-self:stretch;align-items:center;display:flex}.divider:before,.divider:after{content:"";background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.m-2{margin:calc(var(--spacing)*2)}.m-4{margin:calc(var(--spacing)*4)}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{content:"×"}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-auto{margin-inline:auto}.input-sm{--size:calc(var(--size-field,.25rem)*8);font-size:.75rem}.input-sm[type=number]::-webkit-inner-spin-button{margin-block:-.5rem;margin-inline-end:-.75rem}.input-xs{--size:calc(var(--size-field,.25rem)*6);font-size:.6875rem}.input-xs[type=number]::-webkit-inner-spin-button{margin-block:-.25rem;margin-inline-end:-.75rem}.my-1{margin-block:calc(var(--spacing)*1)}.my-4{margin-block:calc(var(--spacing)*4)}.label{white-space:nowrap;color:color-mix(in oklab,currentColor 60%,transparent);align-items:center;gap:.375rem;display:inline-flex}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border)solid color-mix(in oklab,currentColor 10%,#0000);margin-inline:-.75rem .75rem}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border)solid color-mix(in oklab,currentColor 10%,#0000);margin-inline:.75rem -.75rem}.join-item:where(:not(:first-child)){margin-block-start:0;margin-inline-start:calc(var(--border,1px)*-1)}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0{margin-bottom:calc(var(--spacing)*0)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-2\\.5{margin-left:calc(var(--spacing)*2.5)}.ml-3{margin-left:calc(var(--spacing)*3)}.status{aspect-ratio:1;border-radius:var(--radius-selector);background-color:color-mix(in oklab,var(--color-base-content)20%,transparent);vertical-align:middle;width:.5rem;height:.5rem;color:color-mix(in oklab,var(--color-black)30%,transparent);background-position:50%;background-repeat:no-repeat;background-image:radial-gradient(circle at 35% 30%,oklch(1 0 0/calc(var(--depth)*.5)),#0000);box-shadow:0 2px 3px -1px color-mix(in oklab,currentColor calc(var(--depth)*100%),#0000);display:inline-block}.iconify{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.tabs{--tabs-height:auto;--tabs-direction:row;height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.stat{grid-template-columns:repeat(1,1fr);-moz-column-gap:1rem;column-gap:1rem;width:100%;padding-block:1rem;padding-inline:1.5rem;display:inline-grid}.stat:not(:last-child){border-inline-end:var(--border)dashed color-mix(in oklab,currentColor 10%,#0000);border-block-end:none}.alert{border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;border:var(--border)solid var(--color-base-200);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0/calc(var(--depth)*.08))inset,0 1px color-mix(in oklab,color-mix(in oklab,#000 20%,var(--alert-color,var(--color-base-200)))calc(var(--depth)*20%),#0000),0 4px 3px -2px oklch(0% 0 0/calc(var(--depth)*.08));grid-template-columns:auto;grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}.alert:has(:nth-child(2)){grid-template-columns:auto minmax(auto,1fr)}.alert.alert-outline{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none}.alert.alert-dash{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none;border-style:dashed}.alert.alert-soft{color:var(--alert-color,var(--color-base-content));background:color-mix(in oklab,var(--alert-color,var(--color-base-content))8%,var(--color-base-100));border-color:color-mix(in oklab,var(--alert-color,var(--color-base-content))10%,var(--color-base-100));box-shadow:none;background-image:none}.join{--join-ss:0;--join-se:0;--join-es:0;--join-ee:0;align-items:stretch;display:inline-flex}.join :where(.join-item){border-start-start-radius:var(--join-ss,0);border-start-end-radius:var(--join-se,0);border-end-end-radius:var(--join-ee,0);border-end-start-radius:var(--join-es,0)}.join :where(.join-item) *{--join-ss:var(--radius-field);--join-se:var(--radius-field);--join-es:var(--radius-field);--join-ee:var(--radius-field)}.join>.join-item:where(:first-child),.join :first-child:not(:last-child) :where(.join-item){--join-ss:var(--radius-field);--join-se:0;--join-es:var(--radius-field);--join-ee:0}.join>.join-item:where(:last-child),.join :last-child:not(:first-child) :where(.join-item){--join-ss:0;--join-se:var(--radius-field);--join-es:0;--join-ee:var(--radius-field)}.join>.join-item:where(:only-child),.join :only-child :where(.join-item){--join-ss:var(--radius-field);--join-se:var(--radius-field);--join-es:var(--radius-field);--join-ee:var(--radius-field)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.modal-bottom{place-items:end}.modal-bottom :where(.modal-box){--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:0;--modal-br:0;width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 100%;scale:1}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.h-8{height:calc(var(--spacing)*8)}.h-\\[calc\\(var\\(--size\\)\\*0\\.7\\)\\]{height:calc(var(--size)*.7)}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing)*80)}.loading-md{width:calc(var(--size-selector,.25rem)*6)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-64{width:calc(var(--spacing)*64)}.w-\\[6rem\\]{width:6rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.max-w-\\(--breakpoint-lg\\){max-width:var(--breakpoint-lg)}.min-w-8{min-width:calc(var(--spacing)*8)}.min-w-24{min-width:calc(var(--spacing)*24)}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-\\[0\\.05rem\\]{min-width:.05rem}.min-w-\\[7\\.5rem\\]{min-width:7.5rem}.min-w-\\[180px\\]{min-width:180px}.flex-1{flex:1}.grow{flex-grow:1}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300);will-change:background-position;background-image:linear-gradient(105deg,#0000 0% 40%,var(--color-base-100)50%,#0000 60% 100%);background-position-x:-50%;background-repeat:no-repeat;background-size:200%;animation:1.8s ease-in-out infinite skeleton}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.link{cursor:pointer;text-decoration-line:underline}.link:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.link:focus{outline-offset:2px;outline:2px solid #0000}}.link:focus-visible{outline-offset:2px;outline:2px solid}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-inside{list-style-position:inside}.list-outside{list-style-position:outside}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-x-1{-moz-column-gap:calc(var(--spacing)*1);column-gap:calc(var(--spacing)*1)}.gap-x-6{-moz-column-gap:calc(var(--spacing)*6);column-gap:calc(var(--spacing)*6)}.gap-y-1{row-gap:calc(var(--spacing)*1)}.gap-y-2{row-gap:calc(var(--spacing)*2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-tr-md{border-top-right-radius:var(--radius-md)}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.select-ghost{box-shadow:none;background-color:#0000;border-color:#0000;transition:background-color .2s}.select-ghost:focus,.select-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.input-ghost{box-shadow:none;background-color:#0000;border-color:#0000}.input-ghost:focus,.input-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.alert-error{border-color:var(--color-error);color:var(--color-error-content);--alert-color:var(--color-error)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-500{border-color:var(--color-gray-500)}.bg-blue-300{background-color:var(--color-blue-300)}.bg-red-200{background-color:var(--color-red-200)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-16{padding-block:calc(var(--spacing)*16)}.pr-14{padding-right:calc(var(--spacing)*14)}.text-center{text-align:center}.text-justify{text-align:justify}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.select-sm{--size:calc(var(--size-field,.25rem)*8);font-size:.75rem}.select-xs{--size:calc(var(--size-field,.25rem)*6);font-size:.6875rem}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.text-nowrap{text-wrap:nowrap}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.text-\\[\\#606060\\]{color:#606060}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-neutral-500{color:var(--color-neutral-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible):not(:disabled,[disabled],.btn-disabled){--btn-fg:currentColor;outline-color:currentColor}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.btn-outline:not(.btn-active,:hover,:active:focus,:focus-visible,:disabled,[disabled],.btn-disabled,:checked){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem)*8)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem)*6)}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.mdi--chevron-left{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6z'/%3E%3C/svg%3E")}.mdi--chevron-left-first{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6l6 6zM6 6h2v12H6z'/%3E%3C/svg%3E")}.mdi--chevron-right{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6z'/%3E%3C/svg%3E")}.mdi--chevron-right-last{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6l-6-6zM16 6h2v12h-2z'/%3E%3C/svg%3E")}.mdi--fullscreen{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5 5h5v2H7v3H5zm9 0h5v5h-2V7h-3zm3 9h2v5h-5v-2h3zm-7 3v2H5v-5h2v3z'/%3E%3C/svg%3E")}.mdi--fullscreen-exit{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14 14h5v2h-3v3h-2zm-9 0h5v5H8v-3H5zm3-9h2v5H5V8h3zm11 3v2h-5V5h2v3z'/%3E%3C/svg%3E")}.mdi--reload{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M2 12a9 9 0 0 0 9 9c2.39 0 4.68-.94 6.4-2.6l-1.5-1.5A6.7 6.7 0 0 1 11 19c-6.24 0-9.36-7.54-4.95-11.95S18 5.77 18 12h-3l4 4h.1l3.9-4h-3a9 9 0 0 0-18 0'/%3E%3C/svg%3E")}@media (hover:hover){.peer-hover\\:visible:is(:where(.peer):hover~*){visibility:visible}.hover\\:scale-90:hover{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:font-bold:hover{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.hover\\:text-blue-700:hover{color:var(--color-blue-700)}.hover\\:text-blue-800:hover{color:var(--color-blue-800)}.hover\\:text-gray-400:hover{color:var(--color-gray-400)}.hover\\:text-gray-700:hover{color:var(--color-gray-700)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (width>=40rem){.sm\\:modal-middle{place-items:center}.sm\\:modal-middle :where(.modal-box){--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:91.6667%;max-width:32rem;height:auto;max-height:calc(100vh - 5em);translate:0 2%;scale:98%}.sm\\:max-w-5xl{max-width:var(--container-5xl)}.sm\\:flex-row{flex-direction:row}.sm\\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}@container (width>=2rem){.\\@\\[2rem\\]\\:visible{visibility:visible}}@container (width>=6rem){.\\@\\[6rem\\]\\:visible{visibility:visible}}@container (width>=14rem){.\\@4xs\\:flex-row{flex-direction:row}.\\@4xs\\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.\\@4xs\\:rounded-tr-none{border-top-right-radius:0}.\\@4xs\\:rounded-bl-md{border-bottom-left-radius:var(--radius-md)}}@container (width>=28rem){.\\@md\\:flex-row{flex-direction:row}.\\@md\\:rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.\\@md\\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.\\@md\\:rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.\\@md\\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}}@container (width>=36rem){.\\@xl\\:block{display:block}.\\@xl\\:justify-end{justify-content:flex-end}}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes progress{50%{background-position-x:-115%}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes dropdown{0%{opacity:0}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
2457
2469
  `;
2458
2470
  var __defProp$f = Object.defineProperty;
2459
2471
  var __decorateClass$f = (decorators, target, key, kind) => {
@@ -3006,7 +3018,14 @@ const Toolbar$6 = ({
3006
3018
  overallVariantCount
3007
3019
  }) => {
3008
3020
  return /* @__PURE__ */ u$1(Fragment, { children: [
3009
- /* @__PURE__ */ u$1(SegmentSelector, { displayedSegments, setDisplayedSegments }),
3021
+ /* @__PURE__ */ u$1(
3022
+ SegmentSelector,
3023
+ {
3024
+ displayedSegments,
3025
+ setDisplayedSegments,
3026
+ sequenceType: originalComponentProps.sequenceType
3027
+ }
3028
+ ),
3010
3029
  activeTab === "Table" && /* @__PURE__ */ u$1(
3011
3030
  MutationTypeSelector,
3012
3031
  {
@@ -6422,7 +6441,10 @@ function getFilteredMutationOverTimeData$1({
6422
6441
  displayedSegments,
6423
6442
  displayedMutationTypes,
6424
6443
  proportionInterval,
6425
- displayMutations
6444
+ displayMutations,
6445
+ mutationFilterValue,
6446
+ sequenceType,
6447
+ annotationProvider
6426
6448
  }) {
6427
6449
  const filteredData = new Map2dView(data);
6428
6450
  const displayMutationsSet = displayMutations === void 0 ? null : new Set(displayMutations.map((it) => it.toUpperCase()));
@@ -6436,6 +6458,9 @@ function getFilteredMutationOverTimeData$1({
6436
6458
  if (displayMutationsSet !== null && !displayMutationsSet.has(entry.mutation.code)) {
6437
6459
  return true;
6438
6460
  }
6461
+ if (applySearchFilter(entry.mutation, sequenceType, mutationFilterValue, annotationProvider)) {
6462
+ return true;
6463
+ }
6439
6464
  return displayedMutationTypes.some(
6440
6465
  (mutationType) => mutationType.type === entry.mutation.type && !mutationType.checked
6441
6466
  );
@@ -6445,6 +6470,21 @@ function getFilteredMutationOverTimeData$1({
6445
6470
  });
6446
6471
  return filteredData;
6447
6472
  }
6473
+ function applySearchFilter(mutation, sequenceType, filterValue, annotationProvider) {
6474
+ if (filterValue === "") {
6475
+ return false;
6476
+ }
6477
+ if (mutation.code.includes(filterValue)) {
6478
+ return false;
6479
+ }
6480
+ const mutationAnnotations = annotationProvider(mutation, sequenceType);
6481
+ if (mutationAnnotations === void 0 || mutationAnnotations.length === 0) {
6482
+ return true;
6483
+ }
6484
+ return !mutationAnnotations.some(
6485
+ (annotation) => annotation.description.includes(filterValue) || annotation.name.includes(filterValue) || annotation.symbol.includes(filterValue)
6486
+ );
6487
+ }
6448
6488
  const MutationsOverTimeGridTooltip = ({
6449
6489
  mutation,
6450
6490
  date,
@@ -6612,51 +6652,75 @@ const Tooltip = ({ children, content, position = "bottom" }) => {
6612
6652
  )
6613
6653
  ] });
6614
6654
  };
6655
+ const pageSizeContext = createContext$1({
6656
+ pageSize: -1,
6657
+ setPageSize: () => {
6658
+ throw new Error("pageSizeContext not initialized");
6659
+ }
6660
+ });
6661
+ function usePageSizeContext() {
6662
+ return x$1(pageSizeContext);
6663
+ }
6664
+ const PageSizeContextProvider = ({ children, pageSizes }) => {
6665
+ const [pageSize, setPageSize] = d(typeof pageSizes === "number" ? pageSizes : pageSizes.at(0) ?? 10);
6666
+ return /* @__PURE__ */ u$1(pageSizeContext.Provider, { value: { pageSize, setPageSize }, children });
6667
+ };
6615
6668
  const pageSizesSchema = z$2.union([z$2.array(z$2.number()), z$2.number()]);
6616
6669
  function Pagination({
6617
6670
  table,
6618
6671
  pageSizes
6619
6672
  }) {
6620
- return /* @__PURE__ */ u$1("div", { className: "flex items-center gap-4 justify-end flex-wrap", children: [
6673
+ return /* @__PURE__ */ u$1("div", { className: "@container", children: /* @__PURE__ */ u$1("div", { className: "flex items-center gap-x-6 gap-y-2 flex-wrap @xl:justify-end justify-center", children: [
6621
6674
  /* @__PURE__ */ u$1(PageSizeSelector, { table, pageSizes }),
6622
6675
  /* @__PURE__ */ u$1(PageIndicator, { table }),
6623
- /* @__PURE__ */ u$1(GotoPageSelector, { table }),
6676
+ /* @__PURE__ */ u$1("div", { className: "@xl:block hidden", children: /* @__PURE__ */ u$1(GotoPageSelector, { table }) }),
6624
6677
  /* @__PURE__ */ u$1(SelectPageButtons, { table })
6625
- ] });
6678
+ ] }) });
6626
6679
  }
6627
6680
  function PageIndicator({ table }) {
6628
6681
  if (table.getRowModel().rows.length <= 1) {
6629
6682
  return null;
6630
6683
  }
6631
- return /* @__PURE__ */ u$1("span", { className: "flex items-center gap-1", children: [
6632
- /* @__PURE__ */ u$1("div", { children: "Page" }),
6633
- /* @__PURE__ */ u$1("strong", { children: [
6634
- table.getState().pagination.pageIndex + 1,
6635
- " of ",
6636
- table.getPageCount().toLocaleString()
6637
- ] })
6684
+ const minRow = table.getState().pagination.pageIndex * table.getState().pagination.pageSize + 1;
6685
+ const maxRow = minRow + table.getRowModel().rows.length - 1;
6686
+ const numRows = table.getCoreRowModel().rows.length;
6687
+ return /* @__PURE__ */ u$1("span", { className: "text-sm", children: [
6688
+ minRow,
6689
+ " - ",
6690
+ maxRow,
6691
+ " of ",
6692
+ numRows
6638
6693
  ] });
6639
6694
  }
6695
+ const heightForSmallerLines = "h-[calc(var(--size)*0.7)]";
6640
6696
  function PageSizeSelector({
6641
6697
  table,
6642
6698
  pageSizes
6643
6699
  }) {
6700
+ const { pageSize, setPageSize } = usePageSizeContext();
6644
6701
  if (typeof pageSizes === "number" || pageSizes.length <= 1) {
6645
6702
  return null;
6646
6703
  }
6647
- return /* @__PURE__ */ u$1("label", { className: "flex items-center gap-2", children: [
6648
- /* @__PURE__ */ u$1("div", { className: "text-nowrap", children: "Rows per page:" }),
6704
+ return /* @__PURE__ */ u$1("label", { className: "flex items-center", children: [
6705
+ /* @__PURE__ */ u$1("div", { className: "text-nowrap text-sm", children: "Rows per page:" }),
6649
6706
  /* @__PURE__ */ u$1(
6650
6707
  "select",
6651
6708
  {
6652
- className: "select",
6653
- value: table.getState().pagination.pageSize,
6709
+ className: `select select-ghost select-sm ${heightForSmallerLines}`,
6710
+ value: pageSize,
6654
6711
  onChange: (e2) => {
6655
- var _a;
6656
- table.setPageSize(Number((_a = e2.currentTarget) == null ? void 0 : _a.value));
6712
+ var _a, _b;
6713
+ const pageSize2 = Number((_a = e2.currentTarget) == null ? void 0 : _a.value);
6714
+ if (Number.isNaN(pageSize2)) {
6715
+ throw new Error(
6716
+ `Invalid page size selected: The value ${(_b = e2.currentTarget) == null ? void 0 : _b.value} could not be parsed as a number.`
6717
+ );
6718
+ }
6719
+ setPageSize(pageSize2);
6720
+ table.setPageSize(pageSize2);
6657
6721
  },
6658
6722
  "aria-label": "Select number of rows per page",
6659
- children: pageSizes.map((pageSize) => /* @__PURE__ */ u$1("option", { value: pageSize, children: pageSize }, pageSize))
6723
+ children: pageSizes.map((pageSize2) => /* @__PURE__ */ u$1("option", { value: pageSize2, children: pageSize2 }, pageSize2))
6660
6724
  }
6661
6725
  )
6662
6726
  ] });
@@ -6665,8 +6729,8 @@ function GotoPageSelector({ table }) {
6665
6729
  if (table.getRowModel().rows.length === 0) {
6666
6730
  return null;
6667
6731
  }
6668
- return /* @__PURE__ */ u$1("label", { className: "flex items-center", children: [
6669
- "Go to page:",
6732
+ return /* @__PURE__ */ u$1("label", { className: "items-center flex", children: [
6733
+ /* @__PURE__ */ u$1("span", { className: "text-nowrap text-sm", children: "Go to page:" }),
6670
6734
  /* @__PURE__ */ u$1(
6671
6735
  "input",
6672
6736
  {
@@ -6676,9 +6740,9 @@ function GotoPageSelector({ table }) {
6676
6740
  defaultValue: table.getState().pagination.pageIndex + 1,
6677
6741
  onChange: (e2) => {
6678
6742
  const page = e2.currentTarget.value ? Number(e2.currentTarget.value) - 1 : 0;
6679
- table.setPageIndex(page);
6743
+ table.setPageIndex(Math.min(page, table.getPageCount() - 1));
6680
6744
  },
6681
- className: "input",
6745
+ className: `input input-ghost input-sm ${heightForSmallerLines}`,
6682
6746
  "aria-label": "Enter page number to go to"
6683
6747
  }
6684
6748
  )
@@ -6756,6 +6820,14 @@ function usePreactTable(options2) {
6756
6820
  (_a = options2.onStateChange) == null ? void 0 : _a.call(options2, updater);
6757
6821
  }
6758
6822
  }));
6823
+ const { pageSize } = usePageSizeContext();
6824
+ y(
6825
+ () => {
6826
+ tableRef.current.setPageSize(pageSize);
6827
+ },
6828
+ [pageSize]
6829
+ // eslint-disable-line react-hooks/exhaustive-deps -- only run this when the pageSize changes
6830
+ );
6759
6831
  return tableRef.current;
6760
6832
  }
6761
6833
  const MutationsOverTimeGrid = ({
@@ -6770,10 +6842,6 @@ const MutationsOverTimeGrid = ({
6770
6842
  return { mutation: allMutations[index], values: [...row] };
6771
6843
  });
6772
6844
  }, [data]);
6773
- const [pagination, setPagination] = d({
6774
- pageIndex: 0,
6775
- pageSize: typeof pageSizes === "number" ? pageSizes : pageSizes.at(0) ?? 10
6776
- });
6777
6845
  const columns = T$1(() => {
6778
6846
  const columnHelper = createColumnHelper();
6779
6847
  const dates = data.getSecondAxisKeys();
@@ -6815,15 +6883,17 @@ const MutationsOverTimeGrid = ({
6815
6883
  });
6816
6884
  return [mutationHeader, ...dateHeaders];
6817
6885
  }, [colorScale, data, sequenceType]);
6886
+ const { pageSize } = usePageSizeContext();
6818
6887
  const table = usePreactTable({
6819
6888
  data: tableData,
6820
6889
  columns,
6821
6890
  getCoreRowModel: getCoreRowModel(),
6822
6891
  getPaginationRowModel: getPaginationRowModel(),
6823
- debugTable: true,
6824
- onPaginationChange: setPagination,
6825
- state: {
6826
- pagination
6892
+ initialState: {
6893
+ pagination: {
6894
+ pageIndex: 0,
6895
+ pageSize
6896
+ }
6827
6897
  }
6828
6898
  });
6829
6899
  return /* @__PURE__ */ u$1("div", { className: "w-full", children: [
@@ -6865,7 +6935,7 @@ const ProportionCell = ({ value, mutation, date, tooltipPosition, colorScale })
6865
6935
  backgroundColor: getColorWithinScale(proportion, colorScale),
6866
6936
  color: getTextColorForScale(proportion, colorScale)
6867
6937
  },
6868
- className: `w-full h-full hover:font-bold text-xs group @container`,
6938
+ className: `w-full h-full hover:font-bold text-xs group @container text-nowrap`,
6869
6939
  children: value === null ? /* @__PURE__ */ u$1("span", { className: "invisible", children: "No data" }) : /* @__PURE__ */ u$1("span", { className: "invisible @[2rem]:visible", children: formatProportion(proportion ?? 0, 0) })
6870
6940
  }
6871
6941
  )
@@ -6878,6 +6948,40 @@ const ColorScaleSelectorDropdown = ({
6878
6948
  }) => {
6879
6949
  return /* @__PURE__ */ u$1("div", { className: "w-20 inline-flex", children: /* @__PURE__ */ u$1(Dropdown, { buttonTitle: `Color scale`, placement: "bottom-start", children: /* @__PURE__ */ u$1(ColorScaleSelector, { colorScale, setColorScale }) }) });
6880
6950
  };
6951
+ function DeleteIcon() {
6952
+ return /* @__PURE__ */ u$1(Fragment, { children: "×" });
6953
+ }
6954
+ function MutationsOverTimeTextFilter({ setFilterValue, value }) {
6955
+ const onInput = (newValue) => {
6956
+ setFilterValue(newValue);
6957
+ };
6958
+ const onDeleteClick = () => setFilterValue("");
6959
+ return /* @__PURE__ */ u$1("div", { className: "w-28 inline-flex", children: /* @__PURE__ */ u$1(Dropdown, { buttonTitle: value === "" ? `Filter mutations` : value, placement: "bottom-start", children: /* @__PURE__ */ u$1("div", { children: /* @__PURE__ */ u$1("label", { className: "flex gap-1 input input-xs", children: [
6960
+ /* @__PURE__ */ u$1(DebouncedInput, { placeholder: "Filter", onInput, value, type: "text" }),
6961
+ value !== void 0 && value !== "" && /* @__PURE__ */ u$1("button", { className: "cursor-pointer", onClick: onDeleteClick, children: /* @__PURE__ */ u$1(DeleteIcon, {}) })
6962
+ ] }) }) }) });
6963
+ }
6964
+ function DebouncedInput({
6965
+ value: initialValue,
6966
+ onInput,
6967
+ debounce: debounce2 = 500,
6968
+ ...props
6969
+ }) {
6970
+ const [value, setValue] = d(initialValue);
6971
+ y(() => {
6972
+ setValue(initialValue);
6973
+ }, [initialValue]);
6974
+ y(() => {
6975
+ const timeout = setTimeout(() => {
6976
+ onInput(value ?? "");
6977
+ }, debounce2);
6978
+ return () => clearTimeout(timeout);
6979
+ }, [value, debounce2, onInput]);
6980
+ const onChangeInput = q$1((event) => {
6981
+ setValue(event.currentTarget.value);
6982
+ }, []);
6983
+ return /* @__PURE__ */ u$1("input", { ...props, value, onInput: onChangeInput });
6984
+ }
6881
6985
  function useWebWorker(messageToWorker, WorkerConstructor) {
6882
6986
  const [data, setData] = d(void 0);
6883
6987
  const [error, setError] = d(void 0);
@@ -6980,6 +7084,8 @@ const MutationsOverTimeTabs$1 = ({
6980
7084
  originalComponentProps,
6981
7085
  overallMutationData
6982
7086
  }) => {
7087
+ const [mutationFilterValue, setMutationFilterValue] = d("");
7088
+ const annotationProvider = useMutationAnnotationsProvider();
6983
7089
  const [proportionInterval, setProportionInterval] = d(originalComponentProps.initialMeanProportionInterval);
6984
7090
  const [colorScale, setColorScale] = d({ min: 0, max: 1, color: "indigo" });
6985
7091
  const [displayedSegments, setDisplayedSegments] = useDisplayedSegments$1(originalComponentProps.sequenceType);
@@ -6987,7 +7093,6 @@ const MutationsOverTimeTabs$1 = ({
6987
7093
  { label: "Substitutions", checked: true, type: "substitution" },
6988
7094
  { label: "Deletions", checked: true, type: "deletion" }
6989
7095
  ]);
6990
- const displayMutations = originalComponentProps.displayMutations;
6991
7096
  const filteredData = T$1(() => {
6992
7097
  return getFilteredMutationOverTimeData$1({
6993
7098
  data: mutationOverTimeData,
@@ -6995,7 +7100,10 @@ const MutationsOverTimeTabs$1 = ({
6995
7100
  displayedSegments,
6996
7101
  displayedMutationTypes,
6997
7102
  proportionInterval,
6998
- displayMutations
7103
+ displayMutations: originalComponentProps.displayMutations,
7104
+ mutationFilterValue,
7105
+ sequenceType: originalComponentProps.sequenceType,
7106
+ annotationProvider
6999
7107
  });
7000
7108
  }, [
7001
7109
  mutationOverTimeData,
@@ -7003,7 +7111,10 @@ const MutationsOverTimeTabs$1 = ({
7003
7111
  displayedSegments,
7004
7112
  displayedMutationTypes,
7005
7113
  proportionInterval,
7006
- displayMutations
7114
+ originalComponentProps.displayMutations,
7115
+ originalComponentProps.sequenceType,
7116
+ mutationFilterValue,
7117
+ annotationProvider
7007
7118
  ]);
7008
7119
  const getTab = (view) => {
7009
7120
  if (filteredData === void 0) {
@@ -7042,10 +7153,12 @@ const MutationsOverTimeTabs$1 = ({
7042
7153
  filteredData,
7043
7154
  colorScale,
7044
7155
  setColorScale,
7045
- originalComponentProps
7156
+ originalComponentProps,
7157
+ setFilterValue: setMutationFilterValue,
7158
+ mutationFilterValue
7046
7159
  }
7047
7160
  );
7048
- return /* @__PURE__ */ u$1(Tabs, { tabs, toolbar });
7161
+ return /* @__PURE__ */ u$1(PageSizeContextProvider, { pageSizes: originalComponentProps.pageSizes, children: /* @__PURE__ */ u$1(Tabs, { tabs, toolbar }) });
7049
7162
  };
7050
7163
  const Toolbar$2 = ({
7051
7164
  activeTab,
@@ -7058,11 +7171,21 @@ const Toolbar$2 = ({
7058
7171
  filteredData,
7059
7172
  colorScale,
7060
7173
  setColorScale,
7061
- originalComponentProps
7174
+ originalComponentProps,
7175
+ setFilterValue,
7176
+ mutationFilterValue
7062
7177
  }) => {
7063
7178
  return /* @__PURE__ */ u$1(Fragment, { children: [
7179
+ /* @__PURE__ */ u$1(MutationsOverTimeTextFilter, { setFilterValue, value: mutationFilterValue }),
7064
7180
  activeTab === "Grid" && /* @__PURE__ */ u$1(ColorScaleSelectorDropdown, { colorScale, setColorScale }),
7065
- /* @__PURE__ */ u$1(SegmentSelector, { displayedSegments, setDisplayedSegments }),
7181
+ /* @__PURE__ */ u$1(
7182
+ SegmentSelector,
7183
+ {
7184
+ displayedSegments,
7185
+ setDisplayedSegments,
7186
+ sequenceType: originalComponentProps.sequenceType
7187
+ }
7188
+ ),
7066
7189
  /* @__PURE__ */ u$1(
7067
7190
  MutationTypeSelector,
7068
7191
  {
@@ -8621,7 +8744,7 @@ const MutationsOverTimeTabs = ({
8621
8744
  setDisplayedSegments
8622
8745
  }
8623
8746
  );
8624
- return /* @__PURE__ */ u$1(Tabs, { tabs, toolbar });
8747
+ return /* @__PURE__ */ u$1(PageSizeContextProvider, { pageSizes: originalComponentProps.pageSizes, children: /* @__PURE__ */ u$1(Tabs, { tabs, toolbar }) });
8625
8748
  };
8626
8749
  const Toolbar = ({
8627
8750
  colorScale,
@@ -8632,7 +8755,14 @@ const Toolbar = ({
8632
8755
  }) => {
8633
8756
  return /* @__PURE__ */ u$1(Fragment, { children: [
8634
8757
  /* @__PURE__ */ u$1(ColorScaleSelectorDropdown, { colorScale, setColorScale }),
8635
- /* @__PURE__ */ u$1(SegmentSelector, { displayedSegments, setDisplayedSegments }),
8758
+ /* @__PURE__ */ u$1(
8759
+ SegmentSelector,
8760
+ {
8761
+ displayedSegments,
8762
+ setDisplayedSegments,
8763
+ sequenceType: originalComponentProps.sequenceType
8764
+ }
8765
+ ),
8636
8766
  /* @__PURE__ */ u$1(WastewaterMutationsOverTimeInfo, { originalComponentProps }),
8637
8767
  /* @__PURE__ */ u$1(Fullscreen, {})
8638
8768
  ] });
@@ -8826,9 +8956,6 @@ function DatePicker({
8826
8956
  }
8827
8957
  );
8828
8958
  }
8829
- function DeleteIcon() {
8830
- return /* @__PURE__ */ u$1(Fragment, { children: "×" });
8831
- }
8832
8959
  const undefinedValue = "__undefined__";
8833
8960
  function ClearableSelect({
8834
8961
  items,
@@ -9863,7 +9990,7 @@ const t = (t2) => "object" == typeof t2 && null != t2 && 1 === t2.nodeType, e =
9863
9990
  }
9864
9991
  return L2;
9865
9992
  };
9866
- var propTypes = { exports: {} };
9993
+ var propTypes$2 = { exports: {} };
9867
9994
  var reactIs = { exports: {} };
9868
9995
  var reactIs_production_min = {};
9869
9996
  /** @license React v16.13.1
@@ -10795,16 +10922,16 @@ function requireFactoryWithThrowingShims() {
10795
10922
  }
10796
10923
  var hasRequiredPropTypes;
10797
10924
  function requirePropTypes() {
10798
- if (hasRequiredPropTypes) return propTypes.exports;
10925
+ if (hasRequiredPropTypes) return propTypes$2.exports;
10799
10926
  hasRequiredPropTypes = 1;
10800
10927
  if (process.env.NODE_ENV !== "production") {
10801
10928
  var ReactIs = requireReactIs();
10802
10929
  var throwOnDirectAccess = true;
10803
- propTypes.exports = /* @__PURE__ */ requireFactoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess);
10930
+ propTypes$2.exports = /* @__PURE__ */ requireFactoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess);
10804
10931
  } else {
10805
- propTypes.exports = /* @__PURE__ */ requireFactoryWithThrowingShims()();
10932
+ propTypes$2.exports = /* @__PURE__ */ requireFactoryWithThrowingShims()();
10806
10933
  }
10807
- return propTypes.exports;
10934
+ return propTypes$2.exports;
10808
10935
  }
10809
10936
  var propTypesExports = /* @__PURE__ */ requirePropTypes();
10810
10937
  const PropTypes = /* @__PURE__ */ getDefaultExportFromCjs(propTypesExports);
@@ -11124,7 +11251,7 @@ function useLatestRef(val) {
11124
11251
  ref.current = val;
11125
11252
  return ref;
11126
11253
  }
11127
- function useEnhancedReducer(reducer, props, createInitialState, isStateEqual) {
11254
+ function useEnhancedReducer(reducer, props, createInitialState, isStateEqual2) {
11128
11255
  var prevStateRef = A$1();
11129
11256
  var actionRef = A$1();
11130
11257
  var enhancedReducer = q$1(function(state2, action2) {
@@ -11146,14 +11273,18 @@ function useEnhancedReducer(reducer, props, createInitialState, isStateEqual) {
11146
11273
  var action = actionRef.current;
11147
11274
  y(function() {
11148
11275
  var prevState = getState(prevStateRef.current, action == null ? void 0 : action.props);
11149
- var shouldCallOnChangeProps = action && prevStateRef.current && !isStateEqual(prevState, state);
11276
+ var shouldCallOnChangeProps = action && prevStateRef.current && !isStateEqual2(prevState, state);
11150
11277
  if (shouldCallOnChangeProps) {
11151
11278
  callOnChangeProps(action, prevState, state);
11152
11279
  }
11153
11280
  prevStateRef.current = state;
11154
- }, [state, action, isStateEqual]);
11281
+ }, [state, action, isStateEqual2]);
11155
11282
  return [state, dispatchWithProps];
11156
11283
  }
11284
+ function useControlledReducer$1(reducer, props, createInitialState, isStateEqual2) {
11285
+ var _useEnhancedReducer = useEnhancedReducer(reducer, props, createInitialState, isStateEqual2), state = _useEnhancedReducer[0], dispatch = _useEnhancedReducer[1];
11286
+ return [getState(state, props), dispatch];
11287
+ }
11157
11288
  var defaultProps$3 = {
11158
11289
  itemToString: function itemToString(item) {
11159
11290
  return item ? String(item) : "";
@@ -11168,19 +11299,19 @@ var defaultProps$3 = {
11168
11299
  typeof window === "undefined" || false ? void 0 : window
11169
11300
  )
11170
11301
  };
11171
- function getDefaultValue$1(props, propKey, defaultStateValues) {
11172
- if (defaultStateValues === void 0) {
11173
- defaultStateValues = dropdownDefaultStateValues;
11302
+ function getDefaultValue$1(props, propKey, defaultStateValues2) {
11303
+ if (defaultStateValues2 === void 0) {
11304
+ defaultStateValues2 = dropdownDefaultStateValues;
11174
11305
  }
11175
11306
  var defaultValue = props["default" + capitalizeString(propKey)];
11176
11307
  if (defaultValue !== void 0) {
11177
11308
  return defaultValue;
11178
11309
  }
11179
- return defaultStateValues[propKey];
11310
+ return defaultStateValues2[propKey];
11180
11311
  }
11181
- function getInitialValue$1(props, propKey, defaultStateValues) {
11182
- if (defaultStateValues === void 0) {
11183
- defaultStateValues = dropdownDefaultStateValues;
11312
+ function getInitialValue$1(props, propKey, defaultStateValues2) {
11313
+ if (defaultStateValues2 === void 0) {
11314
+ defaultStateValues2 = dropdownDefaultStateValues;
11184
11315
  }
11185
11316
  var value = props[propKey];
11186
11317
  if (value !== void 0) {
@@ -11190,7 +11321,7 @@ function getInitialValue$1(props, propKey, defaultStateValues) {
11190
11321
  if (initialValue !== void 0) {
11191
11322
  return initialValue;
11192
11323
  }
11193
- return getDefaultValue$1(props, propKey, defaultStateValues);
11324
+ return getDefaultValue$1(props, propKey, defaultStateValues2);
11194
11325
  }
11195
11326
  function getInitialState$2(props) {
11196
11327
  var selectedItem = getInitialValue$1(props, "selectedItem");
@@ -11452,49 +11583,49 @@ var commonDropdownPropTypes = _extends({}, commonPropTypes, {
11452
11583
  onIsOpenChange: PropTypes.func,
11453
11584
  scrollIntoView: PropTypes.func
11454
11585
  });
11455
- function downshiftCommonReducer(state, action, stateChangeTypes) {
11586
+ function downshiftCommonReducer(state, action, stateChangeTypes2) {
11456
11587
  var type = action.type, props = action.props;
11457
11588
  var changes;
11458
11589
  switch (type) {
11459
- case stateChangeTypes.ItemMouseMove:
11590
+ case stateChangeTypes2.ItemMouseMove:
11460
11591
  changes = {
11461
11592
  highlightedIndex: action.disabled ? -1 : action.index
11462
11593
  };
11463
11594
  break;
11464
- case stateChangeTypes.MenuMouseLeave:
11595
+ case stateChangeTypes2.MenuMouseLeave:
11465
11596
  changes = {
11466
11597
  highlightedIndex: -1
11467
11598
  };
11468
11599
  break;
11469
- case stateChangeTypes.ToggleButtonClick:
11470
- case stateChangeTypes.FunctionToggleMenu:
11600
+ case stateChangeTypes2.ToggleButtonClick:
11601
+ case stateChangeTypes2.FunctionToggleMenu:
11471
11602
  changes = {
11472
11603
  isOpen: !state.isOpen,
11473
11604
  highlightedIndex: state.isOpen ? -1 : getHighlightedIndexOnOpen(props, state, 0)
11474
11605
  };
11475
11606
  break;
11476
- case stateChangeTypes.FunctionOpenMenu:
11607
+ case stateChangeTypes2.FunctionOpenMenu:
11477
11608
  changes = {
11478
11609
  isOpen: true,
11479
11610
  highlightedIndex: getHighlightedIndexOnOpen(props, state, 0)
11480
11611
  };
11481
11612
  break;
11482
- case stateChangeTypes.FunctionCloseMenu:
11613
+ case stateChangeTypes2.FunctionCloseMenu:
11483
11614
  changes = {
11484
11615
  isOpen: false
11485
11616
  };
11486
11617
  break;
11487
- case stateChangeTypes.FunctionSetHighlightedIndex:
11618
+ case stateChangeTypes2.FunctionSetHighlightedIndex:
11488
11619
  changes = {
11489
11620
  highlightedIndex: props.isItemDisabled(props.items[action.highlightedIndex], action.highlightedIndex) ? -1 : action.highlightedIndex
11490
11621
  };
11491
11622
  break;
11492
- case stateChangeTypes.FunctionSetInputValue:
11623
+ case stateChangeTypes2.FunctionSetInputValue:
11493
11624
  changes = {
11494
11625
  inputValue: action.inputValue
11495
11626
  };
11496
11627
  break;
11497
- case stateChangeTypes.FunctionReset:
11628
+ case stateChangeTypes2.FunctionReset:
11498
11629
  changes = {
11499
11630
  highlightedIndex: getDefaultHighlightedIndex(props),
11500
11631
  isOpen: getDefaultValue$1(props, "isOpen"),
@@ -11603,9 +11734,9 @@ var propTypes$1 = _extends({}, commonDropdownPropTypes, {
11603
11734
  inputId: PropTypes.string,
11604
11735
  onInputValueChange: PropTypes.func
11605
11736
  });
11606
- function useControlledReducer(reducer, props, createInitialState, isStateEqual) {
11737
+ function useControlledReducer(reducer, props, createInitialState, isStateEqual2) {
11607
11738
  var previousSelectedItemRef = A$1();
11608
- var _useEnhancedReducer = useEnhancedReducer(reducer, props, createInitialState, isStateEqual), state = _useEnhancedReducer[0], dispatch = _useEnhancedReducer[1];
11739
+ var _useEnhancedReducer = useEnhancedReducer(reducer, props, createInitialState, isStateEqual2), state = _useEnhancedReducer[0], dispatch = _useEnhancedReducer[1];
11609
11740
  var isInitialMount = useIsInitialMount();
11610
11741
  y(function() {
11611
11742
  if (!isControlledProp(props, "selectedItem")) {
@@ -11626,7 +11757,7 @@ function useControlledReducer(reducer, props, createInitialState, isStateEqual)
11626
11757
  }
11627
11758
  var validatePropTypes$1 = noop;
11628
11759
  if (process.env.NODE_ENV !== "production") {
11629
- validatePropTypes$1 = function validatePropTypes(options2, caller) {
11760
+ validatePropTypes$1 = function validatePropTypes2(options2, caller) {
11630
11761
  PropTypes.checkPropTypes(propTypes$1, options2, "prop", caller.name);
11631
11762
  };
11632
11763
  }
@@ -12073,7 +12204,41 @@ function useCombobox(userProps) {
12073
12204
  inputValue
12074
12205
  };
12075
12206
  }
12076
- ({
12207
+ var defaultStateValues = {
12208
+ activeIndex: -1,
12209
+ selectedItems: []
12210
+ };
12211
+ function getInitialValue(props, propKey) {
12212
+ return getInitialValue$1(props, propKey, defaultStateValues);
12213
+ }
12214
+ function getDefaultValue(props, propKey) {
12215
+ return getDefaultValue$1(props, propKey, defaultStateValues);
12216
+ }
12217
+ function getInitialState$3(props) {
12218
+ var activeIndex = getInitialValue(props, "activeIndex");
12219
+ var selectedItems = getInitialValue(props, "selectedItems");
12220
+ return {
12221
+ activeIndex,
12222
+ selectedItems
12223
+ };
12224
+ }
12225
+ function isKeyDownOperationPermitted(event) {
12226
+ if (event.shiftKey || event.metaKey || event.ctrlKey || event.altKey) {
12227
+ return false;
12228
+ }
12229
+ var element = event.target;
12230
+ if (element instanceof HTMLInputElement && // if element is a text input
12231
+ element.value !== "" && // and we have text in it
12232
+ // and cursor is either not at the start or is currently highlighting text.
12233
+ (element.selectionStart !== 0 || element.selectionEnd !== 0)) {
12234
+ return false;
12235
+ }
12236
+ return true;
12237
+ }
12238
+ function isStateEqual(prevState, newState) {
12239
+ return prevState.selectedItems === newState.selectedItems && prevState.activeIndex === newState.activeIndex;
12240
+ }
12241
+ var propTypes = {
12077
12242
  stateReducer: commonPropTypes.stateReducer,
12078
12243
  itemToKey: commonPropTypes.itemToKey,
12079
12244
  environment: commonPropTypes.environment,
@@ -12088,26 +12253,312 @@ function useCombobox(userProps) {
12088
12253
  onSelectedItemsChange: PropTypes.func,
12089
12254
  keyNavigationNext: PropTypes.string,
12090
12255
  keyNavigationPrevious: PropTypes.string
12091
- });
12092
- ({
12256
+ };
12257
+ var defaultProps = {
12093
12258
  itemToKey: defaultProps$3.itemToKey,
12094
12259
  stateReducer: defaultProps$3.stateReducer,
12095
- environment: defaultProps$3.environment
12260
+ environment: defaultProps$3.environment,
12261
+ keyNavigationNext: "ArrowRight",
12262
+ keyNavigationPrevious: "ArrowLeft"
12263
+ };
12264
+ var validatePropTypes = noop;
12265
+ if (process.env.NODE_ENV !== "production") {
12266
+ validatePropTypes = function validatePropTypes2(options2, caller) {
12267
+ PropTypes.checkPropTypes(propTypes, options2, "prop", caller.name);
12268
+ };
12269
+ }
12270
+ var SelectedItemClick = process.env.NODE_ENV !== "production" ? "__selected_item_click__" : 0;
12271
+ var SelectedItemKeyDownDelete = process.env.NODE_ENV !== "production" ? "__selected_item_keydown_delete__" : 1;
12272
+ var SelectedItemKeyDownBackspace = process.env.NODE_ENV !== "production" ? "__selected_item_keydown_backspace__" : 2;
12273
+ var SelectedItemKeyDownNavigationNext = process.env.NODE_ENV !== "production" ? "__selected_item_keydown_navigation_next__" : 3;
12274
+ var SelectedItemKeyDownNavigationPrevious = process.env.NODE_ENV !== "production" ? "__selected_item_keydown_navigation_previous__" : 4;
12275
+ var DropdownKeyDownNavigationPrevious = process.env.NODE_ENV !== "production" ? "__dropdown_keydown_navigation_previous__" : 5;
12276
+ var DropdownKeyDownBackspace = process.env.NODE_ENV !== "production" ? "__dropdown_keydown_backspace__" : 6;
12277
+ var DropdownClick = process.env.NODE_ENV !== "production" ? "__dropdown_click__" : 7;
12278
+ var FunctionAddSelectedItem = process.env.NODE_ENV !== "production" ? "__function_add_selected_item__" : 8;
12279
+ var FunctionRemoveSelectedItem = process.env.NODE_ENV !== "production" ? "__function_remove_selected_item__" : 9;
12280
+ var FunctionSetSelectedItems = process.env.NODE_ENV !== "production" ? "__function_set_selected_items__" : 10;
12281
+ var FunctionSetActiveIndex = process.env.NODE_ENV !== "production" ? "__function_set_active_index__" : 11;
12282
+ var FunctionReset = process.env.NODE_ENV !== "production" ? "__function_reset__" : 12;
12283
+ var stateChangeTypes = /* @__PURE__ */ Object.freeze({
12284
+ __proto__: null,
12285
+ DropdownClick,
12286
+ DropdownKeyDownBackspace,
12287
+ DropdownKeyDownNavigationPrevious,
12288
+ FunctionAddSelectedItem,
12289
+ FunctionRemoveSelectedItem,
12290
+ FunctionReset,
12291
+ FunctionSetActiveIndex,
12292
+ FunctionSetSelectedItems,
12293
+ SelectedItemClick,
12294
+ SelectedItemKeyDownBackspace,
12295
+ SelectedItemKeyDownDelete,
12296
+ SelectedItemKeyDownNavigationNext,
12297
+ SelectedItemKeyDownNavigationPrevious
12096
12298
  });
12097
- if (process.env.NODE_ENV !== "production") ;
12098
- process.env.NODE_ENV !== "production" ? "__selected_item_click__" : 0;
12099
- process.env.NODE_ENV !== "production" ? "__selected_item_keydown_delete__" : 1;
12100
- process.env.NODE_ENV !== "production" ? "__selected_item_keydown_backspace__" : 2;
12101
- process.env.NODE_ENV !== "production" ? "__selected_item_keydown_navigation_next__" : 3;
12102
- process.env.NODE_ENV !== "production" ? "__selected_item_keydown_navigation_previous__" : 4;
12103
- process.env.NODE_ENV !== "production" ? "__dropdown_keydown_navigation_previous__" : 5;
12104
- process.env.NODE_ENV !== "production" ? "__dropdown_keydown_backspace__" : 6;
12105
- process.env.NODE_ENV !== "production" ? "__dropdown_click__" : 7;
12106
- process.env.NODE_ENV !== "production" ? "__function_add_selected_item__" : 8;
12107
- process.env.NODE_ENV !== "production" ? "__function_remove_selected_item__" : 9;
12108
- process.env.NODE_ENV !== "production" ? "__function_set_selected_items__" : 10;
12109
- process.env.NODE_ENV !== "production" ? "__function_set_active_index__" : 11;
12110
- process.env.NODE_ENV !== "production" ? "__function_reset__" : 12;
12299
+ function downshiftMultipleSelectionReducer(state, action) {
12300
+ var type = action.type, index = action.index, props = action.props, selectedItem = action.selectedItem;
12301
+ var activeIndex = state.activeIndex, selectedItems = state.selectedItems;
12302
+ var changes;
12303
+ switch (type) {
12304
+ case SelectedItemClick:
12305
+ changes = {
12306
+ activeIndex: index
12307
+ };
12308
+ break;
12309
+ case SelectedItemKeyDownNavigationPrevious:
12310
+ changes = {
12311
+ activeIndex: activeIndex - 1 < 0 ? 0 : activeIndex - 1
12312
+ };
12313
+ break;
12314
+ case SelectedItemKeyDownNavigationNext:
12315
+ changes = {
12316
+ activeIndex: activeIndex + 1 >= selectedItems.length ? -1 : activeIndex + 1
12317
+ };
12318
+ break;
12319
+ case SelectedItemKeyDownBackspace:
12320
+ case SelectedItemKeyDownDelete: {
12321
+ if (activeIndex < 0) {
12322
+ break;
12323
+ }
12324
+ var newActiveIndex = activeIndex;
12325
+ if (selectedItems.length === 1) {
12326
+ newActiveIndex = -1;
12327
+ } else if (activeIndex === selectedItems.length - 1) {
12328
+ newActiveIndex = selectedItems.length - 2;
12329
+ }
12330
+ changes = _extends({
12331
+ selectedItems: [].concat(selectedItems.slice(0, activeIndex), selectedItems.slice(activeIndex + 1))
12332
+ }, {
12333
+ activeIndex: newActiveIndex
12334
+ });
12335
+ break;
12336
+ }
12337
+ case DropdownKeyDownNavigationPrevious:
12338
+ changes = {
12339
+ activeIndex: selectedItems.length - 1
12340
+ };
12341
+ break;
12342
+ case DropdownKeyDownBackspace:
12343
+ changes = {
12344
+ selectedItems: selectedItems.slice(0, selectedItems.length - 1)
12345
+ };
12346
+ break;
12347
+ case FunctionAddSelectedItem:
12348
+ changes = {
12349
+ selectedItems: [].concat(selectedItems, [selectedItem])
12350
+ };
12351
+ break;
12352
+ case DropdownClick:
12353
+ changes = {
12354
+ activeIndex: -1
12355
+ };
12356
+ break;
12357
+ case FunctionRemoveSelectedItem: {
12358
+ var _newActiveIndex = activeIndex;
12359
+ var selectedItemIndex = selectedItems.findIndex(function(item) {
12360
+ return props.itemToKey(item) === props.itemToKey(selectedItem);
12361
+ });
12362
+ if (selectedItemIndex < 0) {
12363
+ break;
12364
+ }
12365
+ if (selectedItems.length === 1) {
12366
+ _newActiveIndex = -1;
12367
+ } else if (selectedItemIndex === selectedItems.length - 1) {
12368
+ _newActiveIndex = selectedItems.length - 2;
12369
+ }
12370
+ changes = {
12371
+ selectedItems: [].concat(selectedItems.slice(0, selectedItemIndex), selectedItems.slice(selectedItemIndex + 1)),
12372
+ activeIndex: _newActiveIndex
12373
+ };
12374
+ break;
12375
+ }
12376
+ case FunctionSetSelectedItems: {
12377
+ var newSelectedItems = action.selectedItems;
12378
+ changes = {
12379
+ selectedItems: newSelectedItems
12380
+ };
12381
+ break;
12382
+ }
12383
+ case FunctionSetActiveIndex: {
12384
+ var _newActiveIndex2 = action.activeIndex;
12385
+ changes = {
12386
+ activeIndex: _newActiveIndex2
12387
+ };
12388
+ break;
12389
+ }
12390
+ case FunctionReset:
12391
+ changes = {
12392
+ activeIndex: getDefaultValue(props, "activeIndex"),
12393
+ selectedItems: getDefaultValue(props, "selectedItems")
12394
+ };
12395
+ break;
12396
+ default:
12397
+ throw new Error("Reducer called without proper action type.");
12398
+ }
12399
+ return _extends({}, state, changes);
12400
+ }
12401
+ var _excluded = ["refKey", "ref", "onClick", "onKeyDown", "selectedItem", "index"], _excluded2 = ["refKey", "ref", "onKeyDown", "onClick", "preventKeyAction"];
12402
+ useMultipleSelection.stateChangeTypes = stateChangeTypes;
12403
+ function useMultipleSelection(userProps) {
12404
+ if (userProps === void 0) {
12405
+ userProps = {};
12406
+ }
12407
+ validatePropTypes(userProps, useMultipleSelection);
12408
+ var props = _extends({}, defaultProps, userProps);
12409
+ var getA11yStatusMessage = props.getA11yStatusMessage, environment = props.environment, keyNavigationNext = props.keyNavigationNext, keyNavigationPrevious = props.keyNavigationPrevious;
12410
+ var _useControlledReducer = useControlledReducer$1(downshiftMultipleSelectionReducer, props, getInitialState$3, isStateEqual), state = _useControlledReducer[0], dispatch = _useControlledReducer[1];
12411
+ var activeIndex = state.activeIndex, selectedItems = state.selectedItems;
12412
+ var isInitialMount = useIsInitialMount();
12413
+ var dropdownRef = A$1(null);
12414
+ var selectedItemRefs = A$1();
12415
+ selectedItemRefs.current = [];
12416
+ var latest = useLatestRef({
12417
+ state,
12418
+ props
12419
+ });
12420
+ useA11yMessageStatus(getA11yStatusMessage, state, [activeIndex, selectedItems], environment);
12421
+ y(function() {
12422
+ if (isInitialMount) {
12423
+ return;
12424
+ }
12425
+ if (activeIndex === -1 && dropdownRef.current) {
12426
+ dropdownRef.current.focus();
12427
+ } else if (selectedItemRefs.current[activeIndex]) {
12428
+ selectedItemRefs.current[activeIndex].focus();
12429
+ }
12430
+ }, [activeIndex]);
12431
+ useControlPropsValidator({
12432
+ props,
12433
+ state
12434
+ });
12435
+ var setGetterPropCallInfo = useGetterPropsCalledChecker("getDropdownProps");
12436
+ var selectedItemKeyDownHandlers = T$1(function() {
12437
+ var _ref;
12438
+ return _ref = {}, _ref[keyNavigationPrevious] = function() {
12439
+ dispatch({
12440
+ type: SelectedItemKeyDownNavigationPrevious
12441
+ });
12442
+ }, _ref[keyNavigationNext] = function() {
12443
+ dispatch({
12444
+ type: SelectedItemKeyDownNavigationNext
12445
+ });
12446
+ }, _ref.Delete = function Delete() {
12447
+ dispatch({
12448
+ type: SelectedItemKeyDownDelete
12449
+ });
12450
+ }, _ref.Backspace = function Backspace() {
12451
+ dispatch({
12452
+ type: SelectedItemKeyDownBackspace
12453
+ });
12454
+ }, _ref;
12455
+ }, [dispatch, keyNavigationNext, keyNavigationPrevious]);
12456
+ var dropdownKeyDownHandlers = T$1(function() {
12457
+ var _ref2;
12458
+ return _ref2 = {}, _ref2[keyNavigationPrevious] = function(event) {
12459
+ if (isKeyDownOperationPermitted(event)) {
12460
+ dispatch({
12461
+ type: DropdownKeyDownNavigationPrevious
12462
+ });
12463
+ }
12464
+ }, _ref2.Backspace = function Backspace(event) {
12465
+ if (isKeyDownOperationPermitted(event)) {
12466
+ dispatch({
12467
+ type: DropdownKeyDownBackspace
12468
+ });
12469
+ }
12470
+ }, _ref2;
12471
+ }, [dispatch, keyNavigationPrevious]);
12472
+ var getSelectedItemProps = q$1(function(_temp) {
12473
+ var _extends2;
12474
+ var _ref3 = _temp === void 0 ? {} : _temp, _ref3$refKey = _ref3.refKey, refKey = _ref3$refKey === void 0 ? "ref" : _ref3$refKey, ref = _ref3.ref, onClick = _ref3.onClick, onKeyDown = _ref3.onKeyDown, selectedItemProp = _ref3.selectedItem, indexProp = _ref3.index, rest = _objectWithoutPropertiesLoose(_ref3, _excluded);
12475
+ var latestState = latest.current.state;
12476
+ var _getItemAndIndex = getItemAndIndex(selectedItemProp, indexProp, latestState.selectedItems, "Pass either item or index to getSelectedItemProps!"), index = _getItemAndIndex[1];
12477
+ var isFocusable = index > -1 && index === latestState.activeIndex;
12478
+ var selectedItemHandleClick = function selectedItemHandleClick2() {
12479
+ dispatch({
12480
+ type: SelectedItemClick,
12481
+ index
12482
+ });
12483
+ };
12484
+ var selectedItemHandleKeyDown = function selectedItemHandleKeyDown2(event) {
12485
+ var key = normalizeArrowKey(event);
12486
+ if (key && selectedItemKeyDownHandlers[key]) {
12487
+ selectedItemKeyDownHandlers[key](event);
12488
+ }
12489
+ };
12490
+ return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function(selectedItemNode) {
12491
+ if (selectedItemNode) {
12492
+ selectedItemRefs.current.push(selectedItemNode);
12493
+ }
12494
+ }), _extends2.tabIndex = isFocusable ? 0 : -1, _extends2.onClick = callAllEventHandlers(onClick, selectedItemHandleClick), _extends2.onKeyDown = callAllEventHandlers(onKeyDown, selectedItemHandleKeyDown), _extends2), rest);
12495
+ }, [dispatch, latest, selectedItemKeyDownHandlers]);
12496
+ var getDropdownProps = q$1(function(_temp2, _temp3) {
12497
+ var _extends3;
12498
+ var _ref4 = _temp2 === void 0 ? {} : _temp2, _ref4$refKey = _ref4.refKey, refKey = _ref4$refKey === void 0 ? "ref" : _ref4$refKey, ref = _ref4.ref, onKeyDown = _ref4.onKeyDown, onClick = _ref4.onClick, _ref4$preventKeyActio = _ref4.preventKeyAction, preventKeyAction = _ref4$preventKeyActio === void 0 ? false : _ref4$preventKeyActio, rest = _objectWithoutPropertiesLoose(_ref4, _excluded2);
12499
+ var _ref5 = _temp3 === void 0 ? {} : _temp3, _ref5$suppressRefErro = _ref5.suppressRefError, suppressRefError = _ref5$suppressRefErro === void 0 ? false : _ref5$suppressRefErro;
12500
+ setGetterPropCallInfo("getDropdownProps", suppressRefError, refKey, dropdownRef);
12501
+ var dropdownHandleKeyDown = function dropdownHandleKeyDown2(event) {
12502
+ var key = normalizeArrowKey(event);
12503
+ if (key && dropdownKeyDownHandlers[key]) {
12504
+ dropdownKeyDownHandlers[key](event);
12505
+ }
12506
+ };
12507
+ var dropdownHandleClick = function dropdownHandleClick2() {
12508
+ dispatch({
12509
+ type: DropdownClick
12510
+ });
12511
+ };
12512
+ return _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function(dropdownNode) {
12513
+ if (dropdownNode) {
12514
+ dropdownRef.current = dropdownNode;
12515
+ }
12516
+ }), _extends3), !preventKeyAction && {
12517
+ onKeyDown: callAllEventHandlers(onKeyDown, dropdownHandleKeyDown),
12518
+ onClick: callAllEventHandlers(onClick, dropdownHandleClick)
12519
+ }, rest);
12520
+ }, [dispatch, dropdownKeyDownHandlers, setGetterPropCallInfo]);
12521
+ var addSelectedItem = q$1(function(selectedItem) {
12522
+ dispatch({
12523
+ type: FunctionAddSelectedItem,
12524
+ selectedItem
12525
+ });
12526
+ }, [dispatch]);
12527
+ var removeSelectedItem = q$1(function(selectedItem) {
12528
+ dispatch({
12529
+ type: FunctionRemoveSelectedItem,
12530
+ selectedItem
12531
+ });
12532
+ }, [dispatch]);
12533
+ var setSelectedItems = q$1(function(newSelectedItems) {
12534
+ dispatch({
12535
+ type: FunctionSetSelectedItems,
12536
+ selectedItems: newSelectedItems
12537
+ });
12538
+ }, [dispatch]);
12539
+ var setActiveIndex = q$1(function(newActiveIndex) {
12540
+ dispatch({
12541
+ type: FunctionSetActiveIndex,
12542
+ activeIndex: newActiveIndex
12543
+ });
12544
+ }, [dispatch]);
12545
+ var reset = q$1(function() {
12546
+ dispatch({
12547
+ type: FunctionReset
12548
+ });
12549
+ }, [dispatch]);
12550
+ return {
12551
+ getSelectedItemProps,
12552
+ getDropdownProps,
12553
+ addSelectedItem,
12554
+ removeSelectedItem,
12555
+ setSelectedItems,
12556
+ setActiveIndex,
12557
+ reset,
12558
+ selectedItems,
12559
+ activeIndex
12560
+ };
12561
+ }
12111
12562
  function DownshiftCombobox({
12112
12563
  allItems,
12113
12564
  value,
@@ -12901,12 +13352,35 @@ const sequenceTypeFromSegment = (possibleSegment, referenceGenome) => {
12901
13352
  return void 0;
12902
13353
  };
12903
13354
  const parseAndValidateMutation = (value, referenceGenome) => {
13355
+ const possibleMutation = parseMutation(value, referenceGenome);
13356
+ if (possibleMutation === null) {
13357
+ return null;
13358
+ }
13359
+ const sequenceType = getSequenceType(possibleMutation.type);
13360
+ const isOutside = isOutsideReferenceGenome(possibleMutation.value, referenceGenome, sequenceType);
13361
+ if (isOutside) {
13362
+ return null;
13363
+ }
13364
+ return possibleMutation;
13365
+ };
13366
+ const getSequenceType = (type) => {
13367
+ switch (type) {
13368
+ case "nucleotideInsertions":
13369
+ case "nucleotideMutations":
13370
+ return "nucleotide";
13371
+ case "aminoAcidInsertions":
13372
+ case "aminoAcidMutations":
13373
+ return "amino acid";
13374
+ }
13375
+ };
13376
+ const parseMutation = (value, referenceGenome) => {
12904
13377
  const possibleInsertion = InsertionClass.parse(value);
12905
13378
  if (possibleInsertion !== null) {
12906
13379
  const sequenceType = sequenceTypeFromSegment(possibleInsertion.segment, referenceGenome);
12907
13380
  switch (sequenceType) {
12908
- case "nucleotide":
13381
+ case "nucleotide": {
12909
13382
  return { type: "nucleotideInsertions", value: possibleInsertion };
13383
+ }
12910
13384
  case "amino acid":
12911
13385
  return { type: "aminoAcidInsertions", value: possibleInsertion };
12912
13386
  case void 0:
@@ -12929,16 +13403,41 @@ const parseAndValidateMutation = (value, referenceGenome) => {
12929
13403
  if (possibleSubstitution !== null) {
12930
13404
  const sequenceType = sequenceTypeFromSegment(possibleSubstitution.segment, referenceGenome);
12931
13405
  switch (sequenceType) {
12932
- case "nucleotide":
13406
+ case "nucleotide": {
12933
13407
  return { type: "nucleotideMutations", value: possibleSubstitution };
12934
- case "amino acid":
13408
+ }
13409
+ case "amino acid": {
12935
13410
  return { type: "aminoAcidMutations", value: possibleSubstitution };
13411
+ }
12936
13412
  case void 0:
12937
13413
  return null;
12938
13414
  }
12939
13415
  }
12940
13416
  return null;
12941
13417
  };
13418
+ function isOutsideReferenceGenome(mutation, referenceGenome, sequenceType) {
13419
+ const lengthOfSegment = getLengthOfSegment(mutation.segment, referenceGenome, sequenceType);
13420
+ if (lengthOfSegment === void 0) {
13421
+ return true;
13422
+ }
13423
+ return mutation.position >= lengthOfSegment;
13424
+ }
13425
+ function getLengthOfSegment(segment, referenceGenome, sequenceType) {
13426
+ var _a, _b, _c;
13427
+ switch (sequenceType) {
13428
+ case "nucleotide": {
13429
+ if (referenceGenome.nucleotideSequences.length === 1) {
13430
+ return (_a = referenceGenome.nucleotideSequences.at(0)) == null ? void 0 : _a.sequence.length;
13431
+ }
13432
+ return (_b = referenceGenome.nucleotideSequences.find(
13433
+ (sequence) => sequence.name.toUpperCase() === (segment == null ? void 0 : segment.toUpperCase())
13434
+ )) == null ? void 0 : _b.sequence.length;
13435
+ }
13436
+ case "amino acid": {
13437
+ return (_c = referenceGenome.genes.find((gene) => gene.name.toUpperCase() === (segment == null ? void 0 : segment.toUpperCase()))) == null ? void 0 : _c.sequence.length;
13438
+ }
13439
+ }
13440
+ }
12942
13441
  const mutationFilterInnerPropsSchema = z$2.object({
12943
13442
  initialValue: z$2.union([mutationsFilterSchema.optional(), z$2.array(z$2.string()), z$2.undefined()])
12944
13443
  });
@@ -12950,38 +13449,30 @@ const MutationFilter = (props) => {
12950
13449
  return /* @__PURE__ */ u$1(
12951
13450
  ErrorBoundary,
12952
13451
  {
12953
- size: { height: "3.375rem", width },
13452
+ size: { height: "40px", width },
12954
13453
  layout: "horizontal",
12955
13454
  schema: mutationFilterPropsSchema,
12956
13455
  componentProps: props,
12957
- children: /* @__PURE__ */ u$1("div", { style: width, children: /* @__PURE__ */ u$1(MutationFilterInner, { initialValue }) })
13456
+ children: /* @__PURE__ */ u$1("div", { style: { width }, children: /* @__PURE__ */ u$1(MutationFilterInner, { initialValue }) })
12958
13457
  }
12959
13458
  );
12960
13459
  };
12961
- const MutationFilterInner = ({ initialValue }) => {
13460
+ function MutationFilterInner({ initialValue }) {
13461
+ var _a;
12962
13462
  const referenceGenome = x$1(ReferenceGenomeContext);
12963
- const [selectedFilters, setSelectedFilters] = d(
12964
- getInitialState(initialValue, referenceGenome)
12965
- );
12966
13463
  const filterRef = A$1(null);
12967
- if (referenceGenome.nucleotideSequences.length === 0 && referenceGenome.genes.length === 0) {
12968
- throw new UserFacingError(
12969
- "No reference sequences available",
12970
- "This organism has neither nucleotide nor amino acid sequences configured in its reference genome. You cannot filter by mutations."
12971
- );
12972
- }
12973
- const handleRemoveValue = (option) => {
12974
- const newSelectedFilters = {
12975
- ...selectedFilters,
12976
- [option.type]: selectedFilters[option.type].filter((i2) => option.value.toString() != i2.toString())
12977
- };
12978
- setSelectedFilters(newSelectedFilters);
12979
- fireChangeEvent(newSelectedFilters);
12980
- };
12981
- const fireChangeEvent = (selectedFilters2) => {
12982
- var _a;
12983
- const detail = mapToMutationFilterStrings(selectedFilters2);
12984
- (_a = filterRef.current) == null ? void 0 : _a.dispatchEvent(
13464
+ const [inputValue, setInputValue] = d("");
13465
+ const initialState = T$1(() => {
13466
+ return getInitialState(initialValue, referenceGenome);
13467
+ }, [initialValue, referenceGenome]);
13468
+ const [selectedItems, setSelectedItems] = d(initialState);
13469
+ const [itemCandidate, setItemCandidate] = d(null);
13470
+ const [showErrorIndicator, setShowErrorIndicator] = d(false);
13471
+ const items = itemCandidate ? [itemCandidate] : [];
13472
+ const fireChangeEvent = (selectedFilters) => {
13473
+ var _a2;
13474
+ const detail = mapToMutationFilterStrings(selectedFilters);
13475
+ (_a2 = filterRef.current) == null ? void 0 : _a2.dispatchEvent(
12985
13476
  new CustomEvent("gs-mutation-filter-changed", {
12986
13477
  detail,
12987
13478
  bubbles: true,
@@ -12989,152 +13480,155 @@ const MutationFilterInner = ({ initialValue }) => {
12989
13480
  })
12990
13481
  );
12991
13482
  };
12992
- return /* @__PURE__ */ u$1("div", { className: "w-full border border-gray-300 rounded-md relative", ref: filterRef, children: [
12993
- /* @__PURE__ */ u$1("div", { className: "absolute -top-3 -right-3 z-10", children: /* @__PURE__ */ u$1(MutationFilterInfo, {}) }),
12994
- /* @__PURE__ */ u$1("div", { className: "relative w-full p-1", children: [
12995
- /* @__PURE__ */ u$1(
12996
- MutationFilterSelector,
12997
- {
12998
- referenceGenome,
12999
- setSelectedFilters: (newSelectedFilters) => {
13000
- setSelectedFilters(newSelectedFilters);
13001
- fireChangeEvent(newSelectedFilters);
13002
- },
13003
- selectedFilters
13004
- }
13005
- ),
13006
- /* @__PURE__ */ u$1(
13007
- SelectedMutationFilterDisplay,
13008
- {
13009
- selectedFilters,
13010
- handleRemoveValue
13011
- }
13012
- )
13013
- ] })
13014
- ] });
13015
- };
13016
- function getInitialState(initialValue, referenceGenome) {
13017
- if (initialValue === void 0) {
13018
- return {
13019
- nucleotideMutations: [],
13020
- aminoAcidMutations: [],
13021
- nucleotideInsertions: [],
13022
- aminoAcidInsertions: []
13023
- };
13024
- }
13025
- const values = Array.isArray(initialValue) ? initialValue : Object.values(initialValue).flatMap((it) => it);
13026
- return values.reduce(
13027
- (selectedFilters, value) => {
13028
- const parsedMutation = parseAndValidateMutation(value, referenceGenome);
13029
- if (parsedMutation === null) {
13030
- return selectedFilters;
13031
- }
13032
- return {
13033
- ...selectedFilters,
13034
- [parsedMutation.type]: [...selectedFilters[parsedMutation.type], parsedMutation.value]
13035
- };
13036
- },
13037
- {
13038
- nucleotideMutations: [],
13039
- aminoAcidMutations: [],
13040
- nucleotideInsertions: [],
13041
- aminoAcidInsertions: []
13483
+ const handleSelectedItemsChanged = (newSelectedItems) => {
13484
+ fireChangeEvent(newSelectedItems);
13485
+ setSelectedItems(newSelectedItems);
13486
+ };
13487
+ const handleNewSelectedItem = (selectedItem2) => {
13488
+ if (selectedItem2) {
13489
+ handleSelectedItemsChanged([...selectedItems, selectedItem2]);
13490
+ setInputValue("");
13491
+ setItemCandidate(null);
13492
+ setShowErrorIndicator(false);
13042
13493
  }
13043
- );
13044
- }
13045
- const MutationFilterSelector = ({ referenceGenome, setSelectedFilters, selectedFilters }) => {
13046
- const [option, setOption] = d(null);
13047
- const [inputValue, setInputValue] = d("");
13048
- const selectorRef = A$1(null);
13049
- const handleInputChange = (newValue) => {
13050
- if (newValue.includes(",") || newValue.includes(";")) {
13051
- handleCommaSeparatedInput(newValue);
13494
+ };
13495
+ const handleInputChange = (newInputValue) => {
13496
+ setShowErrorIndicator(false);
13497
+ if (newInputValue == null ? void 0 : newInputValue.includes(",")) {
13498
+ const values = newInputValue == null ? void 0 : newInputValue.split(",").map((value) => {
13499
+ return { value, parsedValue: parseAndValidateMutation(value.trim(), referenceGenome) };
13500
+ });
13501
+ const validEntries = values.map((value) => value.parsedValue).filter((value) => value !== null);
13502
+ const invalidInput = values.filter((value) => value.parsedValue === null).map((value) => value.value.trim()).join(",");
13503
+ const selectedItemCandidates = [...selectedItems, ...validEntries];
13504
+ handleSelectedItemsChanged(extractUniqueValues(selectedItemCandidates));
13505
+ setInputValue(invalidInput);
13506
+ setItemCandidate(null);
13052
13507
  } else {
13053
- setInputValue(newValue);
13054
- const result = parseAndValidateMutation(newValue, referenceGenome);
13055
- setOption(result);
13056
- }
13057
- };
13058
- const handleCommaSeparatedInput = (inputValue2) => {
13059
- const inputValues = inputValue2.split(/[,;]/);
13060
- let newSelectedOptions = selectedFilters;
13061
- let updated = false;
13062
- const invalidQueries = [];
13063
- for (const value of inputValues) {
13064
- const trimmedValue = value.trim();
13065
- const parsedMutation = parseAndValidateMutation(trimmedValue, referenceGenome);
13066
- if (parsedMutation) {
13067
- const type = parsedMutation.type;
13068
- if (!selectedFilters[type].some((i2) => parsedMutation.value.toString() === i2.toString())) {
13069
- newSelectedOptions = {
13070
- ...newSelectedOptions,
13071
- [parsedMutation.type]: [...newSelectedOptions[parsedMutation.type], parsedMutation.value]
13072
- };
13073
- updated = true;
13508
+ setInputValue(newInputValue ?? "");
13509
+ if (newInputValue !== void 0) {
13510
+ const candidate = parseAndValidateMutation(newInputValue, referenceGenome);
13511
+ const alreadyExists = selectedItems.find(
13512
+ (selectedItem2) => selectedItem2.value.code === (candidate == null ? void 0 : candidate.value.code)
13513
+ );
13514
+ if (!alreadyExists) {
13515
+ setItemCandidate(candidate);
13074
13516
  }
13075
- } else {
13076
- invalidQueries.push(trimmedValue);
13077
13517
  }
13078
13518
  }
13079
- setInputValue(invalidQueries.join(","));
13080
- if (updated) {
13081
- setSelectedFilters(newSelectedOptions);
13082
- setOption(null);
13083
- }
13084
13519
  };
13085
- const handleOptionClick = () => {
13086
- if (option === null) {
13087
- return;
13088
- }
13089
- const type = option.type;
13090
- if (!selectedFilters[type].some((i2) => option.value.toString() === i2.toString())) {
13091
- const newSelectedValues = {
13092
- ...selectedFilters,
13093
- [option == null ? void 0 : option.type]: [...selectedFilters[option == null ? void 0 : option.type], option == null ? void 0 : option.value]
13094
- };
13095
- setSelectedFilters(newSelectedValues);
13096
- }
13097
- setInputValue("");
13098
- setOption(null);
13099
- };
13100
- const handleEnterPress = (event) => {
13101
- if (event.key === "Enter" && option !== null) {
13102
- handleOptionClick();
13103
- }
13104
- };
13105
- const handleBlur = (event) => {
13106
- var _a;
13107
- if (!((_a = selectorRef.current) == null ? void 0 : _a.contains(event.relatedTarget))) {
13108
- setOption(null);
13109
- }
13110
- };
13111
- return /* @__PURE__ */ u$1("div", { ref: selectorRef, tabIndex: -1, children: [
13112
- /* @__PURE__ */ u$1(
13113
- "input",
13114
- {
13115
- type: "text",
13116
- className: "w-full p-2 border-gray-300 border rounded-md",
13117
- placeholder: getPlaceholder(referenceGenome),
13118
- value: inputValue,
13119
- onInput: (e2) => {
13120
- handleInputChange(e2.target.value);
13121
- },
13122
- onKeyDown: (e2) => handleEnterPress(e2),
13123
- onFocus: () => handleInputChange(inputValue),
13124
- onBlur: handleBlur
13520
+ const shadowRoot = ((_a = filterRef.current) == null ? void 0 : _a.shadowRoot) ?? void 0;
13521
+ const environment = shadowRoot !== void 0 ? {
13522
+ addEventListener: window.addEventListener.bind(window),
13523
+ removeEventListener: window.removeEventListener.bind(window),
13524
+ document: shadowRoot.ownerDocument,
13525
+ Node: window.Node
13526
+ } : void 0;
13527
+ const { getDropdownProps, removeSelectedItem } = useMultipleSelection({
13528
+ selectedItems,
13529
+ onStateChange({ selectedItems: newSelectedItems, type }) {
13530
+ switch (type) {
13531
+ case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:
13532
+ handleSelectedItemsChanged(newSelectedItems ?? []);
13533
+ break;
13125
13534
  }
13126
- ),
13127
- option != null && /* @__PURE__ */ u$1(
13128
- "div",
13535
+ },
13536
+ environment
13537
+ });
13538
+ const { isOpen, getMenuProps, getInputProps, highlightedIndex, getItemProps, selectedItem } = useCombobox({
13539
+ items,
13540
+ itemToString(item) {
13541
+ return item ? item.value.code : "";
13542
+ },
13543
+ defaultHighlightedIndex: 0,
13544
+ inputValue,
13545
+ onStateChange({ inputValue: newInputValue, type, selectedItem: newSelectedItem }) {
13546
+ switch (type) {
13547
+ case useCombobox.stateChangeTypes.InputKeyDownEnter:
13548
+ case useCombobox.stateChangeTypes.ItemClick:
13549
+ case useCombobox.stateChangeTypes.InputBlur:
13550
+ handleNewSelectedItem(newSelectedItem);
13551
+ break;
13552
+ case useCombobox.stateChangeTypes.InputChange: {
13553
+ handleInputChange(newInputValue);
13554
+ break;
13555
+ }
13556
+ }
13557
+ },
13558
+ environment
13559
+ });
13560
+ if (referenceGenome.nucleotideSequences.length === 0 && referenceGenome.genes.length === 0) {
13561
+ throw new UserFacingError(
13562
+ "No reference sequences available",
13563
+ "This organism has neither nucleotide nor amino acid sequences configured in its reference genome. You cannot filter by mutations."
13564
+ );
13565
+ }
13566
+ return /* @__PURE__ */ u$1("div", { className: "w-full", ref: filterRef, children: [
13567
+ /* @__PURE__ */ u$1("div", { className: `flex gap-x-1 flex-wrap p-1 input h-fit w-full ${showErrorIndicator ? "input-error" : ""}`, children: [
13568
+ selectedItems.map((selectedItemForRender, index) => {
13569
+ return /* @__PURE__ */ u$1("div", { className: "my-1", children: /* @__PURE__ */ u$1(
13570
+ SelectedFilter,
13571
+ {
13572
+ handleRemoveValue: () => {
13573
+ removeSelectedItem(selectedItemForRender);
13574
+ },
13575
+ mutationFilter: selectedItemForRender
13576
+ }
13577
+ ) }, `selected-item-${index}`);
13578
+ }),
13579
+ /* @__PURE__ */ u$1("div", { className: "flex gap-0.5 grow p-1", children: [
13580
+ /* @__PURE__ */ u$1(
13581
+ "input",
13582
+ {
13583
+ placeholder: getPlaceholder(referenceGenome),
13584
+ className: "w-full focus:outline-none min-w-8",
13585
+ ...getInputProps(getDropdownProps({ preventKeyAction: isOpen })),
13586
+ onBlur: () => {
13587
+ setShowErrorIndicator(inputValue !== "");
13588
+ },
13589
+ size: 10
13590
+ }
13591
+ ),
13592
+ /* @__PURE__ */ u$1(MutationFilterInfo, {})
13593
+ ] })
13594
+ ] }),
13595
+ /* @__PURE__ */ u$1(
13596
+ "ul",
13129
13597
  {
13130
- role: "option",
13131
- className: "hover:bg-gray-300 absolute cursor-pointer p-2 border-1 border-slate-500 bg-slate-200",
13132
- onClick: () => handleOptionClick(),
13133
- children: option.value.toString()
13598
+ className: `absolute w-inherit bg-white mt-1 shadow-md max-h-80 overflow-scroll p-0 z-10 ${!isOpen && "hidden"}`,
13599
+ ...getMenuProps(),
13600
+ children: items.map((item, index) => /* @__PURE__ */ u$1(
13601
+ "li",
13602
+ {
13603
+ className: `${highlightedIndex === index && "bg-blue-300"} ${selectedItem === item && "font-bold"} py-2 px-3 shadow-sm flex flex-col cursor-pointer`,
13604
+ ...getItemProps({ item, index }),
13605
+ style: {
13606
+ backgroundColor: backgroundColorMap(item, highlightedIndex === index ? 0.4 : 0.2)
13607
+ },
13608
+ children: /* @__PURE__ */ u$1("span", { children: item.value.code })
13609
+ },
13610
+ `${item.value.code}${index}`
13611
+ ))
13134
13612
  }
13135
13613
  )
13136
13614
  ] });
13137
- };
13615
+ }
13616
+ function extractUniqueValues(newSelectedItems) {
13617
+ const uniqueMutationsMap = /* @__PURE__ */ new Map();
13618
+ for (const mutation of newSelectedItems) {
13619
+ if (!uniqueMutationsMap.has(mutation.value.code)) {
13620
+ uniqueMutationsMap.set(mutation.value.code, mutation);
13621
+ }
13622
+ }
13623
+ return Array.from(uniqueMutationsMap.values());
13624
+ }
13625
+ function getInitialState(initialValue, referenceGenome) {
13626
+ if (initialValue === void 0) {
13627
+ return [];
13628
+ }
13629
+ const values = Array.isArray(initialValue) ? initialValue : Object.values(initialValue).flatMap((it) => it);
13630
+ return values.map((value) => parseAndValidateMutation(value, referenceGenome)).filter((parsedMutation) => parsedMutation !== null);
13631
+ }
13138
13632
  function getPlaceholder(referenceGenome) {
13139
13633
  const nucleotideSubstitution = getExampleMutation(referenceGenome, "nucleotide", "substitution");
13140
13634
  const nucleotideInsertion = getExampleMutation(referenceGenome, "nucleotide", "insertion");
@@ -13143,74 +13637,63 @@ function getPlaceholder(referenceGenome) {
13143
13637
  const exampleMutations = [nucleotideSubstitution, nucleotideInsertion, aminoAcidSubstitution, aminoAcidInsertion].filter((example) => example !== "").join(", ");
13144
13638
  return `Enter a mutation (e.g. ${exampleMutations})`;
13145
13639
  }
13146
- const backgroundColor = {
13147
- aminoAcidMutations: singleGraphColorRGBByName("teal", 0.4),
13148
- nucleotideMutations: singleGraphColorRGBByName("green", 0.4),
13149
- aminoAcidInsertions: singleGraphColorRGBByName("purple", 0.4),
13150
- nucleotideInsertions: singleGraphColorRGBByName("indigo", 0.4)
13151
- };
13152
- const backgroundColorMap = (data) => {
13153
- return backgroundColor[data.type] || "lightgray";
13154
- };
13155
- const SelectedMutationFilterDisplay = ({ selectedFilters, handleRemoveValue }) => {
13156
- return /* @__PURE__ */ u$1("div", { className: "flex flex-wrap", children: [
13157
- selectedFilters.nucleotideMutations.map((mutation) => /* @__PURE__ */ u$1(
13158
- SelectedFilter,
13159
- {
13160
- handleRemoveValue,
13161
- mutationFilter: { type: "nucleotideMutations", value: mutation }
13162
- },
13163
- mutation.toString()
13164
- )),
13165
- selectedFilters.aminoAcidMutations.map((mutation) => /* @__PURE__ */ u$1(
13166
- SelectedFilter,
13167
- {
13168
- handleRemoveValue,
13169
- mutationFilter: { type: "aminoAcidMutations", value: mutation }
13170
- },
13171
- mutation.toString()
13172
- )),
13173
- selectedFilters.nucleotideInsertions.map((mutation) => /* @__PURE__ */ u$1(
13174
- SelectedFilter,
13175
- {
13176
- handleRemoveValue,
13177
- mutationFilter: { type: "nucleotideInsertions", value: mutation }
13178
- },
13179
- mutation.toString()
13180
- )),
13181
- selectedFilters.aminoAcidInsertions.map((mutation) => /* @__PURE__ */ u$1(
13182
- SelectedFilter,
13183
- {
13184
- handleRemoveValue,
13185
- mutationFilter: { type: "aminoAcidInsertions", value: mutation }
13186
- },
13187
- mutation.toString()
13188
- ))
13189
- ] });
13640
+ const backgroundColorMap = (data, alpha = 0.4) => {
13641
+ switch (data.type) {
13642
+ case "nucleotideMutations":
13643
+ return singleGraphColorRGBByName("green", alpha);
13644
+ case "aminoAcidMutations":
13645
+ return singleGraphColorRGBByName("teal", alpha);
13646
+ case "nucleotideInsertions":
13647
+ return singleGraphColorRGBByName("indigo", alpha);
13648
+ case "aminoAcidInsertions":
13649
+ return singleGraphColorRGBByName("purple", alpha);
13650
+ }
13190
13651
  };
13191
13652
  const SelectedFilter = ({ handleRemoveValue, mutationFilter }) => {
13192
13653
  return /* @__PURE__ */ u$1(
13193
13654
  "span",
13194
13655
  {
13195
- className: "center p-2 m-1 inline-flex text-black rounded-md",
13656
+ className: "center px-2 py-1 inline-flex text-black rounded-md",
13196
13657
  style: {
13197
13658
  backgroundColor: backgroundColorMap(mutationFilter)
13198
13659
  },
13199
13660
  children: [
13200
13661
  mutationFilter.value.toString(),
13201
- /* @__PURE__ */ u$1("button", { className: "ml-1 cursor-pointer", onClick: () => handleRemoveValue(mutationFilter), children: "×" })
13662
+ /* @__PURE__ */ u$1(
13663
+ "button",
13664
+ {
13665
+ className: "ml-1 cursor-pointer",
13666
+ "aria-label": `remove mutation filter ${mutationFilter.value.code}`,
13667
+ onClick: () => handleRemoveValue(mutationFilter),
13668
+ children: "×"
13669
+ }
13670
+ )
13202
13671
  ]
13203
13672
  },
13204
13673
  mutationFilter.value.toString()
13205
13674
  );
13206
13675
  };
13207
13676
  function mapToMutationFilterStrings(selectedFilters) {
13208
- return {
13209
- aminoAcidMutations: selectedFilters.aminoAcidMutations.map((mutation) => mutation.toString()),
13210
- nucleotideMutations: selectedFilters.nucleotideMutations.map((mutation) => mutation.toString()),
13211
- aminoAcidInsertions: selectedFilters.aminoAcidInsertions.map((insertion) => insertion.toString()),
13212
- nucleotideInsertions: selectedFilters.nucleotideInsertions.map((insertion) => insertion.toString())
13213
- };
13677
+ return selectedFilters.reduce(
13678
+ (acc, filter) => {
13679
+ switch (filter.type) {
13680
+ case "nucleotideMutations":
13681
+ return { ...acc, nucleotideMutations: [...acc.nucleotideMutations, filter.value.toString()] };
13682
+ case "aminoAcidMutations":
13683
+ return { ...acc, aminoAcidMutations: [...acc.aminoAcidMutations, filter.value.toString()] };
13684
+ case "nucleotideInsertions":
13685
+ return { ...acc, nucleotideInsertions: [...acc.nucleotideInsertions, filter.value.toString()] };
13686
+ case "aminoAcidInsertions":
13687
+ return { ...acc, aminoAcidInsertions: [...acc.aminoAcidInsertions, filter.value.toString()] };
13688
+ }
13689
+ },
13690
+ {
13691
+ aminoAcidMutations: [],
13692
+ nucleotideMutations: [],
13693
+ aminoAcidInsertions: [],
13694
+ nucleotideInsertions: []
13695
+ }
13696
+ );
13214
13697
  }
13215
13698
  var __defProp$1 = Object.defineProperty;
13216
13699
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;