framepexls-ui-lib 2.1.0 → 2.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.
Files changed (232) hide show
  1. package/dist/AnalyticsCharts.d.mts +4 -4
  2. package/dist/AnalyticsCharts.d.ts +4 -4
  3. package/dist/AppTopbar.d.mts +1 -2
  4. package/dist/AppTopbar.d.ts +1 -2
  5. package/dist/AssetPerformanceCard.d.mts +50 -0
  6. package/dist/AssetPerformanceCard.d.ts +50 -0
  7. package/dist/AssetPerformanceCard.js +342 -0
  8. package/dist/AssetPerformanceCard.mjs +319 -0
  9. package/dist/AssetTickerRow.d.mts +26 -0
  10. package/dist/AssetTickerRow.d.ts +26 -0
  11. package/dist/AssetTickerRow.js +255 -0
  12. package/dist/AssetTickerRow.mjs +225 -0
  13. package/dist/AuthTopbar.d.mts +2 -2
  14. package/dist/AuthTopbar.d.ts +2 -2
  15. package/dist/AuthTopbar.js +2 -1
  16. package/dist/AuthTopbar.mjs +2 -1
  17. package/dist/AvatarGroup.d.mts +2 -2
  18. package/dist/AvatarGroup.d.ts +2 -2
  19. package/dist/AvatarSquare.d.mts +2 -2
  20. package/dist/AvatarSquare.d.ts +2 -2
  21. package/dist/AvatarSquare.js +29 -27
  22. package/dist/AvatarSquare.mjs +29 -27
  23. package/dist/Badge.d.mts +1 -2
  24. package/dist/Badge.d.ts +1 -2
  25. package/dist/BadgeCluster.d.mts +2 -3
  26. package/dist/BadgeCluster.d.ts +2 -3
  27. package/dist/Breadcrumb.d.mts +1 -2
  28. package/dist/Breadcrumb.d.ts +1 -2
  29. package/dist/CalendarPanel.d.mts +2 -2
  30. package/dist/CalendarPanel.d.ts +2 -2
  31. package/dist/Carousel.d.mts +1 -2
  32. package/dist/Carousel.d.ts +1 -2
  33. package/dist/ChangeHistory.d.mts +1 -2
  34. package/dist/ChangeHistory.d.ts +1 -2
  35. package/dist/ChartCard.d.mts +1 -2
  36. package/dist/ChartCard.d.ts +1 -2
  37. package/dist/ChatCenter.d.mts +2 -2
  38. package/dist/ChatCenter.d.ts +2 -2
  39. package/dist/ChatbotCenter.d.mts +1 -2
  40. package/dist/ChatbotCenter.d.ts +1 -2
  41. package/dist/CheckboxPillsGroup.d.mts +1 -2
  42. package/dist/CheckboxPillsGroup.d.ts +1 -2
  43. package/dist/ColorPicker.d.mts +2 -2
  44. package/dist/ColorPicker.d.ts +2 -2
  45. package/dist/ColumnSelector.d.mts +1 -2
  46. package/dist/ColumnSelector.d.ts +1 -2
  47. package/dist/ComboSelect.d.mts +1 -2
  48. package/dist/ComboSelect.d.ts +1 -2
  49. package/dist/DataPageLayout.d.mts +64 -0
  50. package/dist/DataPageLayout.d.ts +64 -0
  51. package/dist/DataPageLayout.js +191 -0
  52. package/dist/DataPageLayout.mjs +157 -0
  53. package/dist/DataTable.d.mts +1 -2
  54. package/dist/DataTable.d.ts +1 -2
  55. package/dist/DataTableCard.d.mts +1 -2
  56. package/dist/DataTableCard.d.ts +1 -2
  57. package/dist/DataTableCardFooter.d.mts +2 -2
  58. package/dist/DataTableCardFooter.d.ts +2 -2
  59. package/dist/DateTimeField.d.mts +1 -2
  60. package/dist/DateTimeField.d.ts +1 -2
  61. package/dist/Dialog.d.mts +6 -7
  62. package/dist/Dialog.d.ts +6 -7
  63. package/dist/DocumentEditor.d.mts +3 -3
  64. package/dist/DocumentEditor.d.ts +3 -3
  65. package/dist/Drawer.d.mts +4 -5
  66. package/dist/Drawer.d.ts +4 -5
  67. package/dist/Dropdown.d.mts +7 -8
  68. package/dist/Dropdown.d.ts +7 -8
  69. package/dist/EmptyState.d.mts +1 -2
  70. package/dist/EmptyState.d.ts +1 -2
  71. package/dist/FiltersMultiSelect.d.mts +1 -2
  72. package/dist/FiltersMultiSelect.d.ts +1 -2
  73. package/dist/HeliipLoader.d.mts +2 -2
  74. package/dist/HeliipLoader.d.ts +2 -2
  75. package/dist/ImpersonationDialog.d.mts +2 -2
  76. package/dist/ImpersonationDialog.d.ts +2 -2
  77. package/dist/ImpersonationSwitcher.d.mts +2 -2
  78. package/dist/ImpersonationSwitcher.d.ts +2 -2
  79. package/dist/InfoGrid.d.mts +1 -2
  80. package/dist/InfoGrid.d.ts +1 -2
  81. package/dist/KnowledgeBase.d.mts +1 -2
  82. package/dist/KnowledgeBase.d.ts +1 -2
  83. package/dist/KpiCard.d.mts +2 -3
  84. package/dist/KpiCard.d.ts +2 -3
  85. package/dist/LanguageSwitcher.d.mts +2 -2
  86. package/dist/LanguageSwitcher.d.ts +2 -2
  87. package/dist/LicenseStatus.d.mts +1 -2
  88. package/dist/LicenseStatus.d.ts +1 -2
  89. package/dist/Link.d.mts +1 -2
  90. package/dist/Link.d.ts +1 -2
  91. package/dist/Login.d.mts +1 -2
  92. package/dist/Login.d.ts +1 -2
  93. package/dist/LoginCarousel.d.mts +2 -3
  94. package/dist/LoginCarousel.d.ts +2 -3
  95. package/dist/LoginGallery.d.mts +2 -3
  96. package/dist/LoginGallery.d.ts +2 -3
  97. package/dist/LoginTools.d.mts +1 -2
  98. package/dist/LoginTools.d.ts +1 -2
  99. package/dist/Map.d.mts +4 -5
  100. package/dist/Map.d.ts +4 -5
  101. package/dist/MarkdownEditor.d.mts +2 -2
  102. package/dist/MarkdownEditor.d.ts +2 -2
  103. package/dist/MediaCard.d.mts +2 -2
  104. package/dist/MediaCard.d.ts +2 -2
  105. package/dist/MediaLibraryLayout.d.mts +89 -0
  106. package/dist/MediaLibraryLayout.d.ts +89 -0
  107. package/dist/MediaLibraryLayout.js +369 -0
  108. package/dist/MediaLibraryLayout.mjs +348 -0
  109. package/dist/MediaSelector.d.mts +2 -2
  110. package/dist/MediaSelector.d.ts +2 -2
  111. package/dist/MediaTile.d.mts +2 -2
  112. package/dist/MediaTile.d.ts +2 -2
  113. package/dist/Money.d.mts +2 -2
  114. package/dist/Money.d.ts +2 -2
  115. package/dist/MotionProvider.d.mts +1 -2
  116. package/dist/MotionProvider.d.ts +1 -2
  117. package/dist/MultiComboSelect.d.mts +2 -3
  118. package/dist/MultiComboSelect.d.ts +2 -3
  119. package/dist/NotificationsCenter.d.mts +1 -2
  120. package/dist/NotificationsCenter.d.ts +1 -2
  121. package/dist/Numeric.d.mts +2 -2
  122. package/dist/Numeric.d.ts +2 -2
  123. package/dist/OmniSearch.d.mts +2 -3
  124. package/dist/OmniSearch.d.ts +2 -3
  125. package/dist/OrderButton.d.mts +2 -2
  126. package/dist/OrderButton.d.ts +2 -2
  127. package/dist/PageScaffold.d.mts +1 -2
  128. package/dist/PageScaffold.d.ts +1 -2
  129. package/dist/PageScaffold.js +1 -1
  130. package/dist/PageScaffold.mjs +1 -1
  131. package/dist/PageTransition.d.mts +1 -2
  132. package/dist/PageTransition.d.ts +1 -2
  133. package/dist/PageTransition.js +33 -27
  134. package/dist/PageTransition.mjs +33 -27
  135. package/dist/Pagination.d.mts +2 -2
  136. package/dist/Pagination.d.ts +2 -2
  137. package/dist/PasswordField.d.mts +1 -2
  138. package/dist/PasswordField.d.ts +1 -2
  139. package/dist/ProductCatalog.d.mts +2 -3
  140. package/dist/ProductCatalog.d.ts +2 -3
  141. package/dist/PromotionsCatalog.d.mts +2 -3
  142. package/dist/PromotionsCatalog.d.ts +2 -3
  143. package/dist/QrCode.d.mts +2 -2
  144. package/dist/QrCode.d.ts +2 -2
  145. package/dist/QuoteEditor.d.mts +2 -2
  146. package/dist/QuoteEditor.d.ts +2 -2
  147. package/dist/RechartsBarCard.d.mts +1 -2
  148. package/dist/RechartsBarCard.d.ts +1 -2
  149. package/dist/RechartsDonutCard.d.mts +1 -2
  150. package/dist/RechartsDonutCard.d.ts +1 -2
  151. package/dist/RechartsTimeSeriesCard.d.mts +1 -2
  152. package/dist/RechartsTimeSeriesCard.d.ts +1 -2
  153. package/dist/ReviewHistory.d.mts +3 -3
  154. package/dist/ReviewHistory.d.ts +3 -3
  155. package/dist/Reviews.d.mts +1 -2
  156. package/dist/Reviews.d.ts +1 -2
  157. package/dist/SearchInput.d.mts +2 -2
  158. package/dist/SearchInput.d.ts +2 -2
  159. package/dist/SegmentedTabs.d.mts +1 -2
  160. package/dist/SegmentedTabs.d.ts +1 -2
  161. package/dist/Select.d.mts +2 -2
  162. package/dist/Select.d.ts +2 -2
  163. package/dist/ShareAccess.d.mts +1 -2
  164. package/dist/ShareAccess.d.ts +1 -2
  165. package/dist/Sidebar.d.mts +1 -2
  166. package/dist/Sidebar.d.ts +1 -2
  167. package/dist/Sidebar.js +492 -335
  168. package/dist/Sidebar.mjs +492 -335
  169. package/dist/StatCard.d.mts +1 -2
  170. package/dist/StatCard.d.ts +1 -2
  171. package/dist/Steps.d.mts +3 -3
  172. package/dist/Steps.d.ts +3 -3
  173. package/dist/StorageUsage.d.mts +1 -2
  174. package/dist/StorageUsage.d.ts +1 -2
  175. package/dist/Table.d.mts +4 -5
  176. package/dist/Table.d.ts +4 -5
  177. package/dist/TableRecordButton.d.mts +1 -2
  178. package/dist/TableRecordButton.d.ts +1 -2
  179. package/dist/TimeAgo.d.mts +2 -2
  180. package/dist/TimeAgo.d.ts +2 -2
  181. package/dist/TimePanel.d.mts +1 -2
  182. package/dist/TimePanel.d.ts +1 -2
  183. package/dist/TimeRangeField.d.mts +2 -2
  184. package/dist/TimeRangeField.d.ts +2 -2
  185. package/dist/Toast.d.mts +1 -2
  186. package/dist/Toast.d.ts +1 -2
  187. package/dist/Tooltip.d.mts +1 -2
  188. package/dist/Tooltip.d.ts +1 -2
  189. package/dist/UploadCard.d.mts +1 -2
  190. package/dist/UploadCard.d.ts +1 -2
  191. package/dist/WordEditor.d.mts +3 -3
  192. package/dist/WordEditor.d.ts +3 -3
  193. package/dist/WorkflowDiagram.d.mts +1 -2
  194. package/dist/WorkflowDiagram.d.ts +1 -2
  195. package/dist/{animations-CHrNeawW.d.mts → animations-Di5tQRLw.d.mts} +2 -2
  196. package/dist/{animations-CHrNeawW.d.ts → animations-Di5tQRLw.d.ts} +2 -2
  197. package/dist/animations.d.mts +1 -1
  198. package/dist/animations.d.ts +1 -1
  199. package/dist/charts.d.mts +2 -1
  200. package/dist/charts.d.ts +2 -1
  201. package/dist/charts.js +6 -0
  202. package/dist/charts.mjs +6 -2
  203. package/dist/i18n.d.mts +1 -2
  204. package/dist/i18n.d.ts +1 -2
  205. package/dist/iconos/WorkflowEdgesSvg.d.mts +1 -2
  206. package/dist/iconos/WorkflowEdgesSvg.d.ts +1 -2
  207. package/dist/iconos/index.d.mts +1546 -1547
  208. package/dist/iconos/index.d.ts +1546 -1547
  209. package/dist/iconos/regular-icons.js +2 -2
  210. package/dist/iconos/regular-icons.mjs +2 -2
  211. package/dist/index.d.mts +9 -4
  212. package/dist/index.d.ts +9 -4
  213. package/dist/index.js +24 -0
  214. package/dist/index.mjs +163 -148
  215. package/dist/internal/AutoSize.d.mts +1 -2
  216. package/dist/internal/AutoSize.d.ts +1 -2
  217. package/dist/map.css +1 -1
  218. package/dist/theme/FontSizeController.d.mts +2 -2
  219. package/dist/theme/FontSizeController.d.ts +2 -2
  220. package/dist/theme/FontSizeController.js +1 -1
  221. package/dist/theme/FontSizeController.mjs +1 -1
  222. package/dist/theme/ThemeController.d.mts +2 -3
  223. package/dist/theme/ThemeController.d.ts +2 -3
  224. package/dist/theme/ThemeProvider.d.mts +1 -2
  225. package/dist/theme/ThemeProvider.d.ts +1 -2
  226. package/dist/theme/ThemeScript.d.mts +2 -2
  227. package/dist/theme/ThemeScript.d.ts +2 -2
  228. package/dist/theme/ThemeToggle.d.mts +2 -2
  229. package/dist/theme/ThemeToggle.d.ts +2 -2
  230. package/dist/theme/ThemeToggle.js +4 -4
  231. package/dist/theme/ThemeToggle.mjs +4 -4
  232. package/package.json +7 -8
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
 
