Files
Stirling-PDF/frontend/package.json
T
James Brunton 99dda7a9f6 Convert Processor tables to be consistent with each other (#7312)
# Description of Changes
Currently, the tables in the processor are inconsistently styled and
function differently to each other because they don't all share the same
table component. This is a big problem since the Processor is a largely
table-based UI and most of most pages in it are tables. This PR creates
a new common `DataTable` component and converts all existing tables in
the Processor (other than those in the docs pages) to use it, tweaking
the individual tables content as necessary so they all work the same.

The `DataTable` component is designed to take minimal JSX as arguments.
Instead, it takes typed data from the caller and it converts that into
JSX, which makes it a lot easier to guarantee that the tables will all
render the same and if we want to update the table styling in the
future, we just need to do it in one place. I also added sorting
capabilities to many of the tables since it was easy with the library
and it was appropriate for many of the existing table columns.

## Table Comparisons

<img width="2296" height="861" alt="AuditTab-comparison"
src="https://github.com/user-attachments/assets/92473508-3f93-45c4-9485-ee21d0d1ecd0"
/>

<img width="2296" height="617" alt="DocumentExtractions-comparison"
src="https://github.com/user-attachments/assets/cf194210-f4c9-42d1-bce1-5a70c0f8fdc5"
/>

<img width="2296" height="369" alt="InstanceHealthTable-comparison"
src="https://github.com/user-attachments/assets/4b048c62-4237-4043-ae89-047df0cd7e60"
/>

<img width="2296" height="2304" alt="Integrations-comparison"
src="https://github.com/user-attachments/assets/9d9edead-8da0-4d49-a249-253579cfdb0e"
/>

<img width="2296" height="521" alt="InvoicesList-comparison"
src="https://github.com/user-attachments/assets/2b6d40b7-d63d-404b-a834-79d5fc62ba9d"
/>

<img width="2296" height="348" alt="LinkedInstancesTable-comparison"
src="https://github.com/user-attachments/assets/fb65c660-baa4-4fcd-8893-05be1962fdab"
/>

<img width="2296" height="356" alt="PendingInvitations-comparison"
src="https://github.com/user-attachments/assets/1f0105ed-b1f8-4e4e-998f-57024875a28f"
/>

<img width="2296" height="306" alt="PipelinesTable-comparison"
src="https://github.com/user-attachments/assets/d84255bd-37f3-4245-b2b5-ef8c06c000ae"
/>

<img width="2296" height="652" alt="PolicyCatalogue-comparison"
src="https://github.com/user-attachments/assets/55f25f20-46f0-47c0-aa40-516cbd5acab5"
/>

<img width="2296" height="1221" alt="ReviewQueueTable-comparison"
src="https://github.com/user-attachments/assets/2206a50c-731f-48cc-958f-aad5e30e47b0"
/>

<img width="2296" height="344" alt="SourcesTable-comparison"
src="https://github.com/user-attachments/assets/76b54efb-54ea-42a8-a0b1-b0cb21f73296"
/>

<img width="2296" height="659" alt="UsersDirectory-comparison"
src="https://github.com/user-attachments/assets/524d1b63-efcf-4ac8-a07d-11aa1849c189"
/>
2026-08-17 11:47:08 +00:00

184 lines
6.2 KiB
JSON

{
"name": "frontend",
"version": "0.1.0",
"private": true,
"type": "module",
"license": "SEE LICENSE IN https://raw.githubusercontent.com/Stirling-Tools/Stirling-PDF/refs/heads/main/proprietary/LICENSE",
"proxy": "http://localhost:8080",
"dependencies": {
"@atlaskit/pragmatic-drag-and-drop": "^1.7.7",
"@cantoo/pdf-lib": "^2.5.3",
"@dnd-kit/core": "^6.3.1",
"@embedpdf/core": "^2.14.4",
"@embedpdf/engines": "^2.14.4",
"@embedpdf/models": "^2.14.4",
"@embedpdf/plugin-annotation": "^2.14.4",
"@embedpdf/plugin-attachment": "^2.14.4",
"@embedpdf/plugin-bookmark": "^2.14.4",
"@embedpdf/plugin-document-manager": "^2.14.4",
"@embedpdf/plugin-export": "^2.14.4",
"@embedpdf/plugin-history": "^2.14.4",
"@embedpdf/plugin-interaction-manager": "^2.14.4",
"@embedpdf/plugin-pan": "^2.14.4",
"@embedpdf/plugin-print": "^2.14.4",
"@embedpdf/plugin-redaction": "^2.14.4",
"@embedpdf/plugin-render": "^2.14.4",
"@embedpdf/plugin-rotate": "^2.14.4",
"@embedpdf/plugin-scroll": "^2.14.4",
"@embedpdf/plugin-search": "^2.14.4",
"@embedpdf/plugin-selection": "^2.14.4",
"@embedpdf/plugin-spread": "^2.14.4",
"@embedpdf/plugin-thumbnail": "^2.14.4",
"@embedpdf/plugin-tiling": "^2.14.4",
"@embedpdf/plugin-viewport": "^2.14.4",
"@embedpdf/plugin-zoom": "^2.14.4",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@mantine/core": "^8.3.1",
"@mantine/dates": "^8.3.1",
"@mantine/dropzone": "^8.3.1",
"@mantine/hooks": "^8.3.1",
"@mui/icons-material": "^9.2.0",
"@mui/material": "^9.0.0",
"@posthog/react": "^1.8.2",
"@reactour/tour": "^3.8.0",
"@stripe/react-stripe-js": "^6.8.0",
"@stripe/stripe-js": "^9.10.0",
"@supabase/supabase-js": "^2.47.13",
"@tailwindcss/postcss": "^4.1.13",
"@tanstack/react-query": "^5.101.4",
"@tanstack/react-table": "^9.1.2",
"@tanstack/react-virtual": "^3.13.12",
"@tauri-apps/api": "^2.10.1",
"@tauri-apps/plugin-dialog": "2.7.0",
"@tauri-apps/plugin-fs": "2.5.0",
"@tauri-apps/plugin-http": "^2.5.7",
"@tauri-apps/plugin-notification": "^2.3.3",
"@tauri-apps/plugin-shell": "^2.3.5",
"@userback/widget": "^0.3.12",
"autoprefixer": "^10.4.21",
"axios": "^1.15.0",
"d3": "^7.9.0",
"i18next": "^25.10.10",
"i18next-browser-languagedetector": "^8.2.0",
"jszip": "^3.10.1",
"license-report": "^6.8.0",
"pdfjs-dist": "^5.4.149",
"peerjs": "^1.5.5",
"pixelmatch": "^7.1.0",
"posthog-js": "^1.405.2",
"qrcode.react": "^4.2.0",
"react": "^19.2.8",
"react-dom": "^19.2.8",
"react-easy-crop": "^5.5.6",
"react-i18next": "^16.6.6",
"react-markdown": "^9.0.3",
"react-rnd": "^10.5.2",
"react-router-dom": "^7.9.1",
"recharts": "^3.7.0",
"remark-gfm": "^4.0.1",
"signature_pad": "^5.0.4",
"smol-toml": "^1.4.2",
"tailwindcss": "^4.1.13",
"use-sync-external-store": "^1.6.0",
"web-vitals": "^5.1.0"
},
"scripts": {
"docs:sync": "tsx editor/scripts/sync-portal-docs.mts",
"update:minor": "node scripts/update-minor.js",
"update:major": "npx npm-check-updates -u && npm install",
"update:interactive": "npx npm-check-updates -i",
"update:minor-strict": "npx npm-check-updates -u --target minor && npm install",
"tauri:setup-dev-update": "bash scripts/dev-update-test/setup-dev-updater.sh",
"tauri:build-dev-update": "bash scripts/dev-update-test/build-dev-update.sh",
"tauri:serve-dev-update": "bash scripts/dev-update-test/serve-update.sh",
"tauri:test-update-e2e": "bash scripts/dev-update-test/test-update-e2e.sh",
"tauri:test-update-e2e:install": "bash scripts/dev-update-test/test-update-e2e.sh --install",
"tauri:dev-with-update": "cd editor && npx tsx scripts/setup-env.mts --desktop && node scripts/generate-icons.js && npx tauri dev --config src-tauri/tauri.conf.dev-update.json"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"@iconify-json/material-symbols": "^1.2.83",
"@iconify/react": "^6.0.2",
"@iconify/utils": "^3.1.4",
"@playwright/test": "^1.55.0",
"@storybook/addon-a11y": "^9.1.20",
"@storybook/addon-docs": "^9.1.20",
"@storybook/addon-themes": "^9.1.20",
"@storybook/addon-vitest": "^9.1.20",
"@storybook/react-vite": "^9.1.20",
"@tauri-apps/cli": "^2.9.6",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.8.0",
"@testing-library/react": "^16.3.0",
"@testing-library/user-event": "^14.6.1",
"@types/d3": "^7.4.3",
"@types/gapi": "^0.0.47",
"@types/gapi.client.drive-v3": "^0.0.5",
"@types/google.accounts": "^0.0.18",
"@types/google.picker": "^0.0.51",
"@types/node": "^24.5.2",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"@types/use-sync-external-store": "^0.0.6",
"@typescript/native": "npm:typescript@^7.0.2",
"@vitejs/plugin-react-swc": "^4.1.0",
"@vitest/browser": "3.2.7",
"@vitest/coverage-v8": "3.2.7",
"dotenv": "^16.4.7",
"fake-indexeddb": "^6.2.5",
"jsdom": "^27.0.0",
"json-schema-to-typescript": "^15.0.4",
"license-checker": "^25.0.1",
"msw": "^2.14.6",
"msw-storybook-addon": "^2.0.7",
"oxlint": "^1.77.0",
"postcss": "^8.5.12",
"postcss-cli": "^11.0.1",
"postcss-preset-mantine": "^1.18.0",
"postcss-simple-vars": "^7.0.1",
"prettier": "^3.8.1",
"puppeteer": "^24.25.0",
"rollup-plugin-visualizer": "^7.0.1",
"storybook": "^9.1.20",
"stylelint": "^17.14.1",
"tsx": "^4.22.4",
"typescript": "npm:@typescript/typescript6@^6.0.2",
"vite": "^7.3.2",
"vite-plugin-compression2": "^2.5.3",
"vite-plugin-static-copy": "^3.1.4",
"vite-tsconfig-paths": "^5.1.4",
"vitest": "3.2.7"
},
"depcheck": {
"ignoreMatches": [
"@emotion/*",
"tailwindcss",
"@testing-library/user-event",
"@vitest/coverage-v8"
]
},
"overrides": {
"devalue": "^5.8.1",
"tsconfck": {
"typescript": "$typescript"
}
},
"msw": {
"workerDirectory": [
"editor/public"
]
}
}