finsignal-feed-explore 3.43.2 → 3.43.4

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/FeedList.css CHANGED
@@ -15,7 +15,7 @@
15
15
  --news-hover-overlay: rgba(0, 0, 0, 0.04);
16
16
  --news-ai-summary-bg: rgba(120, 99, 246, 0.12);
17
17
  --news-ai-summary-text: rgba(4, 4, 5, 0.88);
18
- --news-stock-card-bg: rgba(4, 4, 5, 0.04);
18
+ --news-stock-card-bg: rgba(4, 4, 5, 0.06);
19
19
  --news-stock-positive: #10b981;
20
20
  --news-stock-negative: #ef4444;
21
21
  --news-action-hover: transparent;
@@ -11,7 +11,7 @@
11
11
  --news-hover-overlay: rgba(0, 0, 0, 0.04);
12
12
  --news-ai-summary-bg: rgba(120, 99, 246, 0.12);
13
13
  --news-ai-summary-text: rgba(4, 4, 5, 0.88);
14
- --news-stock-card-bg: rgba(4, 4, 5, 0.04);
14
+ --news-stock-card-bg: rgba(4, 4, 5, 0.06);
15
15
  --news-stock-positive: #10b981;
16
16
  --news-stock-negative: #ef4444;
17
17
  --news-action-hover: transparent;