3
3
  type Campania = {
4
4
  id: number;
@@ -12,13 +12,13 @@ type Campania = {
12
12
  declare function TopImpresionesBar({ data, limit, }: {
13
13
  data: Campania[];
14
14
  limit?: number;
15
- }): react_jsx_runtime.JSX.Element;
15
+ }): React__default.JSX.Element;
16
16
  declare function CtrHorizontalBar({ data, limit }: {
17
17
  data: Campania[];
18
18
  limit?: number;
19
- }): react_jsx_runtime.JSX.Element;
19
+ }): React__default.JSX.Element;
20
20
  declare function DestinoDonut({ data }: {
21
21
  data: Campania[];
22
- }): react_jsx_runtime.JSX.Element;
22
+ }): React__default.JSX.Element;
23
23
 
24
24
  export { type Campania, CtrHorizontalBar, DestinoDonut, TopImpresionesBar };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import React__default from 'react';
2
2
 
3
3
  type Campania = {
4
4
  id: number;
@@ -12,13 +12,13 @@ type Campania = {
12
12
  declare function TopImpresionesBar({ data, limit, }: {
13
13
  data: Campania[];
14
14
  limit?: number;
15
- }): react_jsx_runtime.JSX.Element;
15
+ }): React__default.JSX.Element;
16
16
  declare function CtrHorizontalBar({ data, limit }: {
17
17
  data: Campania[];
18
18
  limit?: number;
19
- }): react_jsx_runtime.JSX.Element;
19
+ }): React__default.JSX.Element;
20
20
  declare function DestinoDonut({ data }: {
21
21
  data: Campania[];
22
- }): react_jsx_runtime.JSX.Element;
22
+ }): React__default.JSX.Element;
23
23
 
