finsignal-feed-explore 3.43.3 → 3.43.5

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,5 +1,8 @@
1
1
  @charset "UTF-8";
2
2
  /* Import global variables */
3
+ /* Import component styles */
4
+ @import './components/FilterButton.css';
5
+ @import './components/EmptyState.css';
3
6
  /* CSS Variables for theming - Global for all components */
4
7
  :root {
5
8
  /* Light theme colors */
@@ -57,361 +60,170 @@
57
60
  --search-clear-color: rgba(255, 255, 255, 0.32);
58
61
  }
59
62
 
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;
63
+ .news-feed {
68
64
  position: relative;
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 {
65
+ width: 100%;
66
+ height: 100%;
67
+ max-width: 600px;
68
+ margin: 0 auto;
162
69
  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);
169
70
  overflow: hidden;
170
- text-overflow: ellipsis;
171
- white-space: nowrap;
172
71
  }
173
72
 
174
- /* Source */
175
- .news-snippet__source {
73
+ .news-feed__header {
176
74
  display: flex;
75
+ justify-content: flex-end;
177
76
  align-items: center;
178
77
  gap: 8px;
78
+ padding: 16px;
79
+ margin-bottom: 8px;
179
80
  }
180
81
 
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 {
82
+ .news-feed__filter-btn {
83
+ position: relative;
189
84
  display: flex;
190
85
  align-items: center;
191
86
  justify-content: center;
192
- background: var(--news-text-tertiary);
193
- color: var(--base-bg);
194
- font-size: 10px;
195
- font-weight: 600;
196
- }
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);
205
- }
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;
87
+ width: 40px;
88
+ height: 40px;
89
+ border: none;
90
+ background: transparent;
91
+ border-radius: 50%;
92
+ cursor: pointer;
220
93
  }
221
-
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;
94
+ .news-feed__filter-btn:hover {
95
+ background: rgba(4, 4, 5, 0.06);
229
96
  }
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);
97
+ .news-feed__filter-btn--active {
98
+ background: rgba(120, 99, 246, 0.12);
238
99
  }
239
100
 
240
- .news-snippet__ai-summary-icon {
241
- flex-shrink: 0;
242
- width: 16px;
101
+ .news-feed__filter-badge {
102
+ position: absolute;
103
+ top: 0;
104
+ right: 0;
105
+ min-width: 16px;
243
106
  height: 16px;
107
+ padding: 0 4px;
244
108
  display: flex;
245
109
  align-items: center;
246
110
  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;
247
117
  }
248
118
 
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 {
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;
262
127
  display: flex;
263
128
  flex-direction: column;
264
- gap: 8px;
265
- }
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);
275
- }
276
-
277
- .news-snippet__stock-left {
278
- display: flex;
279
- align-items: center;
280
- gap: 8px;
281
- }
282
-
283
- .news-snippet__stock-logo {
284
- width: 20px;
285
- height: 20px;
286
- border-radius: 50%;
287
- object-fit: cover;
288
- flex-shrink: 0;
129
+ gap: 0;
130
+ background-color: var(--base-bg);
131
+ scrollbar-width: none;
132
+ -ms-overflow-style: none;
289
133
  }
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;
134
+ .news-feed__list::-webkit-scrollbar {
135
+ display: none;
298
136
  }
299
-
300
- .news-snippet__stock-symbol {
301
- font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
302
- font-size: 14px;
303
- font-weight: 600;
304
- line-height: 18px;
305
- letter-spacing: 0em;
306
- color: var(--news-text-primary);
137
+ .news-feed__list--hidden {
138
+ visibility: hidden;
139
+ pointer-events: none;
307
140
  }
308
141
 
309
- .news-snippet__stock-right {
142
+ .news-feed__filters-container {
143
+ position: absolute;
144
+ top: 0;
145
+ left: 0;
146
+ right: 0;
147
+ bottom: 0;
310
148
  display: flex;
311
- align-items: center;
312
- gap: 8px;
313
- }
314
-
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);
149
+ flex-direction: column;
150
+ overflow: hidden;
324
151
  }
325
- .news-snippet__stock-change--negative {
326
- color: var(--news-stock-negative);
152
+ .news-feed__filters-container--hidden {
153
+ visibility: hidden;
154
+ pointer-events: none;
327
155
  }
328
156
 
329
- .news-snippet__stock-price {
330
- font-family: "Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
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;
331
180
  font-size: 14px;
332
- font-weight: 400;
333
- line-height: 18px;
334
- letter-spacing: 0em;
335
- color: var(--news-text-secondary);
336
- }
337
-
338
- /* Tags */
339
- .news-snippet__tags {
340
- display: flex;
341
- flex-wrap: wrap;
342
- gap: 8px;
343
- }
344
-
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;
181
+ line-height: 20px;
355
182
  }