@@ -1 +1 @@
1
- {"version":3,"file":"useFeedData.d.ts","sourceRoot":"","sources":["../../src/hooks/useFeedData.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,QAAQ,EAAE,MAAM,UAAU,CAAC;AAG/D,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAwB,EACxB,OAAY,EACZ,KAAK,EACL,OAAY,EACZ,KAAU,EACV,UAAgB,EACjB,EAAE,kBAAkB,GAAG,iBAAiB,CAiNxC"}
1
+ {"version":3,"file":"useFeedData.d.ts","sourceRoot":"","sources":["../../src/hooks/useFeedData.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,QAAQ,EAA0B,MAAM,UAAU,CAAC;AAMvF,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAwED,wBAAgB,WAAW,CAAC,EAC1B,MAAwB,EACxB,OAAY,EACZ,KAAK,EACL,OAAY,EACZ,KAAU,EACV,UAAgB,EACjB,EAAE,kBAAkB,GAAG,iBAAiB,CAqMxC"}
@@ -1,11 +1,129 @@
1
- import { useState, useEffect, useCallback } from 'react';
1
+ import { useState, useEffect, useCallback, useRef } from 'react';
2
2
  import { DEFAULT_API_URL } from '../constants/api';
3
+ const SEMANTIC_FETCH_LIMIT = 200;
4
+ const SEMANTIC_PAGE_SIZE = 20;
5
+ function mapRawItem(item, mode) {
6
+ const rawItem = item;
7
+ const isTrendingFeed = mode === 'trending';
8
+ let summary;
9
+ if (isTrendingFeed) {
10
+ summary = rawItem.metadata?.preprocessing?.results?.ai_annotation?.annotations?.summary;
11
+ }
12
+ else {
13
+ summary = rawItem.preprocessing?.ai_annotation?.annotations?.summary;
14
+ }
15
+ summary = summary || rawItem.newsData?.summary || rawItem.metadata?.newsData?.summary || rawItem.summary;
16
+ let fullContent;
17
+ if (isTrendingFeed) {
18
+ fullContent = rawItem.metadata?.newsData?.content;
19
+ }
20
+ else {
21
+ fullContent = rawItem.newsData?.content;
22
+ }
23
+ const content = rawItem.content || rawItem.body || rawItem.metadata?.body || '';
24
+ const rawStocks = rawItem.stocks;
25
+ const mappedStocksFromStocks = rawStocks?.map((s) => ({
26
+ ...s,
27
+ securityId: s.securityId ?? (s.security_id != null ? Number(s.security_id) : undefined),
28
+ }));
29
+ let entityStocks;
30
+ if (!mappedStocksFromStocks || mappedStocksFromStocks.length === 0) {
31
+ let entities = [];
32
+ if (isTrendingFeed) {
33
+ entities = rawItem.metadata?.preprocessing?.results?.ai_annotation?.annotations?.entities || [];
34
+ }
35
+ else {
36
+ entities = rawItem.preprocessing?.ai_annotation?.annotations?.entities || [];
37
+ if (entities.length === 0 && Array.isArray(rawItem.entityTickers)) {
38
+ entities = rawItem.entityTickers.map((t) => ({ ticker: t }));
39
+ }
40
+ }
41
+ const seenSymbols = new Set();
42
+ entityStocks = entities
43
+ .filter((e) => e.ticker && e.ticker.trim())
44
+ .reduce((acc, e) => {
45
+ const sym = e.ticker.trim().toUpperCase();
46
+ if (!seenSymbols.has(sym)) {
47
+ seenSymbols.add(sym);
48
+ acc.push({ symbol: sym, price: '', change: '', changeType: 'positive' });
49
+ }
50
+ return acc;
51
+ }, []);
52
+ }
53
+ const mappedStocks = mappedStocksFromStocks?.length ? mappedStocksFromStocks : (entityStocks?.length ? entityStocks : undefined);
54
+ return {
55
+ ...rawItem,
56
+ id: rawItem.id || rawItem.content_id,
57
+ content,
58
+ fullContent,
59
+ sourceName: rawItem.newsData?.sourceName || rawItem.metadata?.newsData?.sourceName || rawItem.source?.sourceName || rawItem.sourceName,
60
+ summary,
61
+ timestamp: rawItem.createdAt || rawItem.timestamp || rawItem.created_at || rawItem.publishedAt,
62
+ stocks: mappedStocks,
63
+ };
64
+ }
3
65
  export function useFeedData({ apiUrl = DEFAULT_API_URL, filters = [], query, tickers = [], limit = 20, debounceMs = 500 }) {
4
66
  const [items, setItems] = useState([]);
5
67
  const [isLoading, setIsLoading] = useState(false);
6
68
  const [hasMore, setHasMore] = useState(true);
7
69
  const [error, setError] = useState(null);
8
70
  const [offset, setOffset] = useState(0);
71
+ const semanticBufferRef = useRef([]);
72
+ const semanticPageRef = useRef(0);
73
+ const isSemanticMode = !!(query && query.trim());
74
+ const fetchSemantic = useCallback(async (reset = false) => {
75
+ setIsLoading(true);
76
+ setError(null);
77
+ if (reset) {
78
+ setItems([]);
79
+ semanticBufferRef.current = [];
80
+ semanticPageRef.current = 0;
81
+ }
82
+ try {
83
+ const params = new URLSearchParams();
84
+ params.set('query', query.trim());
85
+ params.set('limit', SEMANTIC_FETCH_LIMIT.toString());
86
+ if (filters.length > 0) {
87
+ filters.forEach(f => params.append('market_events', f));
88
+ }
89
+ if (tickers.length > 0) {
90
+ tickers.forEach(t => params.append('tickers', t));
91
+ }
92
+ const url = `${apiUrl}/api/v1/content/search/semantic?${params.toString()}`;
93
+ const response = await fetch(url);
94
+ if (!response.ok) {
95
+ throw new Error(`HTTP error! status: ${response.status}`);
96
+ }
97
+ const data = await response.json();
98
+ const mapped = (data.items || []).map(item => mapRawItem(item, 'search'));
99
+ semanticBufferRef.current = mapped;
100
+ semanticPageRef.current = 0;
101
+ const firstPage = mapped.slice(0, SEMANTIC_PAGE_SIZE);
102
+ setItems(firstPage);
103
+ semanticPageRef.current = 1;
104
+ setHasMore(mapped.length > SEMANTIC_PAGE_SIZE);
105
+ }
106
+ catch (err) {
107
+ setError(err instanceof Error ? err : new Error('Unknown error'));
108
+ console.error('Error fetching semantic feed:', err);
109
+ }
110
+ finally {
111
+ setIsLoading(false);
112
+ }
113
+ }, [apiUrl, query, filters, tickers]);
114
+ const loadMoreSemantic = useCallback(async () => {
115
+ const buffer = semanticBufferRef.current;
116
+ const page = semanticPageRef.current;
117
+ const start = page * SEMANTIC_PAGE_SIZE;
118
+ if (start >= buffer.length) {
119
+ setHasMore(false);
120
+ return;
121
+ }
122
+ const nextPage = buffer.slice(start, start + SEMANTIC_PAGE_SIZE);
123
+ setItems(prev => [...prev, ...nextPage]);
124
+ semanticPageRef.current = page + 1;
125
+ setHasMore(start + SEMANTIC_PAGE_SIZE < buffer.length);
126
+ }, []);
9
127
  const fetchFeed = useCallback(async (reset = false) => {
10
128
  if (!reset && isLoading)
11
129
  return;
@@ -20,94 +138,31 @@ export function useFeedData({ apiUrl = DEFAULT_API_URL, filters = [], query, tic
20
138
  const params = new URLSearchParams();
21
139
  params.set('limit', limit.toString());
22
140
  params.set('offset', currentOffset.toString());
23
- if (query)
24
- params.set('query', query);
25
141
  if (filters.length > 0) {
26
142
  filters.forEach(filter => params.append('market_events', filter));
27
143
  }
28
144
  if (tickers.length > 0) {
29
145
  tickers.forEach(ticker => params.append('tickers', ticker));
30
146
  }
31
- const endpoint = (query || filters.length > 0 || tickers.length > 0)
32
- ? '/api/v1/content/search'
33
- : '/api/v1/feed/trending';
147
+ const hasFiltersOrTickers = filters.length > 0 || tickers.length > 0;
148
+ const endpoint = hasFiltersOrTickers ? '/api/v1/content/search' : '/api/v1/feed/trending';
149
+ const isFilterSearch = filters.length > 0 && tickers.length === 0;
150
+ const isTickerSearch = !isFilterSearch && tickers.length > 0;
151
+ const isTrendingFeed = !hasFiltersOrTickers;
34
152
  const url = `${apiUrl}${endpoint}?${params.toString()}`;
35
153
  const response = await fetch(url);
36
154
  if (!response.ok) {
37
155
  throw new Error(`HTTP error! status: ${response.status}`);
38
156
  }
39
157
  const data = await response.json();
40
- const isSearchWithQuery = !!query;
41
- const isTickerSearch = !query && tickers.length > 0;
42
- const isFilterSearch = !query && filters.length > 0 && tickers.length === 0;
43
- const isTrendingFeed = !query && filters.length === 0 && tickers.length === 0;
44
158
  const mappedItems = (data.items || [])
45
159
  .filter(item => {
46
160
  if (isFilterSearch) {
47
- const rawItem = item;
48
- return rawItem.score === 1;
161
+ return item.score === 1;
49
162
  }
50
163
  return true;
51
164
  })
52
- .map(item => {
53
- const rawItem = item;
54
- let summary;
55
- if (isTrendingFeed) {
56
- summary = rawItem.metadata?.preprocessing?.results?.ai_annotation?.annotations?.summary;
57
- }
58
- else if (isFilterSearch || isTickerSearch || isSearchWithQuery) {
59
- summary = rawItem.preprocessing?.ai_annotation?.annotations?.summary;
60
- }
61
- summary = summary || rawItem.newsData?.summary || rawItem.metadata?.newsData?.summary || item.summary;
62
- let fullContent;
63
- if (isTrendingFeed) {
64
- fullContent = rawItem.metadata?.newsData?.content;
65
- }
66
- else if (isFilterSearch || isTickerSearch || isSearchWithQuery) {
67
- fullContent = rawItem.newsData?.content;
68
- }
69
- const content = item.content || rawItem.body || rawItem.metadata?.body || '';
70
- const rawStocks = rawItem.stocks || item.stocks;
71
- const mappedStocksFromStocks = rawStocks?.map((s) => ({
72
- ...s,
73
- securityId: s.securityId ?? (s.security_id != null ? Number(s.security_id) : undefined),
74
- }));
75
- let entityStocks;
76
- if (!mappedStocksFromStocks || mappedStocksFromStocks.length === 0) {
77
- let entities = [];
78
- if (isTrendingFeed) {
79
- entities = rawItem.metadata?.preprocessing?.results?.ai_annotation?.annotations?.entities || [];
80
- }
81
- else {
82
- entities = rawItem.preprocessing?.ai_annotation?.annotations?.entities || [];
83
- if (entities.length === 0 && Array.isArray(rawItem.entityTickers)) {
84
- entities = rawItem.entityTickers.map((t) => ({ ticker: t }));
85
- }
86
- }
87
- const seenSymbols = new Set();
88
- entityStocks = entities
89
- .filter((e) => e.ticker && e.ticker.trim())
90
- .reduce((acc, e) => {
91
- const sym = e.ticker.trim().toUpperCase();
92
- if (!seenSymbols.has(sym)) {
93
- seenSymbols.add(sym);
94
- acc.push({ symbol: sym, price: '', change: '', changeType: 'positive' });
95
- }
96
- return acc;
97
- }, []);
98
- }
99
- const mappedStocks = mappedStocksFromStocks?.length ? mappedStocksFromStocks : (entityStocks?.length ? entityStocks : undefined);
100
- return {
101
- ...item,
102
- id: item.id || rawItem.content_id,
103
- content,
104
- fullContent,
105
- sourceName: rawItem.newsData?.sourceName || rawItem.metadata?.newsData?.sourceName || rawItem.source?.sourceName || rawItem.sourceName,
106
- summary,
107
- timestamp: rawItem.createdAt || item.timestamp || rawItem.created_at || rawItem.publishedAt,
108
- stocks: mappedStocks,
109
- };
110
- });
165
+ .map(item => mapRawItem(item, isTrendingFeed ? 'trending' : 'search'));
111
166
  if (reset) {
112
167
  setItems(mappedItems);
113
168
  setOffset(limit);
@@ -136,35 +191,40 @@ export function useFeedData({ apiUrl = DEFAULT_API_URL, filters = [], query, tic
136
191
  finally {
137
192
  setIsLoading(false);
138
193
  }
139
- }, [apiUrl, filters, query, tickers, limit, offset]);
194
+ }, [apiUrl, filters, tickers, limit, offset, isLoading]);
140
195
  useEffect(() => {
141
196
  setHasMore(true);
142
- if (query !== undefined && query !== '') {
197
+ if (isSemanticMode) {
143
198
  const timer = setTimeout(() => {
144
- const loadData = async () => {
145
- await fetchFeed(true);
146
- };
147
- loadData();
199
+ fetchSemantic(true);
148
200
  }, debounceMs);
149
201
  return () => clearTimeout(timer);
150
202
  }
151
- else {
152
- const loadData = async () => {
153
- await fetchFeed(true);
154
- };
155
- loadData();
156
- }
203
+ const loadData = async () => {
204
+ await fetchFeed(true);
205
+ };
206
+ loadData();
157
207
  }, [apiUrl, filters.join(','), query, tickers.join(','), debounceMs]);
158
208
  const loadMore = useCallback(async () => {
159
209
  if (!hasMore || isLoading)
160
210
  return;
161
- await fetchFeed(false);
162
- }, [hasMore, isLoading, fetchFeed]);
211
+ if (isSemanticMode) {
212
+ await loadMoreSemantic();
213
+ }
214
+ else {
215
+ await fetchFeed(false);
216
+ }
217
+ }, [hasMore, isLoading, isSemanticMode, loadMoreSemantic, fetchFeed]);
163
218
  const refresh = useCallback(async () => {
164
219
  setOffset(0);
165
220
  setHasMore(true);
166
- await fetchFeed(true);
167
- }, [fetchFeed]);
221
+ if (isSemanticMode) {
222
+ await fetchSemantic(true);
223
+ }
224
+ else {
225
+ await fetchFeed(true);
226
+ }
227
+ }, [isSemanticMode, fetchSemantic, fetchFeed]);
168
228
  return {
169
229
  items,
170
230
  isLoading,
@@ -1 +1 @@
1
- {"version":3,"file":"useFeedData.js","sourceRoot":"","sources":["../../src/hooks/useFeedData.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useFeedData.js","sourceRoot":"","sources":["../../src/hooks/useFeedData.ts"],"names":[],"mappings":"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"}
package/dist/newsfeed.css CHANGED
@@ -1,8 +1,5 @@
1
1
  @charset "UTF-8";
2
2
  /* Import global variables */
3
- /* Import component styles */
4
- @import './components/FilterButton.css';
5
- @import './components/EmptyState.css';
6
3
  /* CSS Variables for theming - Global for all components */
7
4
  :root {
8
5
  /* Light theme colors */
@@ -15,7 +12,7 @@
15
12
  --news-hover-overlay: rgba(0, 0, 0, 0.04);
16
13
  --news-ai-summary-bg: rgba(120, 99, 246, 0.12);
17
14
  --news-ai-summary-text: rgba(4, 4, 5, 0.88);
18
- --news-stock-card-bg: rgba(4, 4, 5, 0.04);
15
+ --news-stock-card-bg: rgba(4, 4, 5, 0.06);
19
16
  --news-stock-positive: #10b981;
20
17
  --news-stock-negative: #ef4444;
21
18
  --news-action-hover: transparent;
@@ -60,170 +57,361 @@
60
57
  --search-clear-color: rgba(255, 255, 255, 0.32);
61
58
  }
62
59
 
63
- .news-feed {
60
+ /* Base styles */
61
+ .news-snippet {
62
+ border-radius: 0;
63
+ padding: 12px;
64
+ display: flex;
65
+ flex-direction: column;
66
+ gap: 12px;
67
+ cursor: pointer;
64
68
  position: relative;
65
- width: 100%;
66
- height: 100%;
67
- max-width: 600px;
68
- margin: 0 auto;
69
+ background-color: var(--base-bg);
70
+ /* Hover overlay effect */
71
+ }
72
+ .news-snippet::before {
73
+ content: "";
74
+ position: absolute;
75
+ top: 0;
76
+ left: 0;
77
+ right: 0;
78
+ bottom: 0;
79
+ background-color: transparent;
80
+ pointer-events: none;
81
+ }
82
+ .news-snippet:hover::before {
83
+ background-color: var(--news-hover-overlay);
84
+ }
85
+ .news-snippet[draggable=true]:active {
86
+ opacity: 0.5;
87
+ cursor: grabbing;
88
+ }
89
+
90
+ .news-snippet__content {
91
+ display: flex;
92
+ flex-direction: column;
93
+ gap: 8px;
94
+ padding: 4px;
95
+ }
96
+
97
+ /* Header: дата/время слева, категория справа */
98
+ .news-snippet__header {
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: space-between;
102
+ margin-bottom: 4px;
103
+ }
104
+
105
+ .news-snippet__timestamp {
106
+ display: flex;
107
+ align-items: center;
108
+ gap: 4px;
109
+ }
110
+
111
+ .news-snippet__date,
112
+ .news-snippet__time,
113
+ .news-snippet__divider {
114
+ font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
115
+ font-size: 12px;
116
+ font-weight: 400;
117
+ line-height: 16px;
118
+ letter-spacing: -0.2px;
119
+ color: var(--news-text-secondary);
120
+ overflow: hidden;
121
+ text-overflow: ellipsis;
122
+ white-space: nowrap;
123
+ }
124
+
125
+ .news-snippet__time-icon {
126
+ width: 12px;
127
+ height: 12px;
128
+ flex-shrink: 0;
129
+ opacity: 0.56;
130
+ }
131
+ .news-snippet__time-icon path {
132
+ stroke: var(--news-text-primary);
133
+ }
134
+
135
+ .news-snippet__time-text {
136
+ font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
137
+ font-size: 12px;
138
+ font-weight: 400;
139
+ line-height: 16px;
140
+ letter-spacing: -0.2px;
141
+ color: var(--news-text-secondary);
142
+ overflow: hidden;
143
+ text-overflow: ellipsis;
144
+ white-space: nowrap;
145
+ }
146
+
147
+ .news-snippet__category {
148
+ font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
149
+ font-size: 12px;
150
+ font-weight: 500;
151
+ line-height: 16px;
152
+ letter-spacing: -0.2px;
153
+ text-align: right;
154
+ color: var(--news-text-secondary);
155
+ overflow: hidden;
156
+ text-overflow: ellipsis;
157
+ white-space: nowrap;
158
+ }
159
+
160
+ /* Title */
161
+ .news-snippet__title {
69
162
  font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
163
+ font-size: 16px;
164
+ font-weight: 600;
165
+ line-height: 20px;
166
+ letter-spacing: 0em;
167
+ margin: 0;
168
+ color: var(--news-text-primary);
70
169
  overflow: hidden;
170
+ text-overflow: ellipsis;
171
+ white-space: nowrap;
71
172
  }
72
173
 
73
- .news-feed__header {
174
+ /* Source */
175
+ .news-snippet__source {
74
176
  display: flex;
75
- justify-content: flex-end;
76
177
  align-items: center;
77
178
  gap: 8px;
78
- padding: 16px;
79
- margin-bottom: 8px;
80
179
  }
81
180
 
82
- .news-feed__filter-btn {
83
- position: relative;
181
+ .news-snippet__source-logo {
182
+ width: 16px;
183
+ height: 16px;
184
+ border-radius: 50%;
185
+ object-fit: cover;
186
+ flex-shrink: 0;
187
+ }
188
+ .news-snippet__source-logo--fallback {
84
189
  display: flex;
85
190
  align-items: center;
86
191
  justify-content: center;
87
- width: 40px;
88
- height: 40px;
89
- border: none;
90
- background: transparent;
91
- border-radius: 50%;
92
- cursor: pointer;
192
+ background: var(--news-text-tertiary);
193
+ color: var(--base-bg);
194
+ font-size: 10px;
195
+ font-weight: 600;
93
196
  }
94
- .news-feed__filter-btn:hover {
95
- background: rgba(4, 4, 5, 0.06);
197
+
198
+ .news-snippet__source-name {
199
+ font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
200
+ font-size: 12px;
201
+ font-weight: 400;
202
+ line-height: 14px;
203
+ letter-spacing: 0em;
204
+ color: var(--news-text-secondary);
96
205
  }
97
- .news-feed__filter-btn--active {
98
- background: rgba(120, 99, 246, 0.12);
206
+
207
+ /* Content Text */
208
+ .news-snippet__content-text {
209
+ font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
210
+ font-size: 14px;
211
+ font-weight: 400;
212
+ line-height: 18px;
213
+ letter-spacing: 0em;
214
+ margin: 0;
215
+ color: var(--news-text-primary);
216
+ display: -webkit-box;
217
+ -webkit-line-clamp: 3;
218
+ -webkit-box-orient: vertical;
219
+ overflow: hidden;
99
220
  }
100
221
 
101
- .news-feed__filter-badge {
102
- position: absolute;
103
- top: 0;
104
- right: 0;
105
- min-width: 16px;
222
+ /* Cover Image */
223
+ .news-snippet__cover {
224
+ width: 100%;
225
+ height: auto;
226
+ max-height: 200px;
227
+ object-fit: cover;
228
+ border-radius: 8px;
229
+ }
230
+
231
+ /* AI Summary */
232
+ .news-snippet__ai-summary {
233
+ display: flex;
234
+ gap: 8px;
235
+ padding: 8px;
236
+ border-radius: 4px;
237
+ background-color: var(--news-ai-summary-bg);
238
+ }
239
+
240
+ .news-snippet__ai-summary-icon {
241
+ flex-shrink: 0;
242
+ width: 16px;
106
243
  height: 16px;
107
- padding: 0 4px;
108
244
  display: flex;
109
245
  align-items: center;
110
246
  justify-content: center;
111
- background: #ef4444;
112
- border-radius: 8px;
113
- font-size: 10px;
114
- font-weight: 700;
115
- line-height: 12px;
116
- color: #ffffff;
117
247
  }
118
248
 
119
- .news-feed__list {
120
- position: absolute;
121
- top: 0;
122
- left: 0;
123
- right: 0;
124
- bottom: 0;
125
- padding: 0;
126
- overflow-y: auto;
249
+ .news-snippet__ai-summary-text {
250
+ flex: 1;
251
+ font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
252
+ font-size: 12px;
253
+ font-weight: 400;
254
+ line-height: 16px;
255
+ letter-spacing: 0em;
256
+ margin: 0;
257
+ color: var(--news-ai-summary-text);
258
+ }
259
+
260
+ /* Stock Cards */
261
+ .news-snippet__stocks {
127
262
  display: flex;
128
263
  flex-direction: column;
129
- gap: 0;
130
- background-color: var(--base-bg);
131
- scrollbar-width: none;
132
- -ms-overflow-style: none;
133
- }
134
- .news-feed__list::-webkit-scrollbar {
135
- display: none;
264
+ gap: 8px;
136
265
  }
137
- .news-feed__list--hidden {
138
- visibility: hidden;
139
- pointer-events: none;
266
+
267
+ .news-snippet__stock-card {
268
+ display: flex;
269
+ align-items: center;
270
+ justify-content: space-between;
271
+ width: 100%;
272
+ padding: 4px 8px 4px 4px;
273
+ border-radius: 4px;
274
+ background: var(--news-stock-card-bg);
140
275
  }
141
276
 
142
- .news-feed__filters-container {
143
- position: absolute;
144
- top: 0;
145
- left: 0;
146
- right: 0;
147
- bottom: 0;
277
+ .news-snippet__stock-left {
148
278
  display: flex;
149
- flex-direction: column;
150
- overflow: hidden;
279
+ align-items: center;
280
+ gap: 8px;
151
281
  }
152
- .news-feed__filters-container--hidden {
153
- visibility: hidden;
154
- pointer-events: none;
282
+
283
+ .news-snippet__stock-logo {
284
+ width: 20px;
285
+ height: 20px;
286
+ border-radius: 50%;
287
+ object-fit: cover;
288
+ flex-shrink: 0;
289
+ }
290
+ .news-snippet__stock-logo--fallback {
291
+ display: flex;
292
+ align-items: center;
293
+ justify-content: center;
294
+ background: var(--news-text-tertiary);
295
+ color: var(--base-bg);
296
+ font-size: 10px;
297
+ font-weight: 600;
155
298
  }
156
299
 
157
- .news-feed__error {
158
- padding: 24px;
159
- text-align: center;
160
- color: #ef4444;
161
- background: rgba(239, 68, 68, 0.1);
162
- border-radius: 12px;
163
- margin: 0 16px 16px 16px;
164
- }
165
- .news-feed__error small {
166
- display: block;
167
- margin-top: 8px;
168
- font-size: 13px;
169
- color: rgba(239, 68, 68, 0.7);
170
- }
171
-
172
- .news-feed__mock-indicator {
173
- padding: 12px 16px;
174
- text-align: center;
175
- color: rgba(4, 4, 5, 0.56);
176
- background: rgba(120, 99, 246, 0.08);
177
- border-radius: 12px;
178
- margin: 0 16px;
179
- margin-bottom: 16px;
300
+ .news-snippet__stock-symbol {
301
+ font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
180
302
  font-size: 14px;
181
- line-height: 20px;
303
+ font-weight: 600;
304
+ line-height: 18px;
305
+ letter-spacing: 0em;
306
+ color: var(--news-text-primary);
182
307
  }
183
308
 
184
- .news-feed__loading {
309
+ .news-snippet__stock-right {
185
310
  display: flex;
186
- justify-content: center;
187
- padding: 24px;
311
+ align-items: center;
312
+ gap: 8px;
188
313
  }
189
314
 
190
- .news-feed__spinner {
191
- width: 32px;
192
- height: 32px;
193
- border: 3px solid rgba(4, 4, 5, 0.1);
194
- border-top-color: #7863f6;
195
- border-radius: 50%;
196
- animation: spin 0.8s linear infinite;
315
+ .news-snippet__stock-change {
316
+ font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
317
+ font-size: 12px;
318
+ font-weight: 600;
319
+ line-height: 14px;
320
+ letter-spacing: 0em;
321
+ }
322
+ .news-snippet__stock-change--positive {
323
+ color: var(--news-stock-positive);
324
+ }
325
+ .news-snippet__stock-change--negative {
326
+ color: var(--news-stock-negative);
197
327
  }
198
328
 
199
- @keyframes spin {
200
- to {
201
- transform: rotate(360deg);
202
- }
329
+ .news-snippet__stock-price {
330
+ font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
331
+ font-size: 14px;
332
+ font-weight: 400;
333
+ line-height: 18px;
334
+ letter-spacing: 0em;
335
+ color: var(--news-text-secondary);
203
336
  }
204
- .news-feed__scroll-trigger {
205
- height: 20px;
337
+
338
+ /* Tags */
339
+ .news-snippet__tags {
340
+ display: flex;
341
+ flex-wrap: wrap;
342
+ gap: 8px;
206
343
  }
207
344
 
208
- .news-feed__empty {
209
- padding: 48px 24px;
210
- text-align: center;
211
- color: rgba(4, 4, 5, 0.56);
212
- font-size: 16px;
213
- line-height: 24px;
345
+ .news-snippet__tag {
346
+ padding: 4px 8px;
347
+ border-radius: 4px;
348
+ font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
349
+ font-size: 12px;
350
+ font-weight: 500;
351
+ line-height: 14px;
352
+ letter-spacing: 0em;
353
+ background: rgba(120, 99, 246, 0.12);
354
+ color: #7863f6;
214
355
  }
215
356
 
216
- /* ── Green brand ── */
217
- [data-brand=green] .news-feed__spinner {
218
- border-top-color: #A9DC4D;
357
+ /* Action Bar */
358
+ .news-snippet__actions {
359
+ display: flex;
360
+ justify-content: flex-end;
361
+ align-items: center;
362
+ gap: 4px;
363
+ }
364
+
365
+ .news-snippet__action-btn {
366
+ display: flex;
367
+ align-items: center;
368
+ justify-content: center;
369
+ width: 24px;
370
+ height: 24px;
371
+ border: none;
372
+ background: transparent;
373
+ border-radius: 50%;
374
+ cursor: pointer;
375
+ padding: 4px;
376
+ }
377
+ .news-snippet__action-btn:hover {
378
+ background: transparent;
379
+ }
380
+ .news-snippet__action-btn:hover svg path {
381
+ fill: var(--news-action-icon-hover-color);
382
+ fill-opacity: 1;
383
+ }
384
+ .news-snippet__action-btn--active {
385
+ background: transparent;
386
+ }
387
+ .news-snippet__action-btn--active svg path {
388
+ fill: var(--news-action-icon-hover-color);
389
+ fill-opacity: 1;
219
390
  }
220
391
 
221
- [data-brand=green] .news-feed__filter-btn--active {
392
+ /* ── Green brand ── */
393
+ [data-brand=green] .news-snippet__tag {
222
394
  background: rgba(169, 220, 77, 0.12);
395
+ color: #A9DC4D;
223
396
  }
224
397
 
225
- [data-brand=green] .news-feed__mock-indicator {
226
- background: rgba(169, 220, 77, 0.08);
398
+ [data-brand=green] .news-snippet.dark .news-snippet__tag {
399
+ background: rgba(184, 227, 102, 0.12);
400
+ color: #B8E366;
227
401
  }
228
402
 
229
- /*# sourceMappingURL=FeedList.css.map */
403
+ [data-brand=green] .news-snippet__ai-summary-icon path {
404
+ fill: #A9DC4D;
405
+ }
406
+
407
+ [data-brand=green] .news-snippet.dark .news-snippet__ai-summary-icon path {
408
+ fill: #B8E366;
409
+ }
410
+
411
+ [data-brand=green] .news-snippet {
412
+ --news-ai-summary-bg: rgba(169, 220, 77, 0.12);
413
+ }
414
+
415
+ [data-brand=green] .news-snippet.dark {
416
+ --news-ai-summary-bg: rgba(184, 227, 102, 0.12);
417
+ }
@@ -12,7 +12,7 @@
12
12
  --news-hover-overlay: rgba(0, 0, 0, 0.04);
13
13
  --news-ai-summary-bg: rgba(120, 99, 246, 0.12);
14
14
  --news-ai-summary-text: rgba(4, 4, 5, 0.88);
15
- --news-stock-card-bg: rgba(4, 4, 5, 0.04);
15
+ --news-stock-card-bg: rgba(4, 4, 5, 0.06);
16
16
  --news-stock-positive: #10b981;
17
17
  --news-stock-negative: #ef4444;
18
18
  --news-action-hover: transparent;
@@ -271,7 +271,7 @@
271
271
  width: 100%;
272
272
  padding: 4px 8px 4px 4px;
273
273
  border-radius: 4px;
274
- background: var(--Wrapper-A4, rgba(255, 255, 255, 0.06));
274
+ background: var(--news-stock-card-bg);
275
275
  }
276
276
 
277
277
  .news-snippet__stock-left {
@@ -10,7 +10,7 @@
10
10
  --news-hover-overlay: rgba(0, 0, 0, 0.04);
11
11
  --news-ai-summary-bg: rgba(120, 99, 246, 0.12);
12
12
  --news-ai-summary-text: rgba(4, 4, 5, 0.88);
13
- --news-stock-card-bg: rgba(4, 4, 5, 0.04);
13
+ --news-stock-card-bg: rgba(4, 4, 5, 0.06);
14
14
  --news-stock-positive: #10b981;
15
15
  --news-stock-negative: #ef4444;
16
16
  --news-action-hover: transparent;
@@ -53,6 +53,24 @@ export interface FeedResponse {
53
53
  offset?: number;
54
54
  limit?: number;
55
55
  }
56
+ export interface SemanticSearchFilters {
57
+ dateFrom?: string;
58
+ dateTo?: string;
59
+ tickers?: string[];
60
+ keywords?: string[];
61
+ marketEvents?: string[];
62
+ }
63
+ export interface SemanticSearchResponse {
64
+ semanticCore: string[];
65
+ excludeConcepts: string[];
66
+ boostConcepts: string[];
67
+ filters: SemanticSearchFilters;
68
+ mustNotFilters: Record<string, string[]>;
69
+ items: Array<Record<string, unknown>>;
70
+ total: number;
71
+ limit: number;
72
+ offset: number;
73
+ }
56
74
  export interface WidgetConfig {
57
75
  apiUrl?: string;
58
76
  onNewsClick?: (news: NewsItem) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "finsignal-feed-explore",
3
- "version": "3.43.2",
3
+ "version": "3.43.4",
4
4
  "description": "News feed explorer and portfolio widgets for React web applications",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",