@the-syllabus/analysis-renderers 0.2.0
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.
- package/dist/cells/RelationshipCardCell.d.ts +10 -0
- package/dist/cells/RelationshipCardCell.d.ts.map +1 -0
- package/dist/cells/RelationshipCardCell.js +91 -0
- package/dist/cells/RelationshipCardCell.js.map +1 -0
- package/dist/cells/TacticCardCell.d.ts +12 -0
- package/dist/cells/TacticCardCell.d.ts.map +1 -0
- package/dist/cells/TacticCardCell.js +77 -0
- package/dist/cells/TacticCardCell.js.map +1 -0
- package/dist/cells/TemplateCardCell.d.ts +29 -0
- package/dist/cells/TemplateCardCell.d.ts.map +1 -0
- package/dist/cells/TemplateCardCell.js +202 -0
- package/dist/cells/TemplateCardCell.js.map +1 -0
- package/dist/cells/index.d.ts +15 -0
- package/dist/cells/index.d.ts.map +1 -0
- package/dist/cells/index.js +85 -0
- package/dist/cells/index.js.map +1 -0
- package/dist/components/ConditionCards.d.ts +18 -0
- package/dist/components/ConditionCards.d.ts.map +1 -0
- package/dist/components/ConditionCards.js +28 -0
- package/dist/components/ConditionCards.js.map +1 -0
- package/dist/components/EvidenceTrail.d.ts +54 -0
- package/dist/components/EvidenceTrail.d.ts.map +1 -0
- package/dist/components/EvidenceTrail.js +98 -0
- package/dist/components/EvidenceTrail.js.map +1 -0
- package/dist/dispatch/SubRendererDispatch.d.ts +39 -0
- package/dist/dispatch/SubRendererDispatch.d.ts.map +1 -0
- package/dist/dispatch/SubRendererDispatch.js +153 -0
- package/dist/dispatch/SubRendererDispatch.js.map +1 -0
- package/dist/hooks/useProseExtraction.d.ts +38 -0
- package/dist/hooks/useProseExtraction.d.ts.map +1 -0
- package/dist/hooks/useProseExtraction.js +93 -0
- package/dist/hooks/useProseExtraction.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/provenance/ProvenanceSectionIcon.d.ts +15 -0
- package/dist/provenance/ProvenanceSectionIcon.d.ts.map +1 -0
- package/dist/provenance/ProvenanceSectionIcon.js +11 -0
- package/dist/provenance/ProvenanceSectionIcon.js.map +1 -0
- package/dist/renderers/AccordionRenderer.d.ts +29 -0
- package/dist/renderers/AccordionRenderer.d.ts.map +1 -0
- package/dist/renderers/AccordionRenderer.js +315 -0
- package/dist/renderers/AccordionRenderer.js.map +1 -0
- package/dist/renderers/CardGridRenderer.d.ts +24 -0
- package/dist/renderers/CardGridRenderer.d.ts.map +1 -0
- package/dist/renderers/CardGridRenderer.js +321 -0
- package/dist/renderers/CardGridRenderer.js.map +1 -0
- package/dist/renderers/CardRenderer.d.ts +27 -0
- package/dist/renderers/CardRenderer.d.ts.map +1 -0
- package/dist/renderers/CardRenderer.js +337 -0
- package/dist/renderers/CardRenderer.js.map +1 -0
- package/dist/renderers/IdeaEvolutionRenderer.d.ts +16 -0
- package/dist/renderers/IdeaEvolutionRenderer.d.ts.map +1 -0
- package/dist/renderers/IdeaEvolutionRenderer.js +187 -0
- package/dist/renderers/IdeaEvolutionRenderer.js.map +1 -0
- package/dist/renderers/ProseRenderer.d.ts +10 -0
- package/dist/renderers/ProseRenderer.d.ts.map +1 -0
- package/dist/renderers/ProseRenderer.js +42 -0
- package/dist/renderers/ProseRenderer.js.map +1 -0
- package/dist/renderers/RawJsonRenderer.d.ts +8 -0
- package/dist/renderers/RawJsonRenderer.d.ts.map +1 -0
- package/dist/renderers/RawJsonRenderer.js +17 -0
- package/dist/renderers/RawJsonRenderer.js.map +1 -0
- package/dist/renderers/StatSummaryRenderer.d.ts +12 -0
- package/dist/renderers/StatSummaryRenderer.d.ts.map +1 -0
- package/dist/renderers/StatSummaryRenderer.js +93 -0
- package/dist/renderers/StatSummaryRenderer.js.map +1 -0
- package/dist/renderers/SynthesisRenderer.d.ts +15 -0
- package/dist/renderers/SynthesisRenderer.d.ts.map +1 -0
- package/dist/renderers/SynthesisRenderer.js +60 -0
- package/dist/renderers/SynthesisRenderer.js.map +1 -0
- package/dist/renderers/TableRenderer.d.ts +19 -0
- package/dist/renderers/TableRenderer.d.ts.map +1 -0
- package/dist/renderers/TableRenderer.js +273 -0
- package/dist/renderers/TableRenderer.js.map +1 -0
- package/dist/styles/accordion.css +376 -0
- package/dist/styles/index.css +5 -0
- package/dist/styles/renderers.css +1049 -0
- package/dist/sub-renderers/SubRenderers.d.ts +73 -0
- package/dist/sub-renderers/SubRenderers.d.ts.map +1 -0
- package/dist/sub-renderers/SubRenderers.js +2462 -0
- package/dist/sub-renderers/SubRenderers.js.map +1 -0
- package/dist/tokens/DesignTokenContext.d.ts +40 -0
- package/dist/tokens/DesignTokenContext.d.ts.map +1 -0
- package/dist/tokens/DesignTokenContext.js +408 -0
- package/dist/tokens/DesignTokenContext.js.map +1 -0
- package/dist/types/designTokens.d.ts +220 -0
- package/dist/types/designTokens.d.ts.map +1 -0
- package/dist/types/designTokens.js +8 -0
- package/dist/types/designTokens.js.map +1 -0
- package/dist/types/index.d.ts +32 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/styles.d.ts +38 -0
- package/dist/types/styles.d.ts.map +1 -0
- package/dist/types/styles.js +14 -0
- package/dist/types/styles.js.map +1 -0
- package/dist/utils/tokenFlattener.d.ts +14 -0
- package/dist/utils/tokenFlattener.d.ts.map +1 -0
- package/dist/utils/tokenFlattener.js +56 -0
- package/dist/utils/tokenFlattener.js.map +1 -0
- package/package.json +31 -0
- package/src/cells/TemplateCardCell.tsx +439 -0
- package/src/cells/index.ts +98 -0
- package/src/components/ConditionCards.tsx +109 -0
- package/src/components/EvidenceTrail.tsx +203 -0
- package/src/dispatch/SubRendererDispatch.tsx +282 -0
- package/src/hooks/useProseExtraction.ts +125 -0
- package/src/index.ts +82 -0
- package/src/provenance/ProvenanceSectionIcon.tsx +19 -0
- package/src/renderers/AccordionRenderer.tsx +609 -0
- package/src/renderers/CardGridRenderer.tsx +608 -0
- package/src/renderers/CardRenderer.tsx +517 -0
- package/src/renderers/ProseRenderer.tsx +85 -0
- package/src/renderers/RawJsonRenderer.tsx +37 -0
- package/src/renderers/StatSummaryRenderer.tsx +182 -0
- package/src/renderers/TableRenderer.tsx +470 -0
- package/src/styles/accordion.css +376 -0
- package/src/styles/index.css +5 -0
- package/src/styles/renderers.css +1049 -0
- package/src/sub-renderers/SubRenderers.tsx +3487 -0
- package/src/tokens/DesignTokenContext.tsx +502 -0
- package/src/types/designTokens.ts +236 -0
- package/src/types/index.ts +53 -0
- package/src/types/styles.ts +44 -0
- package/src/utils/tokenFlattener.ts +64 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RelationshipCardCell — Domain-specific cell renderer for relationship
|
|
3
|
+
* classification items (prior work -> relationship type analysis).
|
|
4
|
+
*
|
|
5
|
+
* Supports both v2 extraction schema (flat fields from relationship_extraction
|
|
6
|
+
* template) and legacy schema (classification.primary_type, prior_work_info).
|
|
7
|
+
*/
|
|
8
|
+
import { CellRendererProps } from '../types';
|
|
9
|
+
export declare function RelationshipCardCell({ item }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=RelationshipCardCell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelationshipCardCell.d.ts","sourceRoot":"","sources":["../../src/cells/RelationshipCardCell.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,wBAAgB,oBAAoB,CAAC,EAAE,IAAI,EAAE,EAAE,iBAAiB,2CAuO/D"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* RelationshipCardCell — Domain-specific cell renderer for relationship
|
|
4
|
+
* classification items (prior work -> relationship type analysis).
|
|
5
|
+
*
|
|
6
|
+
* Supports both v2 extraction schema (flat fields from relationship_extraction
|
|
7
|
+
* template) and legacy schema (classification.primary_type, prior_work_info).
|
|
8
|
+
*/
|
|
9
|
+
import { useState } from 'react';
|
|
10
|
+
import { useDesignTokens } from '../tokens/DesignTokenContext';
|
|
11
|
+
export function RelationshipCardCell({ item }) {
|
|
12
|
+
const { getCategoryColor } = useDesignTokens();
|
|
13
|
+
const [evidenceExpanded, setEvidenceExpanded] = useState(false);
|
|
14
|
+
// --- Resolve fields: v2 flat schema with fallback to legacy ---
|
|
15
|
+
const classification = item.classification;
|
|
16
|
+
const priorWorkInfo = item.prior_work_info;
|
|
17
|
+
// Title: v2 work_title > _display_title > legacy prior_work_info.title > item.title
|
|
18
|
+
const title = String(item.work_title || item._display_title || priorWorkInfo?.title || item.title || item.docKey || '');
|
|
19
|
+
// Year
|
|
20
|
+
const year = item.work_year || priorWorkInfo?.year || item.year;
|
|
21
|
+
// Relationship type: v2 relationship_type > legacy classification.primary_type
|
|
22
|
+
const relationshipType = String(item.relationship_type || classification?.primary_type || '');
|
|
23
|
+
// Relationship strength (v2 only)
|
|
24
|
+
const relationshipStrength = String(item.relationship_strength || '');
|
|
25
|
+
// Summary: v2 summary > legacy classification.reasoning
|
|
26
|
+
const summary = String(item.summary || classification?.reasoning || '');
|
|
27
|
+
// Influence channels (v2)
|
|
28
|
+
const influenceChannels = (item.influence_channels || []);
|
|
29
|
+
// Key evidence (v2)
|
|
30
|
+
const keyEvidence = (item.key_evidence || []);
|
|
31
|
+
// Vocabulary contributed (v2)
|
|
32
|
+
const vocabularyContributed = (item.vocabulary_contributed || []);
|
|
33
|
+
// Centrality assessment (v2)
|
|
34
|
+
const centralityAssessment = String(item.centrality_assessment || '');
|
|
35
|
+
// What would be lost (v2)
|
|
36
|
+
const whatWouldBeLost = String(item.what_would_be_lost || '');
|
|
37
|
+
// Legacy fields
|
|
38
|
+
const analysisFocus = classification?.recommended_analysis_focus;
|
|
39
|
+
const aspectsToProbe = classification?.key_aspects_to_probe;
|
|
40
|
+
// Style lookups
|
|
41
|
+
const typeStyle = getCategoryColor('relationship', relationshipType);
|
|
42
|
+
const strengthStyle = relationshipStrength
|
|
43
|
+
? getCategoryColor('strength', relationshipStrength)
|
|
44
|
+
: null;
|
|
45
|
+
return (_jsxs("div", { className: "gen-rel-card", style: { borderLeftColor: typeStyle?.border || 'var(--dt-border-light)' }, children: [_jsxs("div", { className: "gen-rel-card-header", children: [_jsx("strong", { children: title }), year ? _jsx("span", { className: "gen-work-year", children: String(year) }) : null] }), _jsxs("div", { style: { display: 'flex', gap: '0.5rem', flexWrap: 'wrap', marginBottom: '0.5rem' }, children: [relationshipType && (_jsx("span", { style: {
|
|
46
|
+
display: 'inline-block',
|
|
47
|
+
padding: '2px 8px',
|
|
48
|
+
borderRadius: '4px',
|
|
49
|
+
fontSize: '0.75rem',
|
|
50
|
+
fontWeight: 600,
|
|
51
|
+
backgroundColor: typeStyle?.bg || 'var(--dt-surface-alt)',
|
|
52
|
+
color: typeStyle?.text || 'var(--dt-text-muted)',
|
|
53
|
+
border: `1px solid ${typeStyle?.border || 'var(--dt-border-light)'}`,
|
|
54
|
+
}, children: typeStyle?.label || relationshipType.replace(/_/g, ' ') })), strengthStyle && (_jsx("span", { style: {
|
|
55
|
+
display: 'inline-block',
|
|
56
|
+
padding: '2px 8px',
|
|
57
|
+
borderRadius: '4px',
|
|
58
|
+
fontSize: '0.75rem',
|
|
59
|
+
fontWeight: 600,
|
|
60
|
+
backgroundColor: strengthStyle.bg,
|
|
61
|
+
color: strengthStyle.text,
|
|
62
|
+
border: `1px solid ${strengthStyle.border}`,
|
|
63
|
+
}, children: strengthStyle.label }))] }), summary && _jsx("p", { className: "gen-rel-reasoning", children: summary }), influenceChannels.length > 0 && (_jsxs("div", { style: { marginTop: '0.5rem' }, children: [_jsx("strong", { style: { fontSize: '0.8rem', color: 'var(--dt-text-muted)' }, children: "Influence channels:" }), _jsx("div", { style: { display: 'flex', gap: '0.375rem', flexWrap: 'wrap', marginTop: '0.25rem' }, children: influenceChannels.map((ch, i) => (_jsx("span", { title: ch.description, style: {
|
|
64
|
+
display: 'inline-block',
|
|
65
|
+
padding: '2px 6px',
|
|
66
|
+
borderRadius: '3px',
|
|
67
|
+
fontSize: '0.72rem',
|
|
68
|
+
backgroundColor: 'var(--dt-surface-alt)',
|
|
69
|
+
color: 'var(--dt-text-default)',
|
|
70
|
+
border: '1px solid var(--dt-border-light)',
|
|
71
|
+
cursor: 'default',
|
|
72
|
+
}, children: ch.channel.replace(/_/g, ' ') }, i))) })] })), vocabularyContributed.length > 0 && (_jsxs("div", { style: { marginTop: '0.5rem' }, children: [_jsx("strong", { style: { fontSize: '0.8rem', color: 'var(--dt-text-muted)' }, children: "Vocabulary contributed:" }), _jsx("div", { style: { display: 'flex', gap: '0.25rem', flexWrap: 'wrap', marginTop: '0.25rem' }, children: vocabularyContributed.map((term, i) => (_jsx("span", { style: {
|
|
73
|
+
display: 'inline-block',
|
|
74
|
+
padding: '1px 5px',
|
|
75
|
+
borderRadius: '3px',
|
|
76
|
+
fontSize: '0.72rem',
|
|
77
|
+
fontStyle: 'italic',
|
|
78
|
+
backgroundColor: 'var(--dt-surface-alt, #eff6ff)',
|
|
79
|
+
color: 'var(--dt-text-accent, #1e40af)',
|
|
80
|
+
border: '1px solid var(--dt-border-light, #bfdbfe)',
|
|
81
|
+
}, children: term }, i))) })] })), keyEvidence.length > 0 && (_jsxs("div", { style: { marginTop: '0.5rem' }, children: [_jsxs("strong", { style: { fontSize: '0.8rem', color: 'var(--dt-text-muted)', cursor: 'pointer', userSelect: 'none' }, onClick: () => setEvidenceExpanded(!evidenceExpanded), children: [evidenceExpanded ? '\u25BC' : '\u25B6', " Key evidence (", keyEvidence.length, ")"] }), evidenceExpanded && (_jsx("div", { style: { marginTop: '0.25rem' }, children: keyEvidence.map((ev, i) => (_jsxs("div", { style: { marginBottom: '0.375rem', paddingLeft: '0.5rem', borderLeft: '2px solid var(--dt-border-light)' }, children: [_jsxs("span", { style: { fontSize: '0.72rem', color: 'var(--dt-text-muted)', fontWeight: 600 }, children: [ev.evidence_type.replace(/_/g, ' '), ":"] }), _jsx("span", { style: { fontSize: '0.8rem', marginLeft: '0.25rem' }, children: ev.description }), ev.quote && (_jsx("blockquote", { style: {
|
|
82
|
+
margin: '0.25rem 0 0 0',
|
|
83
|
+
padding: '0.25rem 0.5rem',
|
|
84
|
+
fontSize: '0.75rem',
|
|
85
|
+
fontStyle: 'italic',
|
|
86
|
+
color: 'var(--dt-text-muted)',
|
|
87
|
+
borderLeft: '3px solid var(--dt-border-light)',
|
|
88
|
+
backgroundColor: 'var(--dt-surface-alt)',
|
|
89
|
+
}, children: ev.quote }))] }, i))) }))] })), centralityAssessment && (_jsxs("p", { style: { fontSize: '0.8rem', color: 'var(--dt-text-muted)', marginTop: '0.5rem' }, children: [_jsx("strong", { children: "Centrality:" }), " ", centralityAssessment] })), whatWouldBeLost && (_jsxs("p", { style: { fontSize: '0.8rem', color: 'var(--dt-text-muted)', fontStyle: 'italic', marginTop: '0.25rem' }, children: [_jsx("strong", { children: "Without this work:" }), " ", whatWouldBeLost] })), analysisFocus && !summary && (_jsxs("p", { className: "gen-rel-focus", children: [_jsx("strong", { children: "Analysis focus:" }), " ", analysisFocus] })), aspectsToProbe && aspectsToProbe.length > 0 && !influenceChannels.length && (_jsxs("div", { className: "gen-rel-aspects", children: [_jsx("strong", { children: "Key aspects to probe:" }), _jsx("ul", { children: aspectsToProbe.map((aspect, i) => (_jsx("li", { children: aspect }, i))) })] }))] }));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=RelationshipCardCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RelationshipCardCell.js","sourceRoot":"","sources":["../../src/cells/RelationshipCardCell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TacticCardCell — Editorial-quality cell renderer for evolution tactic items.
|
|
3
|
+
*
|
|
4
|
+
* Renders tactic cards with:
|
|
5
|
+
* - Severity-scaled visual weight (major → dominant, minor → subdued)
|
|
6
|
+
* - Evidence trail via reusable EvidenceTrail component
|
|
7
|
+
* - Cross-reference idea chips with color accents
|
|
8
|
+
* - Type-coded header with descriptive context
|
|
9
|
+
*/
|
|
10
|
+
import { CellRendererProps } from '../types';
|
|
11
|
+
export declare function TacticCardCell({ item, config }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=TacticCardCell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TacticCardCell.d.ts","sourceRoot":"","sources":["../../src/cells/TacticCardCell.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAqB7C,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAiIjE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* TacticCardCell — Editorial-quality cell renderer for evolution tactic items.
|
|
4
|
+
*
|
|
5
|
+
* Renders tactic cards with:
|
|
6
|
+
* - Severity-scaled visual weight (major → dominant, minor → subdued)
|
|
7
|
+
* - Evidence trail via reusable EvidenceTrail component
|
|
8
|
+
* - Cross-reference idea chips with color accents
|
|
9
|
+
* - Type-coded header with descriptive context
|
|
10
|
+
*/
|
|
11
|
+
import { useState } from 'react';
|
|
12
|
+
import { useDesignTokens } from '../tokens/DesignTokenContext';
|
|
13
|
+
import { EvidenceTrail } from '../components/EvidenceTrail';
|
|
14
|
+
/** Tactic descriptions — domain metadata, not theming */
|
|
15
|
+
const TACTIC_DESCRIPTIONS = {
|
|
16
|
+
conceptual_recycling: 'Repurposing earlier concepts under new theoretical guises',
|
|
17
|
+
silent_revision: 'Revising positions without acknowledging the change',
|
|
18
|
+
selective_continuity: 'Maintaining some threads while quietly dropping others',
|
|
19
|
+
retroactive_framing: 'Reinterpreting past work through a later lens',
|
|
20
|
+
escalation: 'Progressively intensifying a claim or position over time',
|
|
21
|
+
narrative_bootstrapping: 'Building authority by narrating one\'s own trajectory',
|
|
22
|
+
framework_migration: 'Moving core ideas into a different theoretical home',
|
|
23
|
+
condition_shift: 'Redefining what counts as a precondition for one\'s argument',
|
|
24
|
+
biographical_teleology: 'Treating an intellectual career as if it always aimed at the present',
|
|
25
|
+
strategic_amnesia: 'Selectively forgetting earlier commitments that conflict with current ones',
|
|
26
|
+
vocabulary_migration: 'Shifting key terms to new semantic fields',
|
|
27
|
+
position_reversal: 'Adopting a stance previously argued against',
|
|
28
|
+
strategic_ambiguity: 'Deliberately maintaining interpretive flexibility',
|
|
29
|
+
};
|
|
30
|
+
export function TacticCardCell({ item, config }) {
|
|
31
|
+
const { getCategoryColor, getSemanticColor, getLabel } = useDesignTokens();
|
|
32
|
+
const [evidenceCollapsed, setEvidenceCollapsed] = useState(true);
|
|
33
|
+
const tacticType = String(item.tactic_type || '');
|
|
34
|
+
const colors = getCategoryColor('tactic', tacticType) || { bg: '#f8fafc', text: '#334155', border: '#e2e8f0' };
|
|
35
|
+
const severityKey = String(item.severity || 'minor').toLowerCase();
|
|
36
|
+
const severity = getSemanticColor('severity', severityKey) || { bg: 'rgba(34, 197, 94, 0.15)', text: '#16a34a', border: '#bbf7d0' };
|
|
37
|
+
const isMajor = severityKey === 'major';
|
|
38
|
+
const isMinor = severityKey === 'minor';
|
|
39
|
+
const ideaIds = item.idea_ids_involved;
|
|
40
|
+
const priorRefs = item.prior_work_references;
|
|
41
|
+
const currentEvidence = item.current_work_evidence;
|
|
42
|
+
const tacticName = item.tactic_name ? String(item.tactic_name) : '';
|
|
43
|
+
const tacticLabel = getLabel('tactic', tacticType);
|
|
44
|
+
const showName = Boolean(tacticName && tacticName !== tacticLabel);
|
|
45
|
+
const hasPrior = Boolean(priorRefs && priorRefs.length > 0);
|
|
46
|
+
const hasCurrent = Boolean(currentEvidence && currentEvidence.length > 0);
|
|
47
|
+
const hasAssessment = Boolean(item.assessment);
|
|
48
|
+
// Build evidence trail steps from tactic fields
|
|
49
|
+
const evidenceSteps = [];
|
|
50
|
+
if (hasPrior) {
|
|
51
|
+
evidenceSteps.push({
|
|
52
|
+
label: 'Prior work',
|
|
53
|
+
variant: 'prior',
|
|
54
|
+
items: priorRefs.map(r => ({ title: r.work_title, quote: r.relevant_quote })),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
if (hasCurrent) {
|
|
58
|
+
evidenceSteps.push({
|
|
59
|
+
label: 'Current work',
|
|
60
|
+
variant: 'current',
|
|
61
|
+
items: currentEvidence.map(e => ({ quote: e.quote, cite: e.location })),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (hasAssessment) {
|
|
65
|
+
evidenceSteps.push({
|
|
66
|
+
label: 'Assessment',
|
|
67
|
+
variant: 'assessment',
|
|
68
|
+
text: String(item.assessment),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const pieceCount = evidenceSteps.reduce((n, s) => n + (s.items?.length || (s.text ? 1 : 0)), 0);
|
|
72
|
+
return (_jsxs("div", { className: `gen-tactic-card gen-tactic-card--${severityKey}`, style: {
|
|
73
|
+
borderLeftColor: colors.text,
|
|
74
|
+
borderLeftWidth: isMajor ? '5px' : '3px',
|
|
75
|
+
}, children: [_jsxs("div", { className: "gen-tactic-header", children: [_jsx("span", { className: "gen-tactic-type-badge", style: { background: colors.bg, color: colors.text, borderColor: colors.border }, children: tacticLabel || tacticType.replace(/_/g, ' ') }), _jsx("span", { className: `gen-severity-badge gen-severity-badge--${severityKey}`, style: { background: severity.bg, color: severity.text }, children: severityKey })] }), showName && (_jsx("h4", { className: "gen-tactic-name", children: tacticName })), _jsx("p", { className: `gen-tactic-desc ${isMinor ? 'gen-tactic-desc--subdued' : ''}`, children: String(item.description || '') }), ideaIds && ideaIds.length > 0 ? (_jsxs("div", { className: "gen-tactic-ideas", children: [_jsx("span", { className: "gen-tactic-section-label", children: "Ideas involved" }), _jsx("div", { className: "gen-idea-tags", children: ideaIds.map(id => (_jsx("span", { className: "gen-idea-tag gen-idea-tag--linked", title: `See idea ${id} in Idea Evolution Map`, children: id }, id))) })] })) : null, evidenceSteps.length > 0 ? (_jsxs("div", { className: "gen-evidence-trail", children: [_jsxs("button", { type: "button", className: `gen-evidence-toggle${evidenceCollapsed ? ' gen-evidence-toggle--collapsed' : ''}`, onClick: (e) => { e.stopPropagation(); setEvidenceCollapsed(!evidenceCollapsed); }, children: [_jsx("span", { className: "gen-evidence-toggle-icon", children: '\u25B6' }), _jsx("span", { className: "gen-evidence-toggle-label", children: "Evidence Trail" }), _jsx("span", { className: "gen-evidence-count", children: pieceCount })] }), !evidenceCollapsed && (_jsx(EvidenceTrail, { steps: evidenceSteps, accentColor: colors.text, borderColor: colors.border }))] })) : null] }));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=TacticCardCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TacticCardCell.js","sourceRoot":"","sources":["../../src/cells/TacticCardCell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TemplateCardCell -- Schema-driven card renderer.
|
|
3
|
+
*
|
|
4
|
+
* Instead of hardcoding field→UI mapping in React, this cell renderer
|
|
5
|
+
* interprets a `card_template` JSON structure from the view definition.
|
|
6
|
+
* Each "slot" in the template maps to an atomic rendering block:
|
|
7
|
+
*
|
|
8
|
+
* badge_row -- Row of colored badges (category or semantic colors)
|
|
9
|
+
* heading -- Title text, optionally hidden when it matches a label
|
|
10
|
+
* prose -- Paragraph text with optional subdued state
|
|
11
|
+
* chip_list -- Array of string chips with optional link hints
|
|
12
|
+
* evidence_trail -- Multi-step evidence chain (prior -> current -> assessment)
|
|
13
|
+
* key_value -- Key-value pairs rendered as a compact table
|
|
14
|
+
* separator -- Visual divider
|
|
15
|
+
*
|
|
16
|
+
* Template schema (in renderer_config.card_template):
|
|
17
|
+
* {
|
|
18
|
+
* wrapper_class?: string, -- CSS class for outer div
|
|
19
|
+
* border_accent?: ColorRef, -- Border-left color from design tokens
|
|
20
|
+
* border_weight_field?: string, -- Field to read for border thickness
|
|
21
|
+
* border_weight_map?: Record<string, string>, -- value -> CSS width
|
|
22
|
+
* slots: SlotConfig[] -- Ordered list of content blocks
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
25
|
+
* New renderers = new JSON. No React code needed.
|
|
26
|
+
*/
|
|
27
|
+
import { CellRendererProps } from '../types';
|
|
28
|
+
export declare function TemplateCardCell({ item, config }: CellRendererProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
//# sourceMappingURL=TemplateCardCell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateCardCell.d.ts","sourceRoot":"","sources":["../../src/cells/TemplateCardCell.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AA8W7C,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CA4CnE"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* TemplateCardCell -- Schema-driven card renderer.
|
|
4
|
+
*
|
|
5
|
+
* Instead of hardcoding field→UI mapping in React, this cell renderer
|
|
6
|
+
* interprets a `card_template` JSON structure from the view definition.
|
|
7
|
+
* Each "slot" in the template maps to an atomic rendering block:
|
|
8
|
+
*
|
|
9
|
+
* badge_row -- Row of colored badges (category or semantic colors)
|
|
10
|
+
* heading -- Title text, optionally hidden when it matches a label
|
|
11
|
+
* prose -- Paragraph text with optional subdued state
|
|
12
|
+
* chip_list -- Array of string chips with optional link hints
|
|
13
|
+
* evidence_trail -- Multi-step evidence chain (prior -> current -> assessment)
|
|
14
|
+
* key_value -- Key-value pairs rendered as a compact table
|
|
15
|
+
* separator -- Visual divider
|
|
16
|
+
*
|
|
17
|
+
* Template schema (in renderer_config.card_template):
|
|
18
|
+
* {
|
|
19
|
+
* wrapper_class?: string, -- CSS class for outer div
|
|
20
|
+
* border_accent?: ColorRef, -- Border-left color from design tokens
|
|
21
|
+
* border_weight_field?: string, -- Field to read for border thickness
|
|
22
|
+
* border_weight_map?: Record<string, string>, -- value -> CSS width
|
|
23
|
+
* slots: SlotConfig[] -- Ordered list of content blocks
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* New renderers = new JSON. No React code needed.
|
|
27
|
+
*/
|
|
28
|
+
import { useState } from 'react';
|
|
29
|
+
import { useDesignTokens } from '../tokens/DesignTokenContext';
|
|
30
|
+
import { EvidenceTrail } from '../components/EvidenceTrail';
|
|
31
|
+
// ── Block: badge_row ───────────────────────────────────
|
|
32
|
+
function BadgeRowBlock({ badges, item, getCategoryColor, getSemanticColor, getLabel }) {
|
|
33
|
+
return (_jsx("div", { className: "ar-card-badge-row", children: badges.map((badge, idx) => {
|
|
34
|
+
const rawValue = String(item[badge.field] || badge.default_value || '');
|
|
35
|
+
if (!rawValue)
|
|
36
|
+
return null;
|
|
37
|
+
let displayValue = rawValue;
|
|
38
|
+
let colors = null;
|
|
39
|
+
if (badge.color_mode === 'category' && badge.color_category) {
|
|
40
|
+
colors = getCategoryColor(badge.color_category, rawValue);
|
|
41
|
+
displayValue = getLabel(badge.color_category, rawValue) || rawValue.replace(/_/g, ' ');
|
|
42
|
+
}
|
|
43
|
+
else if (badge.color_mode === 'semantic' && badge.color_scale) {
|
|
44
|
+
const key = rawValue.toLowerCase();
|
|
45
|
+
const tokenKey = badge.value_map?.[key] || key;
|
|
46
|
+
colors = getSemanticColor(badge.color_scale, tokenKey);
|
|
47
|
+
displayValue = key;
|
|
48
|
+
}
|
|
49
|
+
if (badge.transform === 'lowercase')
|
|
50
|
+
displayValue = displayValue.toLowerCase();
|
|
51
|
+
else if (badge.transform === 'uppercase')
|
|
52
|
+
displayValue = displayValue.toUpperCase();
|
|
53
|
+
else if (badge.transform === 'titlecase')
|
|
54
|
+
displayValue = displayValue.replace(/\b\w/g, c => c.toUpperCase());
|
|
55
|
+
const fallback = { bg: '#f8fafc', text: '#334155', border: '#e2e8f0' };
|
|
56
|
+
const c = colors || fallback;
|
|
57
|
+
const isSemantic = badge.color_mode === 'semantic';
|
|
58
|
+
const className = isSemantic
|
|
59
|
+
? `ar-severity-badge ar-severity-badge--${rawValue.toLowerCase()}`
|
|
60
|
+
: 'ar-card-type-badge';
|
|
61
|
+
return (_jsx("span", { className: className, style: { background: c.bg, color: c.text, borderColor: c.border }, children: displayValue }, idx));
|
|
62
|
+
}) }));
|
|
63
|
+
}
|
|
64
|
+
// ── Block: heading ─────────────────────────────────────
|
|
65
|
+
function HeadingBlock({ field, item, hideWhenMatchesLabel, getLabel }) {
|
|
66
|
+
const text = String(item[field] || '');
|
|
67
|
+
if (!text)
|
|
68
|
+
return null;
|
|
69
|
+
if (hideWhenMatchesLabel) {
|
|
70
|
+
const keyValue = String(item[hideWhenMatchesLabel.key_field] || '');
|
|
71
|
+
const label = getLabel(hideWhenMatchesLabel.category, keyValue);
|
|
72
|
+
if (text === label)
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return _jsx("h4", { className: "ar-card-heading", children: text });
|
|
76
|
+
}
|
|
77
|
+
// ── Block: prose ───────────────────────────────────────
|
|
78
|
+
function ProseBlock({ field, item, subduedWhen }) {
|
|
79
|
+
const text = String(item[field] || '');
|
|
80
|
+
if (!text)
|
|
81
|
+
return null;
|
|
82
|
+
const isSubdued = subduedWhen
|
|
83
|
+
&& String(item[subduedWhen.field] || '').toLowerCase() === subduedWhen.equals;
|
|
84
|
+
return (_jsx("p", { className: `ar-card-prose${isSubdued ? ' ar-card-prose--subdued' : ''}`, children: text }));
|
|
85
|
+
}
|
|
86
|
+
// ── Block: chip_list ───────────────────────────────────
|
|
87
|
+
function ChipListBlock({ field, item, label, linkTitlePattern }) {
|
|
88
|
+
const values = item[field];
|
|
89
|
+
if (!values || !Array.isArray(values) || values.length === 0)
|
|
90
|
+
return null;
|
|
91
|
+
return (_jsxs("div", { className: "ar-card-chip-list", children: [label && _jsx("span", { className: "ar-card-section-label", children: label }), _jsx("div", { className: "gen-idea-tags", children: values.map(val => (_jsx("span", { className: "gen-idea-tag gen-idea-tag--linked", title: linkTitlePattern ? linkTitlePattern.replace('{value}', val) : undefined, children: val }, val))) })] }));
|
|
92
|
+
}
|
|
93
|
+
// ── Block: evidence_trail ──────────────────────────────
|
|
94
|
+
function EvidenceTrailBlock({ steps, item, label, accentFrom, collapsedByDefault, getCategoryColor }) {
|
|
95
|
+
const [collapsed, setCollapsed] = useState(collapsedByDefault ?? false);
|
|
96
|
+
const trailSteps = [];
|
|
97
|
+
for (const sc of steps) {
|
|
98
|
+
const raw = item[sc.field];
|
|
99
|
+
if (raw === undefined || raw === null || raw === '')
|
|
100
|
+
continue;
|
|
101
|
+
const variant = sc.variant;
|
|
102
|
+
if (sc.is_text || typeof raw === 'string') {
|
|
103
|
+
trailSteps.push({ label: sc.label, variant, text: String(raw) });
|
|
104
|
+
}
|
|
105
|
+
else if (Array.isArray(raw)) {
|
|
106
|
+
const items = raw.map((entry) => {
|
|
107
|
+
if (typeof entry === 'string')
|
|
108
|
+
return { quote: entry };
|
|
109
|
+
if (typeof entry === 'object' && entry !== null) {
|
|
110
|
+
const e = entry;
|
|
111
|
+
return {
|
|
112
|
+
title: sc.item_title_field ? String(e[sc.item_title_field] || '') : undefined,
|
|
113
|
+
quote: sc.item_quote_field ? String(e[sc.item_quote_field] || '') : undefined,
|
|
114
|
+
cite: sc.item_cite_field ? String(e[sc.item_cite_field] || '') : undefined,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return { quote: String(entry) };
|
|
118
|
+
});
|
|
119
|
+
if (items.length > 0) {
|
|
120
|
+
trailSteps.push({ label: sc.label, variant, items });
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (trailSteps.length === 0)
|
|
125
|
+
return null;
|
|
126
|
+
let accentColor;
|
|
127
|
+
let borderColor;
|
|
128
|
+
if (accentFrom) {
|
|
129
|
+
const keyValue = String(item[accentFrom.key_field] || '');
|
|
130
|
+
const colors = getCategoryColor(accentFrom.category, keyValue);
|
|
131
|
+
if (colors) {
|
|
132
|
+
accentColor = colors.text;
|
|
133
|
+
borderColor = colors.border;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Count total evidence pieces for the summary
|
|
137
|
+
const pieceCount = trailSteps.reduce((n, s) => n + (s.items?.length || (s.text ? 1 : 0)), 0);
|
|
138
|
+
return (_jsxs("div", { className: "gen-evidence-trail", children: [_jsxs("button", { type: "button", className: `gen-evidence-toggle${collapsed ? ' gen-evidence-toggle--collapsed' : ''}`, onClick: (e) => { e.stopPropagation(); setCollapsed(!collapsed); }, children: [_jsx("span", { className: "gen-evidence-toggle-icon", children: '\u25B6' }), _jsx("span", { className: "gen-evidence-toggle-label", children: label || 'Evidence Trail' }), _jsx("span", { className: "gen-evidence-count", children: pieceCount })] }), !collapsed && (_jsx(EvidenceTrail, { steps: trailSteps, accentColor: accentColor, borderColor: borderColor }))] }));
|
|
139
|
+
}
|
|
140
|
+
// ── Block: key_value ───────────────────────────────────
|
|
141
|
+
function KeyValueBlock({ entries, item }) {
|
|
142
|
+
const pairs = entries
|
|
143
|
+
.map(e => ({ label: e.label, value: item[e.field] }))
|
|
144
|
+
.filter(p => p.value != null && p.value !== '');
|
|
145
|
+
if (pairs.length === 0)
|
|
146
|
+
return null;
|
|
147
|
+
return (_jsx("div", { className: "gen-template-kv", children: pairs.map((p, idx) => (_jsxs("div", { className: "gen-template-kv-row", children: [_jsx("span", { className: "gen-template-kv-label", children: p.label }), _jsx("span", { className: "gen-template-kv-value", children: String(p.value) })] }, idx))) }));
|
|
148
|
+
}
|
|
149
|
+
// ── Block: separator ───────────────────────────────────
|
|
150
|
+
function SeparatorBlock() {
|
|
151
|
+
return _jsx("hr", { className: "gen-template-separator" });
|
|
152
|
+
}
|
|
153
|
+
// ── Slot dispatcher ────────────────────────────────────
|
|
154
|
+
function TemplateSlot({ slot, item, getCategoryColor, getSemanticColor, getLabel }) {
|
|
155
|
+
switch (slot.type) {
|
|
156
|
+
case 'badge_row':
|
|
157
|
+
return slot.badges ? (_jsx(BadgeRowBlock, { badges: slot.badges, item: item, getCategoryColor: getCategoryColor, getSemanticColor: getSemanticColor, getLabel: getLabel })) : null;
|
|
158
|
+
case 'heading':
|
|
159
|
+
return slot.field ? (_jsx(HeadingBlock, { field: slot.field, item: item, hideWhenMatchesLabel: slot.hide_when_matches_label, getLabel: getLabel })) : null;
|
|
160
|
+
case 'prose':
|
|
161
|
+
return slot.field ? (_jsx(ProseBlock, { field: slot.field, item: item, subduedWhen: slot.subdued_when })) : null;
|
|
162
|
+
case 'chip_list':
|
|
163
|
+
return slot.field ? (_jsx(ChipListBlock, { field: slot.field, item: item, label: slot.label, linkTitlePattern: slot.link_title_pattern })) : null;
|
|
164
|
+
case 'evidence_trail':
|
|
165
|
+
return slot.steps ? (_jsx(EvidenceTrailBlock, { steps: slot.steps, item: item, label: slot.label, accentFrom: slot.accent_from, collapsedByDefault: slot.collapsed_by_default, getCategoryColor: getCategoryColor })) : null;
|
|
166
|
+
case 'key_value':
|
|
167
|
+
return slot.entries ? (_jsx(KeyValueBlock, { entries: slot.entries, item: item })) : null;
|
|
168
|
+
case 'separator':
|
|
169
|
+
return _jsx(SeparatorBlock, {});
|
|
170
|
+
default:
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// ── Main component ─────────────────────────────────────
|
|
175
|
+
export function TemplateCardCell({ item, config }) {
|
|
176
|
+
const { getCategoryColor, getSemanticColor, getLabel } = useDesignTokens();
|
|
177
|
+
const template = config.card_template;
|
|
178
|
+
if (!template || !template.slots) {
|
|
179
|
+
return _jsx("p", { className: "gen-empty", children: "No card template configured." });
|
|
180
|
+
}
|
|
181
|
+
// Compute wrapper styles from template config
|
|
182
|
+
const wrapperClass = template.wrapper_class || '';
|
|
183
|
+
const severityField = template.border_weight_field;
|
|
184
|
+
const severityValue = severityField ? String(item[severityField] || '').toLowerCase() : '';
|
|
185
|
+
const severityModifier = severityValue ? ` ${wrapperClass}--${severityValue}` : '';
|
|
186
|
+
let borderStyle;
|
|
187
|
+
if (template.border_accent) {
|
|
188
|
+
const keyValue = String(item[template.border_accent.key_field] || '');
|
|
189
|
+
const colors = getCategoryColor(template.border_accent.category, keyValue);
|
|
190
|
+
if (colors) {
|
|
191
|
+
const width = template.border_weight_map?.[severityValue] || '4px';
|
|
192
|
+
borderStyle = {
|
|
193
|
+
borderTopColor: colors.text,
|
|
194
|
+
borderTopWidth: width,
|
|
195
|
+
borderTopStyle: 'solid',
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const className = `${wrapperClass}${severityModifier}`.trim() || undefined;
|
|
200
|
+
return (_jsx("div", { className: className, style: borderStyle, children: template.slots.map((slot, idx) => (_jsx(TemplateSlot, { slot: slot, item: item, getCategoryColor: getCategoryColor, getSemanticColor: getSemanticColor, getLabel: getLabel }, idx))) }));
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=TemplateCardCell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TemplateCardCell.js","sourceRoot":"","sources":["../../src/cells/TemplateCardCell.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cell Renderer Registry — Domain-specific card content components.
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import type { CellRendererProps, CellRendererComponent } from '../types';
|
|
6
|
+
export type { CellRendererProps, CellRendererComponent };
|
|
7
|
+
/** Registry of cell renderers keyed by config.cell_renderer string */
|
|
8
|
+
export declare const cellRenderers: Record<string, CellRendererComponent>;
|
|
9
|
+
/**
|
|
10
|
+
* Default cell renderer — auto-classifies item fields into visual tiers.
|
|
11
|
+
*/
|
|
12
|
+
export declare function DefaultCardCell({ item, config }: CellRendererProps): React.DetailedReactHTMLElement<{
|
|
13
|
+
className: string;
|
|
14
|
+
}, HTMLElement>;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cells/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEzE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;AAEzD,sEAAsE;AACtE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAE/D,CAAC;AAoBF;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB;;gBA6DlE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cell Renderer Registry — Domain-specific card content components.
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { TemplateCardCell } from './TemplateCardCell';
|
|
6
|
+
/** Registry of cell renderers keyed by config.cell_renderer string */
|
|
7
|
+
export const cellRenderers = {
|
|
8
|
+
template_card: TemplateCardCell,
|
|
9
|
+
};
|
|
10
|
+
// Field classification for intelligent rendering
|
|
11
|
+
const TITLE_FIELDS = ['name', 'title', 'finding', 'concept', 'idea', 'theme'];
|
|
12
|
+
const BODY_FIELDS = ['condition', 'description', 'analysis', 'significance', 'explanation', 'mechanism', 'details', 'summary', 'how_it_enables', 'how_it_constrains', 'effect'];
|
|
13
|
+
const EVIDENCE_FIELDS = ['evidence', 'reasoning', 'supporting_evidence', 'rationale', 'justification'];
|
|
14
|
+
const META_FIELDS = new Set(['_category', 'docKey', 'condition_id', 'id', 'index', 'order']);
|
|
15
|
+
function classifyField(key) {
|
|
16
|
+
if (META_FIELDS.has(key))
|
|
17
|
+
return 'skip';
|
|
18
|
+
if (TITLE_FIELDS.includes(key))
|
|
19
|
+
return 'title';
|
|
20
|
+
if (BODY_FIELDS.includes(key))
|
|
21
|
+
return 'body';
|
|
22
|
+
if (EVIDENCE_FIELDS.includes(key))
|
|
23
|
+
return 'evidence';
|
|
24
|
+
return 'tag';
|
|
25
|
+
}
|
|
26
|
+
function formatLabel(key) {
|
|
27
|
+
return key.replace(/_/g, ' ').replace(/\b\w/g, c => c.toUpperCase());
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Default cell renderer — auto-classifies item fields into visual tiers.
|
|
31
|
+
*/
|
|
32
|
+
export function DefaultCardCell({ item, config }) {
|
|
33
|
+
const titleFieldOverride = config.card_title_field;
|
|
34
|
+
const bodyFieldOverride = config.card_body_field;
|
|
35
|
+
let titleText = '';
|
|
36
|
+
let bodyText = '';
|
|
37
|
+
let evidenceText = '';
|
|
38
|
+
const tags = [];
|
|
39
|
+
for (const [key, value] of Object.entries(item)) {
|
|
40
|
+
if (value == null || value === '')
|
|
41
|
+
continue;
|
|
42
|
+
if (typeof value === 'object')
|
|
43
|
+
continue;
|
|
44
|
+
const strVal = String(value);
|
|
45
|
+
if (titleFieldOverride && key === titleFieldOverride) {
|
|
46
|
+
titleText = strVal;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (bodyFieldOverride && key === bodyFieldOverride) {
|
|
50
|
+
bodyText = strVal;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const cls = classifyField(key);
|
|
54
|
+
if (cls === 'skip')
|
|
55
|
+
continue;
|
|
56
|
+
if (cls === 'title' && !titleText) {
|
|
57
|
+
titleText = strVal;
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (cls === 'body' && !bodyText) {
|
|
61
|
+
bodyText = strVal;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (cls === 'evidence' && !evidenceText) {
|
|
65
|
+
evidenceText = strVal;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (cls === 'tag')
|
|
69
|
+
tags.push([key, strVal]);
|
|
70
|
+
}
|
|
71
|
+
if (!titleText && bodyText && bodyText.length < 120) {
|
|
72
|
+
titleText = bodyText;
|
|
73
|
+
bodyText = '';
|
|
74
|
+
}
|
|
75
|
+
return React.createElement('div', { className: 'card-cell-default' }, titleText
|
|
76
|
+
? React.createElement('div', { className: 'card-cell-title' }, titleText.length > 200 ? titleText.slice(0, 200) + '\u2026' : titleText)
|
|
77
|
+
: null, bodyText
|
|
78
|
+
? React.createElement('p', { className: 'card-cell-body' }, bodyText)
|
|
79
|
+
: null, evidenceText
|
|
80
|
+
? React.createElement('blockquote', { className: 'card-cell-evidence' }, evidenceText)
|
|
81
|
+
: null, tags.length > 0
|
|
82
|
+
? React.createElement('div', { className: 'card-cell-tags' }, ...tags.slice(0, 4).map(([k, v]) => React.createElement('span', { key: k, className: 'card-cell-tag' }, React.createElement('span', { className: 'card-cell-tag-label' }, formatLabel(k)), ' ', v.replace(/_/g, ' '))))
|
|
83
|
+
: null);
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cells/index.ts"],"names":[],"mappings":"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"}
|