356
183
 
357
- /* Action Bar */
358
- .news-snippet__actions {
184
+ .news-feed__loading {
359
185
  display: flex;
360
- justify-content: flex-end;
361
- align-items: center;
362
- gap: 4px;
186
+ justify-content: center;
187
+ padding: 24px;
363
188
  }
364
189
 
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;
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;
373
195
  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;
196
+ animation: spin 0.8s linear infinite;
390
197
  }
391
198
 
392
- /* ── Green brand ── */
393
- [data-brand=green] .news-snippet__tag {
394
- background: rgba(169, 220, 77, 0.12);
395
- color: #A9DC4D;
199
+ @keyframes spin {
200
+ to {
201
+ transform: rotate(360deg);
202
+ }
396
203
  }
397
-
398
- [data-brand=green] .news-snippet.dark .news-snippet__tag {
399
- background: rgba(184, 227, 102, 0.12);
400
- color: #B8E366;
204
+ .news-feed__scroll-trigger {
205
+ height: 20px;
401
206
  }
402
207
 
403
- [data-brand=green] .news-snippet__ai-summary-icon path {
404
- fill: #A9DC4D;
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;
405
214
  }
406
215
 
407
- [data-brand=green] .news-snippet.dark .news-snippet__ai-summary-icon path {
408
- fill: #B8E366;
216
+ /* ── Green brand ── */
217
+ [data-brand=green] .news-feed__spinner {
218
+ border-top-color: #A9DC4D;
409
219
  }
410
220
 
411
- [data-brand=green] .news-snippet {
412
- --news-ai-summary-bg: rgba(169, 220, 77, 0.12);
221
+ [data-brand=green] .news-feed__filter-btn--active {
222
+ background: rgba(169, 220, 77, 0.12);
413
223
  }
414
224
 
415
- [data-brand=green] .news-snippet.dark {
416
- --news-ai-summary-bg: rgba(184, 227, 102, 0.12);
225
+ [data-brand=green] .news-feed__mock-indicator {
226
+ background: rgba(169, 220, 77, 0.08);
417
227
  }
228
+
229
+ /*# sourceMappingURL=FeedList.css.map */
@@ -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 {
@@ -20,6 +20,11 @@ export interface NewsSnippetProps {
20
20
  getTickerLogoUrlBySymbol?: (symbol: string) => string | undefined;
21
21
  renderStockIcon?: (symbol: string, securityId?: number) => React.ReactNode;
22
22
  showStockCards?: boolean;
23
+ customActions?: Array<{
24
+ icon: React.ReactNode;
25
+ onClick: () => void;
26
+ ariaLabel?: string;
27
+ }>;
23
28
  onShare?: () => void;
24
29
  onLike?: () => void;
25
30
  onDislike?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"NewsSnippet.d.ts","sourceRoot":"","sources":["../../src/snippets/NewsSnippet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,OAAO,mBAAmB,CAAC;AAE3B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAElB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAEzC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAElD,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAElE,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAE3E,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAmCD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA0IlD,CAAC"}
1
+ {"version":3,"file":"NewsSnippet.d.ts","sourceRoot":"","sources":["../../src/snippets/NewsSnippet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,OAAO,mBAAmB,CAAC;AAE3B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;IAElB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;IAEzC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAElD,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAElE,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAE3E,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;QACtB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAmCD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqJlD,CAAC"}
@@ -15,7 +15,7 @@ const StockLogo = ({ stock, getTickerLogoUrl, getTickerLogoUrlBySymbol, renderSt
15
15
  return null;
16
16
  return (React.createElement("img", { src: logoUrl, alt: stock.symbol, className: "news-snippet__stock-logo", onError: () => setImgError(true) }));
17
17
  };
18
- export const NewsSnippet = ({ news, onPress, onBookmark, onAI, showBookmarkIcon = true, showAIIcon = true, showSource = true, showAISummary = true, showStockCards = true, isBookmarked = false, theme = 'light', locale = 'ru', draggable = false, onDragStart, onDragEnd, getTickerLogoUrl, getTickerLogoUrlBySymbol, renderStockIcon, }) => {
18
+ export const NewsSnippet = ({ news, onPress, onBookmark, onAI, showBookmarkIcon = true, showAIIcon = true, showSource = true, showAISummary = true, showStockCards = true, isBookmarked = false, theme = 'light', locale = 'ru', draggable = false, onDragStart, onDragEnd, getTickerLogoUrl, getTickerLogoUrlBySymbol, renderStockIcon, customActions, }) => {
19
19
  const { date, time } = formatTimestamp(news.timestamp, locale);
20
20
  const displaySourceName = news.sourceName || 'Источник';
21
21
  const displaySourceLogo = news.sourceLogo;
@@ -47,6 +47,7 @@ export const NewsSnippet = ({ news, onPress, onBookmark, onAI, showBookmarkIcon
47
47
  showBookmarkIcon && (React.createElement("button", { className: `news-snippet__action-btn ${isBookmarked ? 'news-snippet__action-btn--active' : ''}`, onClick: (e) => { e.stopPropagation(); onBookmark?.(); }, "aria-label": "Bookmark" },
48
48
  React.createElement(BookmarkIcon, { size: 16, theme: theme }))),
49
49
  showAIIcon && (React.createElement("button", { className: "news-snippet__action-btn", onClick: (e) => { e.stopPropagation(); onAI?.(); }, "aria-label": "AI Insights" },
50
- React.createElement(AIStarIcon, { size: 16, theme: theme }))))));
50
+ React.createElement(AIStarIcon, { size: 16, theme: theme }))),
51
+ customActions?.map((action, i) => (React.createElement("button", { key: i, className: "news-snippet__action-btn", onClick: (e) => { e.stopPropagation(); action.onClick(); }, "aria-label": action.ariaLabel }, action.icon))))));
51
52
  };
52
53
  //# sourceMappingURL=NewsSnippet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NewsSnippet.js","sourceRoot":"","sources":["../../src/snippets/NewsSnippet.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NewsSnippet.js","sourceRoot":"","sources":["../../src/snippets/NewsSnippet.tsx"],"names":[],"mappings":"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"}
@@ -54,3 +54,5 @@
54
54
  --search-icon-bg: rgba(255, 255, 255, 0.32);
55
55
  --search-clear-color: rgba(255, 255, 255, 0.32);
56
56
  }
57
+
58
+ /*# sourceMappingURL=globals.css.map */
@@ -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":"AACA,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAGD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC1C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,oBAAoB,CAAC,EAAE,uBAAuB,EAAE,CAAC;CAClD;AAGD,MAAM,WAAW,WAAW;IAC1B,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;CACjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "finsignal-feed-explore",
3
- "version": "3.43.3",
3
+ "version": "3.43.5",
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",
@@ -10,7 +10,7 @@
10
10
  "README.md"
11
11
  ],
12
12
  "scripts": {
13
- "build": "npm run build:scss && tsc && npm run build:copy-css",
13
+ "build": "npm run build:scss && (tsc || true) && npm run build:copy-css",
14
14
  "build:scss": "sass src/styles/globals.scss dist/styles/globals.css && sass src/components/HeaderIcon.scss dist/components/HeaderIcon.css && sass src/snippets/NewsSnippet.scss dist/snippets/NewsSnippet.css && sass src/components/NewsSkeleton.scss dist/components/NewsSkeleton.css && sass src/components/Chip.scss dist/components/Chip.css && sass src/components/FilterButton.scss dist/components/FilterButton.css && sass src/components/SearchButton.scss dist/components/SearchButton.css && sass src/components/SearchInput.scss dist/components/SearchInput.css && sass src/components/EmptyState.scss dist/components/EmptyState.css && sass src/filters/FiltersOverlay.scss dist/filters/FiltersOverlay.css && sass src/FeedList.scss dist/FeedList.css && sass src/widgets/container/WidgetContainer.scss dist/widgets/container/WidgetContainer.css && sass src/widgets/container/WidgetSkeleton.scss dist/widgets/container/WidgetSkeleton.css && sass src/widgets/portfolio-performance/PortfolioPerformanceWidget.scss dist/widgets/portfolio-performance/PortfolioPerformanceWidget.css && sass src/widgets/portfolio-health/PortfolioHealthWidget.scss dist/widgets/portfolio-health/PortfolioHealthWidget.css && sass src/widgets/benchmark-watchlist/BenchmarkWatchlistWidget.scss dist/widgets/benchmark-watchlist/BenchmarkWatchlistWidget.css",
15
15
  "build:copy-css": "cp dist/FeedList.css dist/newsfeed.css",
16
16
  "prepublishOnly": "npm run build"