diff --git a/.github/workflows/frontend-licenses-update.yml b/.github/workflows/frontend-licenses-update.yml index fc3f3f9a9..33f295640 100644 --- a/.github/workflows/frontend-licenses-update.yml +++ b/.github/workflows/frontend-licenses-update.yml @@ -12,6 +12,7 @@ on: branches: - V2 paths: + - ".github/workflows/frontend-licenses-update.yml" - "frontend/package.json" - "frontend/package-lock.json" - "frontend/scripts/generate-licenses.js" @@ -28,12 +29,12 @@ jobs: repository-projects: write # Required for enabling automerge steps: - name: Harden Runner - uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2 + uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1 with: egress-policy: audit - name: Checkout PR head (default) - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: fetch-depth: 0 persist-credentials: false @@ -48,7 +49,7 @@ jobs: - name: Checkout BASE branch (safe script) if: github.event_name == 'pull_request' - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: ref: ${{ github.event.pull_request.base.sha }} path: base @@ -56,9 +57,9 @@ jobs: persist-credentials: false - name: Set up Node.js - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0 + uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: - node-version: '18' + node-version: '22' cache: 'npm' cache-dependency-path: frontend/package-lock.json @@ -114,7 +115,7 @@ jobs: # PR Event: Check licenses and comment on PR - name: Delete previous license check comments if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: github-token: ${{ steps.setup-bot.outputs.token }} script: | @@ -167,7 +168,7 @@ jobs: - name: Comment on PR - License Check Results if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork == false - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: github-token: ${{ steps.setup-bot.outputs.token }} script: | diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index da9a14eb5..529da2643 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,4 +1,4 @@ -import React, { Suspense } from "react"; +import { Suspense } from "react"; import { RainbowThemeProvider } from "./components/shared/RainbowThemeProvider"; import { FileContextProvider } from "./contexts/FileContext"; import { NavigationProvider } from "./contexts/NavigationContext"; diff --git a/frontend/src/components/shared/FilePickerModal.tsx b/frontend/src/components/shared/FilePickerModal.tsx index fde20f014..9bb2694a1 100644 --- a/frontend/src/components/shared/FilePickerModal.tsx +++ b/frontend/src/components/shared/FilePickerModal.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react'; +import { useState, useEffect } from 'react'; import { Modal, Text, diff --git a/frontend/src/components/shared/FileUploadButton.tsx b/frontend/src/components/shared/FileUploadButton.tsx index 434aad1b4..f09cc19d0 100644 --- a/frontend/src/components/shared/FileUploadButton.tsx +++ b/frontend/src/components/shared/FileUploadButton.tsx @@ -1,4 +1,4 @@ -import React, { useRef } from "react"; +import { useRef } from "react"; import { FileButton, Button } from "@mantine/core"; import { useTranslation } from "react-i18next"; diff --git a/frontend/src/components/shared/Footer.tsx b/frontend/src/components/shared/Footer.tsx index 137914617..0c94efa0e 100644 --- a/frontend/src/components/shared/Footer.tsx +++ b/frontend/src/components/shared/Footer.tsx @@ -1,5 +1,4 @@ import { Flex } from '@mantine/core'; -import React from 'react'; import { useTranslation } from 'react-i18next'; import { useCookieConsent } from '../../hooks/useCookieConsent'; diff --git a/frontend/src/components/shared/MultiSelectControls.tsx b/frontend/src/components/shared/MultiSelectControls.tsx index 11790abf8..b6e0b24b9 100644 --- a/frontend/src/components/shared/MultiSelectControls.tsx +++ b/frontend/src/components/shared/MultiSelectControls.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { Box, Group, Text, Button } from "@mantine/core"; import { useTranslation } from "react-i18next"; @@ -37,7 +36,7 @@ const MultiSelectControls = ({ > {t("fileManager.clearSelection", "Clear Selection")} - + {onAddToUpload && ( ); -} +}; export default OperationButton; diff --git a/frontend/src/components/tools/shared/ResultsPreview.tsx b/frontend/src/components/tools/shared/ResultsPreview.tsx index 2ff0868d2..586700b85 100644 --- a/frontend/src/components/tools/shared/ResultsPreview.tsx +++ b/frontend/src/components/tools/shared/ResultsPreview.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import { useState } from 'react'; import { Box, Text, Loader, Stack, Center, Flex } from '@mantine/core'; import FilePreview from '../../shared/FilePreview'; import FileMetadata from './FileMetadata'; diff --git a/frontend/src/components/tools/shared/ToolStep.tsx b/frontend/src/components/tools/shared/ToolStep.tsx index 4d9c5a187..e20af455c 100644 --- a/frontend/src/components/tools/shared/ToolStep.tsx +++ b/frontend/src/components/tools/shared/ToolStep.tsx @@ -149,7 +149,7 @@ const ToolStep = ({ ); -} +}; // ToolStepFactory for creating numbered steps export function createToolSteps() { @@ -164,13 +164,16 @@ export function createToolSteps() { const isVisible = props.isVisible !== false; const currentStepNumber = isVisible ? stepNumber++ : undefined; - const step = React.createElement(ToolStep, { - ...props, - title, - _stepNumber: currentStepNumber, - children, - key: `step-${title.toLowerCase().replace(/\s+/g, '-')}` - }); + const step = React.createElement( + ToolStep, + { + ...props, + title, + _stepNumber: currentStepNumber, + key: `step-${title.toLowerCase().replace(/\s+/g, '-')}` + }, + children + ); steps.push(step); return step; @@ -186,9 +189,9 @@ export function createToolSteps() { const getVisibleCount = () => { return steps.filter(step => { - const props = step.props as ToolStepProps; - const isVisible = props.isVisible !== false; - const excludeFromCount = props._excludeFromCount === true; + const stepProps = step.props as ToolStepProps; + const isVisible = stepProps.isVisible !== false; + const excludeFromCount = stepProps._excludeFromCount === true; return isVisible && !excludeFromCount; }).length; }; @@ -203,9 +206,9 @@ export function ToolStepProvider({ children, forceStepNumbers }: { children: Rea let count = 0; React.Children.forEach(children, (child) => { if (React.isValidElement(child) && child.type === ToolStep) { - const props = child.props as ToolStepProps; - const isVisible = props.isVisible !== false; - const excludeFromCount = props._excludeFromCount === true; + const stepProps = child.props as ToolStepProps; + const isVisible = stepProps.isVisible !== false; + const excludeFromCount = stepProps._excludeFromCount === true; if (isVisible && !excludeFromCount) count++; } }); diff --git a/frontend/src/components/tools/sign/SignSettings.tsx b/frontend/src/components/tools/sign/SignSettings.tsx index 74dc83d39..887aa24a6 100644 --- a/frontend/src/components/tools/sign/SignSettings.tsx +++ b/frontend/src/components/tools/sign/SignSettings.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react'; +import { useState, useEffect } from 'react'; import { useTranslation } from "react-i18next"; import { Stack, Button, Text, Alert, Tabs } from '@mantine/core'; import { SignParameters } from "../../../hooks/tools/sign/useSignParameters"; @@ -256,4 +256,4 @@ const SignSettings = ({ ); }; -export default SignSettings; \ No newline at end of file +export default SignSettings; diff --git a/frontend/src/components/tools/split/SplitSettings.tsx b/frontend/src/components/tools/split/SplitSettings.tsx index dc7c02480..ca20c24cc 100644 --- a/frontend/src/components/tools/split/SplitSettings.tsx +++ b/frontend/src/components/tools/split/SplitSettings.tsx @@ -158,6 +158,6 @@ const SplitSettings = ({ {parameters.method === SPLIT_METHODS.BY_PAGE_DIVIDER && renderByPageDividerForm()} ); -} +}; export default SplitSettings; diff --git a/frontend/src/components/tools/toolPicker/ToolSearch.tsx b/frontend/src/components/tools/toolPicker/ToolSearch.tsx index a3ef4216a..90b86f4ef 100644 --- a/frontend/src/components/tools/toolPicker/ToolSearch.tsx +++ b/frontend/src/components/tools/toolPicker/ToolSearch.tsx @@ -1,4 +1,4 @@ -import React, { useState, useRef, useEffect, useMemo } from "react"; +import { useState, useRef, useEffect, useMemo } from "react"; import { Stack, Button, Text } from "@mantine/core"; import { useTranslation } from "react-i18next"; import LocalIcon from '../../shared/LocalIcon'; diff --git a/frontend/src/components/viewer/CustomSearchLayer.tsx b/frontend/src/components/viewer/CustomSearchLayer.tsx index 9df19a230..62e49d861 100644 --- a/frontend/src/components/viewer/CustomSearchLayer.tsx +++ b/frontend/src/components/viewer/CustomSearchLayer.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useMemo } from 'react'; +import { useState, useEffect, useMemo } from 'react'; import { useSearch } from '@embedpdf/plugin-search/react'; import { useViewer } from '../../contexts/ViewerContext'; import { SEARCH_CONSTANTS } from './constants/search'; @@ -24,9 +24,9 @@ interface SearchResultState { activeResultIndex?: number; } -export function CustomSearchLayer({ - pageIndex, - scale, +export function CustomSearchLayer({ + pageIndex, + scale, highlightColor = SEARCH_CONSTANTS.HIGHLIGHT_COLORS.BACKGROUND, activeHighlightColor = SEARCH_CONSTANTS.HIGHLIGHT_COLORS.ACTIVE_BACKGROUND, opacity = SEARCH_CONSTANTS.HIGHLIGHT_COLORS.OPACITY, @@ -42,17 +42,17 @@ export function CustomSearchLayer({ if (!searchProvides) { return; } - + const unsubscribe = searchProvides.onSearchResultStateChange?.((state: SearchResultState) => { // Auto-scroll to active search result if (state?.results && state.activeResultIndex !== undefined && state.activeResultIndex >= 0) { const activeResult = state.results[state.activeResultIndex]; - if (activeResult) { + if (activeResult) { const pageNumber = activeResult.pageIndex + 1; // Convert to 1-based page number scrollActions.scrollToPage(pageNumber); } } - + setSearchResultState(state); }); @@ -69,7 +69,7 @@ export function CustomSearchLayer({ const filtered = searchResultState.results .map((result, originalIndex) => ({ result, originalIndex })) .filter(({ result }) => result.pageIndex === pageIndex); - + return filtered; }, [searchResultState, pageIndex]); @@ -78,7 +78,7 @@ export function CustomSearchLayer({ } return ( -
); -} \ No newline at end of file +} diff --git a/frontend/src/components/viewer/LocalEmbedPDFWithAnnotations.tsx b/frontend/src/components/viewer/LocalEmbedPDFWithAnnotations.tsx index af60d8fa8..df9bb8b4c 100644 --- a/frontend/src/components/viewer/LocalEmbedPDFWithAnnotations.tsx +++ b/frontend/src/components/viewer/LocalEmbedPDFWithAnnotations.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useMemo, useState } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { createPluginRegistration } from '@embedpdf/core'; import { EmbedPDF } from '@embedpdf/core/react'; import { usePdfiumEngine } from '@embedpdf/engines/react'; @@ -312,4 +312,4 @@ export function LocalEmbedPDFWithAnnotations({
); -} \ No newline at end of file +} diff --git a/frontend/src/components/viewer/PdfViewerToolbar.tsx b/frontend/src/components/viewer/PdfViewerToolbar.tsx index f4e64d5a5..48373ba02 100644 --- a/frontend/src/components/viewer/PdfViewerToolbar.tsx +++ b/frontend/src/components/viewer/PdfViewerToolbar.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react'; +import { useState, useEffect } from 'react'; import { Button, Paper, Group, NumberInput } from '@mantine/core'; import { useTranslation } from 'react-i18next'; import { useViewer } from '../../contexts/ViewerContext'; @@ -14,11 +14,11 @@ interface PdfViewerToolbarProps { currentPage?: number; totalPages?: number; onPageChange?: (page: number) => void; - + // Dual page toggle (placeholder for now) dualPage?: boolean; onDualPageToggle?: () => void; - + // Zoom controls (connected via ViewerContext) currentZoom?: number; } @@ -33,7 +33,7 @@ export function PdfViewerToolbar({ }: PdfViewerToolbarProps) { const { t } = useTranslation(); const { getScrollState, getZoomState, scrollActions, zoomActions, registerImmediateZoomUpdate, registerImmediateScrollUpdate } = useViewer(); - + const scrollState = getScrollState(); const zoomState = getZoomState(); const [pageInput, setPageInput] = useState(scrollState.currentPage || currentPage); @@ -151,7 +151,7 @@ export function PdfViewerToolbar({ input: { width: 48, textAlign: "center", fontWeight: 500, fontSize: 16 }, }} /> - + / {scrollState.totalPages} @@ -229,4 +229,4 @@ export function PdfViewerToolbar({ ); -} \ No newline at end of file +} diff --git a/frontend/src/components/viewer/ThumbnailSidebar.tsx b/frontend/src/components/viewer/ThumbnailSidebar.tsx index b78e13774..2f65505c8 100644 --- a/frontend/src/components/viewer/ThumbnailSidebar.tsx +++ b/frontend/src/components/viewer/ThumbnailSidebar.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react'; +import { useState, useEffect } from 'react'; import { Box, ScrollArea } from '@mantine/core'; import { useViewer } from '../../contexts/ViewerContext'; diff --git a/frontend/src/components/viewer/Viewer.tsx b/frontend/src/components/viewer/Viewer.tsx index 49d3a5854..ea2403fd0 100644 --- a/frontend/src/components/viewer/Viewer.tsx +++ b/frontend/src/components/viewer/Viewer.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import EmbedPdfViewer from './EmbedPdfViewer'; export interface ViewerProps { @@ -13,4 +12,4 @@ const Viewer = (props: ViewerProps) => { return ; }; -export default Viewer; \ No newline at end of file +export default Viewer; diff --git a/frontend/src/constants/splitConstants.ts b/frontend/src/constants/splitConstants.ts index 890f94b3c..9f849203e 100644 --- a/frontend/src/constants/splitConstants.ts +++ b/frontend/src/constants/splitConstants.ts @@ -22,7 +22,7 @@ export const ENDPOINTS = { export type SplitMethod = typeof SPLIT_METHODS[keyof typeof SPLIT_METHODS]; export const isSplitMethod = (value: string | null): value is SplitMethod => { return Object.values(SPLIT_METHODS).includes(value as SplitMethod); -} +}; import { CardOption } from '../components/shared/CardSelector'; diff --git a/frontend/src/contexts/FileContext.tsx b/frontend/src/contexts/FileContext.tsx index 921c88333..f67a1acee 100644 --- a/frontend/src/contexts/FileContext.tsx +++ b/frontend/src/contexts/FileContext.tsx @@ -12,7 +12,7 @@ * Memory management handled by FileLifecycleManager (PDF.js cleanup, blob URL revocation). */ -import React, { useReducer, useCallback, useEffect, useRef, useMemo } from 'react'; +import { useReducer, useCallback, useEffect, useRef, useMemo } from 'react'; import { FileContextProviderProps, FileContextSelectors, @@ -76,7 +76,7 @@ function FileContextInner({ const currentSelection = stateRef.current.ui.selectedFileIds; const newFileIds = stirlingFiles.map(stirlingFile => stirlingFile.fileId); dispatch({ type: 'SET_SELECTED_FILES', payload: { fileIds: [...currentSelection, ...newFileIds] } }); - } + }; // File operations using unified addFiles helper with persistence const addRawFiles = useCallback(async (files: File[], options?: { insertAfterPageId?: string; selectFiles?: boolean }): Promise => { diff --git a/frontend/src/contexts/SidebarContext.tsx b/frontend/src/contexts/SidebarContext.tsx index 64315fd45..1035cfb99 100644 --- a/frontend/src/contexts/SidebarContext.tsx +++ b/frontend/src/contexts/SidebarContext.tsx @@ -1,4 +1,4 @@ -import React, { createContext, useContext, useState, useRef, useMemo } from 'react'; +import { createContext, useContext, useState, useRef, useMemo } from 'react'; import { SidebarState, SidebarRefs, SidebarContextValue, SidebarProviderProps } from '../types/sidebar'; const SidebarContext = createContext(undefined); @@ -7,7 +7,7 @@ export function SidebarProvider({ children }: SidebarProviderProps) { // All sidebar state management const quickAccessRef = useRef(null); const toolPanelRef = useRef(null); - + const [sidebarsVisible, setSidebarsVisible] = useState(true); const [leftPanelView, setLeftPanelView] = useState<'toolPicker' | 'toolContent'>('toolPicker'); const [readerMode, setReaderMode] = useState(false); @@ -44,4 +44,4 @@ export function useSidebarContext(): SidebarContextValue { throw new Error('useSidebarContext must be used within a SidebarProvider'); } return context; -} \ No newline at end of file +} diff --git a/frontend/src/data/useTranslatedToolRegistry.tsx b/frontend/src/data/useTranslatedToolRegistry.tsx index 6d5810055..920c654ee 100644 --- a/frontend/src/data/useTranslatedToolRegistry.tsx +++ b/frontend/src/data/useTranslatedToolRegistry.tsx @@ -92,7 +92,7 @@ import SignSettings from "../components/tools/sign/SignSettings"; import CropSettings from "../components/tools/crop/CropSettings"; import RemoveAnnotations from "../tools/RemoveAnnotations"; import RemoveAnnotationsSettings from "../components/tools/removeAnnotations/RemoveAnnotationsSettings"; -import PageLayoutSettings from "../components/tools/pageLayout/PageLayoutSettings" +import PageLayoutSettings from "../components/tools/pageLayout/PageLayoutSettings"; import ExtractImages from "../tools/ExtractImages"; import ExtractImagesSettings from "../components/tools/extractImages/ExtractImagesSettings"; import ReplaceColorSettings from "../components/tools/replaceColor/ReplaceColorSettings"; diff --git a/frontend/src/services/zipFileService.ts b/frontend/src/services/zipFileService.ts index daca80e51..36321ffa0 100644 --- a/frontend/src/services/zipFileService.ts +++ b/frontend/src/services/zipFileService.ts @@ -11,7 +11,7 @@ interface CompressedObject { const getData = (zipEntry: JSZipObject): CompressedObject | undefined => { return (zipEntry as any)._data as CompressedObject; -} +}; export interface ZipExtractionResult { success: boolean; diff --git a/frontend/src/setupTests.ts b/frontend/src/setupTests.ts index b640be3b6..38456157a 100644 --- a/frontend/src/setupTests.ts +++ b/frontend/src/setupTests.ts @@ -1,5 +1,5 @@ -import '@testing-library/jest-dom' -import { vi } from 'vitest' +import '@testing-library/jest-dom'; +import { vi } from 'vitest'; // Mock i18next for tests vi.mock('react-i18next', () => ({ @@ -27,8 +27,8 @@ vi.mock('i18next-http-backend', () => ({ })); // Mock window.URL.createObjectURL and revokeObjectURL for tests -global.URL.createObjectURL = vi.fn(() => 'mocked-url') -global.URL.revokeObjectURL = vi.fn() +global.URL.createObjectURL = vi.fn(() => 'mocked-url'); +global.URL.revokeObjectURL = vi.fn(); // Mock File and Blob API methods that aren't available in jsdom if (!globalThis.File.prototype.arrayBuffer) { @@ -88,21 +88,21 @@ global.Worker = vi.fn().mockImplementation(() => ({ removeEventListener: vi.fn(), onmessage: null, onerror: null, -})) +})); // Mock ResizeObserver for Mantine components global.ResizeObserver = vi.fn().mockImplementation(() => ({ observe: vi.fn(), unobserve: vi.fn(), disconnect: vi.fn(), -})) +})); // Mock IntersectionObserver for components that might use it global.IntersectionObserver = vi.fn().mockImplementation(() => ({ observe: vi.fn(), unobserve: vi.fn(), disconnect: vi.fn(), -})) +})); // Mock matchMedia for responsive components Object.defineProperty(window, 'matchMedia', { @@ -117,7 +117,7 @@ Object.defineProperty(window, 'matchMedia', { removeEventListener: vi.fn(), dispatchEvent: vi.fn(), })), -}) +}); // Set global test timeout to prevent hangs -vi.setConfig({ testTimeout: 5000, hookTimeout: 5000 }) +vi.setConfig({ testTimeout: 5000, hookTimeout: 5000 }); diff --git a/frontend/src/tests/convert/ConvertIntegration.test.tsx b/frontend/src/tests/convert/ConvertIntegration.test.tsx index c2398dab7..a7a6cda06 100644 --- a/frontend/src/tests/convert/ConvertIntegration.test.tsx +++ b/frontend/src/tests/convert/ConvertIntegration.test.tsx @@ -452,7 +452,7 @@ describe('Convert Tool Integration Tests', () => { const files = [ createPDFFile(), createTestStirlingFile('test2.pdf', '%PDF-1.4...', 'application/pdf') - ] + ]; const parameters: ConvertParameters = { fromExtension: 'pdf', toExtension: 'png', diff --git a/frontend/src/tools/OCR.tsx b/frontend/src/tools/OCR.tsx index c8a30fea4..c480972ad 100644 --- a/frontend/src/tools/OCR.tsx +++ b/frontend/src/tools/OCR.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { useEndpointEnabled } from "../hooks/useEndpointConfig"; import { useFileSelection } from "../contexts/FileContext"; diff --git a/frontend/src/tools/RemovePages.tsx b/frontend/src/tools/RemovePages.tsx index 5ae0f6934..ec3e9762d 100644 --- a/frontend/src/tools/RemovePages.tsx +++ b/frontend/src/tools/RemovePages.tsx @@ -1,4 +1,3 @@ -import React from "react"; import { useTranslation } from "react-i18next"; import { createToolFlow } from "../components/tools/shared/createToolFlow"; import { BaseToolProps, ToolComponent } from "../types/tool"; diff --git a/frontend/src/tools/ReorganizePages.tsx b/frontend/src/tools/ReorganizePages.tsx index 5f940a7ae..e2a68e883 100644 --- a/frontend/src/tools/ReorganizePages.tsx +++ b/frontend/src/tools/ReorganizePages.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from "react"; +import { useEffect } from "react"; import { useTranslation } from "react-i18next"; import { createToolFlow } from "../components/tools/shared/createToolFlow"; import { BaseToolProps, ToolComponent } from "../types/tool"; diff --git a/frontend/src/types/automation.ts b/frontend/src/types/automation.ts index 8d9667fcf..78acc81b4 100644 --- a/frontend/src/types/automation.ts +++ b/frontend/src/types/automation.ts @@ -66,8 +66,3 @@ export interface SuggestedAutomation { updatedAt: string; icon: any; // MUI Icon component } - -// Export the AutomateParameters interface that was previously defined inline -export interface AutomateParameters extends AutomationExecutionCallbacks { - automationConfig?: AutomationConfig; -} \ No newline at end of file diff --git a/frontend/src/utils/scarfTracking.ts b/frontend/src/utils/scarfTracking.ts index 1d88da97c..1c6688b00 100644 --- a/frontend/src/utils/scarfTracking.ts +++ b/frontend/src/utils/scarfTracking.ts @@ -17,7 +17,7 @@ export function firePixel(pathname: string): void { lastFiredTime = now; const url = 'https://static.scarf.sh/a.png?x-pxid=3c1d68de-8945-4e9f-873f-65320b6fabf7' - + '&path=' + encodeURIComponent(pathname) + + '&path=' + encodeURIComponent(pathname); const img = new Image(); img.referrerPolicy = "no-referrer-when-downgrade"; diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index 405c2bbc1..327bb64a0 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -63,11 +63,11 @@ module.exports = { background: 'rgb(var(--background) / )', border: 'rgb(var(--border) / )', }, - + // Z-index scale zIndex: { 'dropdown': '1000', - 'sticky': '1020', + 'sticky': '1020', 'fixed': '1030', 'modal-backdrop': '1040', 'modal': '1050', @@ -81,4 +81,4 @@ module.exports = { corePlugins: { preflight: true, }, -} \ No newline at end of file +}; diff --git a/frontend/vitest.config.ts b/frontend/vitest.config.ts index c31c17675..dd393c6be 100644 --- a/frontend/vitest.config.ts +++ b/frontend/vitest.config.ts @@ -1,4 +1,4 @@ -import { defineConfig } from 'vitest/config' +import { defineConfig } from 'vitest/config'; import react from '@vitejs/plugin-react-swc'; export default defineConfig({ @@ -37,4 +37,4 @@ export default defineConfig({ '@': '/src' } } -}) +}); diff --git a/frontend/vitest.minimal.config.ts b/frontend/vitest.minimal.config.ts index 335af4e9c..c6c9b5672 100644 --- a/frontend/vitest.minimal.config.ts +++ b/frontend/vitest.minimal.config.ts @@ -1,4 +1,4 @@ -import { defineConfig } from 'vitest/config' +import { defineConfig } from 'vitest/config'; export default defineConfig({ test: { @@ -6,4 +6,4 @@ export default defineConfig({ testTimeout: 5000, include: ['src/utils/convertUtils.test.ts'] }, -}) \ No newline at end of file +});