24
24
  export { type Campania, CtrHorizontalBar, DestinoDonut, TopImpresionesBar };
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import Button from './Button.mjs';
3
2
  import React__default from 'react';
4
3
 
@@ -23,6 +22,6 @@ type Props = {
23
22
  actions?: number;
24
23
  };
25
24
  };
26
- declare function AppTopbar({ title, subtitle, secondary, primary, actions, color, loading, loadingMinDurationMs, skeleton }: Props): react_jsx_runtime.JSX.Element;
25
+ declare function AppTopbar({ title, subtitle, secondary, primary, actions, color, loading, loadingMinDurationMs, skeleton }: Props): React__default.JSX.Element;
27
26
 
28
27
  export { AppTopbar as default };
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import Button from './Button.js';
3
2
  import React__default from 'react';
4
3
 
@@ -23,6 +22,6 @@ type Props = {
23
22
  actions?: number;
24
23
  };
25
24
  };
26
- declare function AppTopbar({ title, subtitle, secondary, primary, actions, color, loading, loadingMinDurationMs, skeleton }: Props): react_jsx_runtime.JSX.Element;
25
+ declare function AppTopbar({ title, subtitle, secondary, primary, actions, color, loading, loadingMinDurationMs, skeleton }: Props): React__default.JSX.Element;
27
26
 
