feat: architecture refactor — core layer, spreadsheet engine, envelope bidding, tests
CI / quality (push) Waiting to run

- Add src/core/ (config, errors, events, http, observability, storage, query)
- Add src/Spreadsheet/ engine with native POI backend and Excel bridge
- Add Envelope C spreadsheet flow and tender bidding envelope modules
- Consolidate components into src/components/, remove legacy Component/ and Hooks/
- Add registration state/validation, auth session guard, profile edit modules
- Add unit tests across axios, redux, bidding, registration, encryption, core
- Add CI workflow, docs (architecture, audit, DSC API spec), keystore example
- Remove tracked keystore binary; ignore scripts.zip

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Abin Toppo
2026-07-16 10:20:22 +05:30
co-authored by Claude Fable 5
parent 9acec328a7
commit 1d7646d938
217 changed files with 11068 additions and 6855 deletions
+63
View File
@@ -0,0 +1,63 @@
/**
* Derives a spreadsheet-specific palette from the app theme so the grid matches
* the product and supports light + dark mode out of the box.
*/
import { useMemo } from 'react';
import { useTheme } from '../../Hooks/useTheme';
export interface GridTheme {
isDark: boolean;
background: string;
gridLine: string;
headerBg: string;
headerText: string;
headerActiveBg: string;
cellText: string;
mutedText: string;
selectionFill: string;
selectionBorder: string;
laneHighlight: string;
readOnlyBg: string;
errorBorder: string;
errorFill: string;
editorBg: string;
editorBorder: string;
searchHighlight: string;
lockIcon: string;
primary: string;
surface: string;
}
export const useGridTheme = (): GridTheme => {
const { colors, isDarkMode } = useTheme();
return useMemo<GridTheme>(
() => ({
isDark: isDarkMode,
background: isDarkMode ? '#1b1c1d' : '#ffffff',
gridLine: isDarkMode ? 'rgba(255,255,255,0.12)' : 'rgba(15,23,42,0.12)',
headerBg: isDarkMode ? '#2b2c2e' : '#f1f5f9',
headerText: isDarkMode ? '#cbd5e1' : '#475569',
headerActiveBg: colors.primary,
cellText: colors.text,
mutedText: colors.textSecondary,
selectionFill: isDarkMode ? 'rgba(227,149,70,0.20)' : 'rgba(227,149,70,0.16)',
selectionBorder: colors.primary,
laneHighlight: isDarkMode ? 'rgba(227,149,70,0.10)' : 'rgba(227,149,70,0.08)',
readOnlyBg: isDarkMode ? 'rgba(255,255,255,0.05)' : 'rgba(15,23,42,0.045)',
errorBorder: colors.error,
errorFill: isDarkMode ? 'rgba(248,113,113,0.16)' : 'rgba(239,68,68,0.10)',
editorBg: colors.surface,
editorBorder: colors.primary,
searchHighlight: isDarkMode ? 'rgba(253,186,116,0.30)' : 'rgba(253,186,116,0.45)',
lockIcon: '#000000',
primary: colors.primary,
surface: colors.surface,
}),
[colors, isDarkMode],
);
};
export default useGridTheme;