Add history window controls and expand taxonomy pack support

- add 3Y/5Y/10Y financial history filtering and reorganize normalization details UI
- add new fiscal taxonomy surface/income bridge/KPI packs and update Rust taxonomy loading
- auto-detect Homebrew SQLite for native `sqlite-vec` in local dev/e2e with docs and env guidance
This commit is contained in:
2026-03-18 23:40:28 -04:00
parent f8426c4dde
commit 17de3dd72d
102 changed files with 14978 additions and 1316 deletions

View File

@@ -91,12 +91,14 @@ function FinancialsToolbarComponent({
const groupedSections = useMemo(() => {
const statementKeys = ["surface"];
const periodKeys = ["cadence"];
const historyKeys = ["history"];
const modeKeys = ["display"];
const scaleKeys = ["scale"];
return {
statement: sections.filter((s) => statementKeys.includes(s.key)),
period: sections.filter((s) => periodKeys.includes(s.key)),
history: sections.filter((s) => historyKeys.includes(s.key)),
mode: sections.filter((s) => modeKeys.includes(s.key)),
scale: sections.filter((s) => scaleKeys.includes(s.key)),
};
@@ -147,6 +149,29 @@ function FinancialsToolbarComponent({
))}
</ControlGroup>
{groupedSections.history.length > 0 && (
<ControlGroup showDivider>
{groupedSections.history.map((section) => (
<Fragment key={section.key}>
{section.options.map((option) => {
const isActive = section.value === option.value;
return (
<Button
key={`${section.key}-${option.value}`}
variant={isActive ? "secondary" : "ghost"}
size="compact"
onClick={() => section.onChange(option.value)}
className="text-xs"
>
{option.label}
</Button>
);
})}
</Fragment>
))}
</ControlGroup>
)}
{groupedSections.mode.length > 0 && (
<ControlGroup showDivider>
{groupedSections.mode.map((section) => (