28
27
  export { AppTopbar as default };
@@ -0,0 +1,50 @@
1
+ import React__default from 'react';
2
+
3
+ type AssetRangeOption = {
4
+ value: string;
5
+ label: React__default.ReactNode;
6
+ };
7
+ type AssetCurrencyOption = {
8
+ value: string;
9
+ label: string;
10
+ };
11
+ type AssetPerformancePoint = Record<string, unknown>;
12
+ type AssetValueFormatter = (value: number | null | undefined, options: {
13
+ currency: string;
14
+ locale: string;
15
+ }) => string;
16
+ type AssetPerformanceCardProps = {
17
+ title?: React__default.ReactNode;
18
+ subtitle?: React__default.ReactNode;
19
+ name: string;
20
+ symbol?: string;
21
+ icon?: React__default.ReactNode;
22
+ accent?: string;
23
+ value: number | null | undefined;
24
+ change?: number | null;
25
+ changePercent?: number | null;
26
+ data: AssetPerformancePoint[];
27
+ xKey: string;
28
+ yKey: string;
29
+ locale?: string;
30
+ currency?: string;
31
+ currencies?: AssetCurrencyOption[];
32
+ selectedCurrency?: string;
33
+ defaultCurrency?: string;
34
+ onCurrencyChange?: (currency: string) => void;
35
+ ranges?: AssetRangeOption[];
36
+ selectedRange?: string;
37
+ defaultRange?: string;
38
+ onRangeChange?: (range: string) => void;
39
+ xTickFormatter?: (value: unknown) => string;
40
+ valueFormatter?: AssetValueFormatter;
41
+ yTickFormatter?: AssetValueFormatter;
42
+ tooltipLabelFormatter?: (value: unknown) => string;
43
+ tooltipValueFormatter?: (value: number, currency: string) => string;
44
+ className?: string;
45
+ helperText?: React__default.ReactNode;
46
+ emptyState?: React__default.ReactNode;
47
+ };
48
+ declare function AssetPerformanceCard({ title, subtitle, name, symbol, icon, accent, value, change, changePercent, data, xKey, yKey, locale, currency, currencies, selectedCurrency, defaultCurrency, onCurrencyChange, ranges, selectedRange, defaultRange, onRangeChange, xTickFormatter, valueFormatter, yTickFormatter, tooltipLabelFormatter, tooltipValueFormatter, className, helperText, emptyState, }: AssetPerformanceCardProps): React__default.JSX.Element;
49
+
50
+ export { type AssetCurrencyOption, type AssetPerformanceCardProps, type AssetPerformancePoint, type AssetRangeOption, type AssetValueFormatter, AssetPerformanceCard as default };
@@ -0,0 +1,50 @@
1
+ import React__default from 'react';
2
+
3
+ type AssetRangeOption = {
4
+ value: string;
5
+ label: React__default.ReactNode;
6
+ };
7
+ type AssetCurrencyOption = {
8
+ value: string;
9
+ label: string;
10
+ };
11
+ type AssetPerformancePoint = Record<string, unknown>;
12
+ type AssetValueFormatter = (value: number | null | undefined, options: {
13
+ currency: string;
14
+ locale: string;
15
+ }) => string;
16
+ type AssetPerformanceCardProps = {
17
+ title?: React__default.ReactNode;
18
+ subtitle?: React__default.ReactNode;
19
+ name: string;
20
+ symbol?: string;
21
+ icon?: React__default.ReactNode;
22
+ accent?: string;
23
+ value: number | null | undefined;
24
+ change?: number | null;
25
+ changePercent?: number | null;
26
+ data: AssetPerformancePoint[];
27
+ xKey: string;
28
+ yKey: string;
29
+ locale?: string;
30
+ currency?: string;
31
+ currencies?: AssetCurrencyOption[];
32
+ selectedCurrency?: string;
33
+ defaultCurrency?: string;
34
+ onCurrencyChange?: (currency: string) => void;
35
+ ranges?: AssetRangeOption[];
36
+ selectedRange?: string;
37
+ defaultRange?: string;
38
+ onRangeChange?: (range: string) => void;
39
+ xTickFormatter?: (value: unknown) => string;
40
+ valueFormatter?: AssetValueFormatter;
41
+ yTickFormatter?: AssetValueFormatter;
42
+ tooltipLabelFormatter?: (value: unknown) => string;
43
+ tooltipValueFormatter?: (value: number, currency: string) => string;
44
+ className?: string;
45
+ helperText?: React__default.ReactNode;
46
+ emptyState?: React__default.ReactNode;
47
+ };
48
+ declare function AssetPerformanceCard({ title, subtitle, name, symbol, icon, accent, value, change, changePercent, data, xKey, yKey, locale, currency, currencies, selectedCurrency, defaultCurrency, onCurrencyChange, ranges, selectedRange, defaultRange, onRangeChange, xTickFormatter, valueFormatter, yTickFormatter, tooltipLabelFormatter, tooltipValueFormatter, className, helperText, emptyState, }: AssetPerformanceCardProps): React__default.JSX.Element;
49
+
50
+ export { type AssetCurrencyOption, type AssetPerformanceCardProps, type AssetPerformancePoint, type AssetRangeOption, type AssetValueFormatter, AssetPerformanceCard as default };
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var AssetPerformanceCard_exports = {};
31
+ __export(AssetPerformanceCard_exports, {
32
+ default: () => AssetPerformanceCard
33
+ });
34
+ module.exports = __toCommonJS(AssetPerformanceCard_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_react = __toESM(require("react"));
37
+ var import_recharts = require("recharts");
38
+ var import_ChartCard = __toESM(require("./ChartCard"));
39
+ var import_AutoSize = __toESM(require("./internal/AutoSize"));
40
+ var import_SegmentedTabs = __toESM(require("./SegmentedTabs"));
41
+ var import_Select = __toESM(require("./Select"));
42
+ var import_iconos = require("./iconos");
43
+ var import_Numeric = require("./Numeric");
44
+ function alphaColor(color, alpha, fallback) {
45
+ if (!color) return fallback;
46
+ if (color.startsWith("#")) {
47
+ let hex = color.slice(1);
48
+ if (hex.length === 3) {
49
+ hex = hex.split("").map((char) => char + char).join("");
50
+ }
51
+ if (hex.length === 6) {
52
+ const r = Number.parseInt(hex.slice(0, 2), 16);
53
+ const g = Number.parseInt(hex.slice(2, 4), 16);
54
+ const b = Number.parseInt(hex.slice(4, 6), 16);
55
+ return `rgba(${r}, ${g}, ${b}, ${alpha})`;
56
+ }
57
+ }
58
+ return `color-mix(in oklab, ${color} ${Math.round(alpha * 100)}%, transparent)`;
59
+ }
60
+ function AssetBadge({
61
+ name,
62
+ symbol,
63
+ accent,
64
+ icon
65
+ }) {
66
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex items-center gap-3", children: [
67
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
68
+ "div",
69
+ {
70
+ className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-2xl text-sm font-semibold text-white shadow-sm",
71
+ style: { background: accent },
72
+ children: icon != null ? icon : (symbol || name).slice(0, 3).toUpperCase()
73
+ }
74
+ ),
75
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "min-w-0", children: [
76
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "truncate text-sm font-semibold text-[var(--foreground)]", children: name }),
77
+ symbol ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-[11px] uppercase tracking-[0.16em] text-[var(--muted)]", children: symbol }) : null
78
+ ] })
79
+ ] });
80
+ }
81
+ function AssetPerformanceCard({
82
+ title,
83
+ subtitle,
84
+ name,
85
+ symbol,
86
+ icon,
87
+ accent = "var(--primary)",
88
+ value,
89
+ change,
90
+ changePercent,
91
+ data,
92
+ xKey,
93
+ yKey,
94
+ locale = "es-MX",
95
+ currency = "USD",
96
+ currencies,
97
+ selectedCurrency,
98
+ defaultCurrency,
99
+ onCurrencyChange,
100
+ ranges = [
101
+ { value: "1H", label: "1H" },
102
+ { value: "1D", label: "1D" },
103
+ { value: "1W", label: "1W" },
104
+ { value: "1M", label: "1M" },
105
+ { value: "1Y", label: "1Y" },
106
+ { value: "ALL", label: "All" }
107
+ ],
108
+ selectedRange,
109
+ defaultRange,
110
+ onRangeChange,
111
+ xTickFormatter,
112
+ valueFormatter,
113
+ yTickFormatter,
114
+ tooltipLabelFormatter,
115
+ tooltipValueFormatter,
116
+ className,
117
+ helperText,
118
+ emptyState
119
+ }) {
120
+ var _a, _b, _c, _d, _e, _f, _g;
121
+ const gradientId = import_react.default.useId();
122
+ const initialCurrency = (_c = (_b = selectedCurrency != null ? selectedCurrency : defaultCurrency) != null ? _b : (_a = currencies == null ? void 0 : currencies[0]) == null ? void 0 : _a.value) != null ? _c : currency;
123
+ const initialRange = (_f = (_e = selectedRange != null ? selectedRange : defaultRange) != null ? _e : (_d = ranges[0]) == null ? void 0 : _d.value) != null ? _f : "1D";
124
+ const [internalCurrency, setInternalCurrency] = import_react.default.useState(initialCurrency);
125
+ const [internalRange, setInternalRange] = import_react.default.useState(initialRange);
126
+ import_react.default.useEffect(() => {
127
+ if (selectedCurrency !== void 0) {
128
+ setInternalCurrency(selectedCurrency);
129
+ }
130
+ }, [selectedCurrency]);
131
+ import_react.default.useEffect(() => {
132
+ if (selectedRange !== void 0) {
133
+ setInternalRange(selectedRange);
134
+ }
135
+ }, [selectedRange]);
136
+ const activeCurrency = selectedCurrency != null ? selectedCurrency : internalCurrency;
137
+ const activeRange = selectedRange != null ? selectedRange : internalRange;
138
+ const positive = ((_g = changePercent != null ? changePercent : change) != null ? _g : 0) >= 0;
139
+ const lineColor = accent;
140
+ const handleCurrencyChange = (next) => {
141
+ if (!next) return;
142
+ if (selectedCurrency === void 0) {
143
+ setInternalCurrency(next);
144
+ }
145
+ onCurrencyChange == null ? void 0 : onCurrencyChange(next);
146
+ };
147
+ const handleRangeChange = (next) => {
148
+ if (selectedRange === void 0) {
149
+ setInternalRange(next);
150
+ }
151
+ onRangeChange == null ? void 0 : onRangeChange(next);
152
+ };
153
+ const formatValue = (amount, options) => {
154
+ var _a2, _b2;
155
+ const formatterOptions = { currency: activeCurrency || currency, locale };
156
+ if (valueFormatter) return valueFormatter(amount, formatterOptions);
157
+ return (0, import_Numeric.formatCurrencyValue)(amount, {
158
+ ...formatterOptions,
159
+ minimumFractionDigits: (_a2 = options == null ? void 0 : options.minimumFractionDigits) != null ? _a2 : 0,
160
+ maximumFractionDigits: (_b2 = options == null ? void 0 : options.maximumFractionDigits) != null ? _b2 : 2
161
+ });
162
+ };
163
+ const yFormatter = (amount) => {
164
+ const formatterOptions = { currency: activeCurrency || currency, locale };
165
+ if (yTickFormatter) return yTickFormatter(amount, formatterOptions);
166
+ if (valueFormatter) return valueFormatter(amount, formatterOptions);
167
+ return (0, import_Numeric.formatCurrencyValue)(amount, {
168
+ ...formatterOptions,
169
+ minimumFractionDigits: 0,
170
+ maximumFractionDigits: 0
171
+ });
172
+ };
173
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
174
+ import_ChartCard.default,
175
+ {
176
+ className,
177
+ title,
178
+ subtitle,
179
+ right: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-wrap items-center justify-end gap-2", children: [
180
+ currencies && currencies.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
181
+ import_Select.default,
182
+ {
183
+ size: "sm",
184
+ fullWidth: false,
185
+ fit: true,
186
+ value: activeCurrency,
187
+ onChange: handleCurrencyChange,
188
+ options: currencies.map((option) => ({
189
+ label: option.label,
190
+ value: option.value
191
+ })),
192
+ className: "min-w-[88px]"
193
+ }
194
+ ) : null,
195
+ ranges.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
196
+ import_SegmentedTabs.default,
197
+ {
198
+ size: "sm",
199
+ value: activeRange,
200
+ onChange: handleRangeChange,
201
+ options: ranges,
202
+ className: "max-w-full overflow-x-auto"
203
+ }
204
+ ) : null
205
+ ] }),
206
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-5", children: [
207
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-3", children: [
208
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AssetBadge, { name, symbol, accent, icon }),
209
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "flex flex-wrap items-end gap-x-3 gap-y-2", children: [
210
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-4xl font-semibold tracking-[-0.04em] tabular-nums text-[var(--foreground)]", children: formatValue(value) }),
211
+ change != null || changePercent != null ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
212
+ "div",
213
+ {
214
+ className: [
215
+ "mb-1 inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-sm font-semibold",
216
+ positive ? "bg-emerald-50 text-emerald-700" : "bg-rose-50 text-rose-700"
217
+ ].join(" "),
218
+ children: [
219
+ positive ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.TrendUpIcon, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.TrendDownIcon, { className: "h-4 w-4" }),
220
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "tabular-nums", children: change != null ? (0, import_Numeric.formatNumericValue)(change, {
221
+ locale,
222
+ minimumFractionDigits: 2,
223
+ maximumFractionDigits: 2,
224
+ prefix: change > 0 ? "+" : ""
225
+ }) : null }),
226
+ changePercent != null ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "tabular-nums", children: [
227
+ "(",
228
+ (0, import_Numeric.formatPercentValue)(changePercent, {
229
+ locale,
230
+ minimumFractionDigits: 2,
231
+ maximumFractionDigits: 2
232
+ }),
233
+ ")"
234
+ ] }) : null
235
+ ]
236
+ }
237
+ ) : null
238
+ ] }),
239
+ helperText ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-xs text-[var(--muted)]", children: helperText }) : null
240
+ ] }) }),
241
+ !Array.isArray(data) || data.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "flex h-[320px] items-center justify-center rounded-[1.75rem] border border-dashed border-[var(--border)] bg-[color-mix(in_oklab,var(--surface)_72%,transparent)] px-6 text-sm text-[var(--muted)]", children: emptyState != null ? emptyState : "Sin datos para el rango seleccionado." }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
242
+ "div",
243
+ {
244
+ className: "min-w-0 rounded-[1.75rem] border border-[var(--border)] p-3",
245
+ style: {
246
+ background: `linear-gradient(180deg, ${alphaColor(lineColor, 0.1, "color-mix(in oklab,var(--primary) 10%,transparent)")}, transparent 22%, var(--card) 68%)`
247
+ },
248
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "h-[320px] min-h-[320px] w-full min-w-0 overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AutoSize.default, { className: "h-full w-full", children: ({ width, height }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
249
+ import_recharts.AreaChart,
250
+ {
251
+ width,
252
+ height,
253
+ data,
254
+ margin: { top: 18, right: 12, left: 0, bottom: 8 },
255
+ children: [
256
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("linearGradient", { id: gradientId, x1: "0", x2: "0", y1: "0", y2: "1", children: [
257
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "0%", stopColor: alphaColor(lineColor, 0.32, lineColor) }),
258
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "65%", stopColor: alphaColor(lineColor, 0.08, lineColor) }),
259
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("stop", { offset: "100%", stopColor: alphaColor(lineColor, 0.02, lineColor) })
260
+ ] }) }),
261
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
262
+ import_recharts.CartesianGrid,
263
+ {
264
+ vertical: false,
265
+ stroke: "var(--grid)",
266
+ strokeDasharray: "4 8"
267
+ }
268
+ ),
269
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
270
+ import_recharts.XAxis,
271
+ {
272
+ dataKey: xKey,
273
+ axisLine: false,
274
+ tickLine: false,
275
+ minTickGap: 28,
276
+ tickMargin: 12,
277
+ tick: { fontSize: 11, fill: "var(--muted)" },
278
+ tickFormatter: (value2) => xTickFormatter ? xTickFormatter(value2) : String(value2 != null ? value2 : "")
279
+ }
280
+ ),
281
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
282
+ import_recharts.YAxis,
283
+ {
284
+ axisLine: false,
285
+ tickLine: false,
286
+ width: 72,
287
+ tickMargin: 12,
288
+ tick: { fontSize: 11, fill: "var(--muted)" },
289
+ tickFormatter: (amount) => yFormatter(Number(amount))
290
+ }
291
+ ),
292
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
293
+ import_recharts.Tooltip,
294
+ {
295
+ cursor: {
296
+ stroke: alphaColor(lineColor, 0.55, lineColor),
297
+ strokeWidth: 1.25,
298
+ strokeDasharray: "4 6"
299
+ },
300
+ content: ({ active, payload, label }) => {
301
+ var _a2;
302
+ if (!active || !payload || payload.length === 0) return null;
303
+ const raw = (_a2 = payload[0]) == null ? void 0 : _a2.value;
304
+ const numeric = typeof raw === "number" ? raw : Number(raw);
305
+ const formattedValue = tooltipValueFormatter ? tooltipValueFormatter(numeric, activeCurrency || currency) : formatValue(numeric, {
306
+ minimumFractionDigits: 2,
307
+ maximumFractionDigits: 2
308
+ });
309
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "min-w-[140px] rounded-2xl border border-[var(--border)] bg-[color-mix(in_oklab,var(--card)_96%,white)] px-3 py-2.5 shadow-xl ring-1 ring-black/5 backdrop-blur", children: [
310
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "text-[11px] font-medium text-[var(--muted)]", children: tooltipLabelFormatter ? tooltipLabelFormatter(label) : String(label != null ? label : "") }),
311
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "mt-1 text-lg font-semibold tracking-[-0.03em] tabular-nums text-[var(--foreground)]", children: formattedValue })
312
+ ] });
313
+ }
314
+ }
315
+ ),
316
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
317
+ import_recharts.Area,
318
+ {
319
+ type: "monotone",
320
+ dataKey: yKey,
321
+ stroke: lineColor,
322
+ strokeWidth: 3,
323
+ fill: `url(#${gradientId})`,
324
+ fillOpacity: 1,
325
+ dot: false,
326
+ activeDot: {
327
+ r: 6,
328
+ strokeWidth: 3,
329
+ stroke: "#fff",
330
+ fill: lineColor
331
+ }
332
+ }
333
+ )
334
+ ]
335
+ }
336
+ ) }) })
337
+ }
338
+ )
339
+ ] })
340
+ }
341
+ );
342
+ }