framepexls-ui-lib 2.1.0 → 2.2.1

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 (240) 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/QuickActionsDock.d.mts +26 -0
  146. package/dist/QuickActionsDock.d.ts +26 -0
  147. package/dist/QuickActionsDock.js +99 -0
  148. package/dist/QuickActionsDock.mjs +79 -0
  149. package/dist/QuoteEditor.d.mts +2 -2
  150. package/dist/QuoteEditor.d.ts +2 -2
  151. package/dist/RechartsBarCard.d.mts +1 -2
  152. package/dist/RechartsBarCard.d.ts +1 -2
  153. package/dist/RechartsDonutCard.d.mts +1 -2
  154. package/dist/RechartsDonutCard.d.ts +1 -2
  155. package/dist/RechartsTimeSeriesCard.d.mts +1 -2
  156. package/dist/RechartsTimeSeriesCard.d.ts +1 -2
  157. package/dist/ReviewHistory.d.mts +3 -3
  158. package/dist/ReviewHistory.d.ts +3 -3
  159. package/dist/Reviews.d.mts +1 -2
  160. package/dist/Reviews.d.ts +1 -2
  161. package/dist/SearchInput.d.mts +2 -2
  162. package/dist/SearchInput.d.ts +2 -2
  163. package/dist/SegmentedTabs.d.mts +1 -2
  164. package/dist/SegmentedTabs.d.ts +1 -2
  165. package/dist/Select.d.mts +2 -2
  166. package/dist/Select.d.ts +2 -2
  167. package/dist/ShareAccess.d.mts +1 -2
  168. package/dist/ShareAccess.d.ts +1 -2
  169. package/dist/Sidebar.d.mts +3 -2
  170. package/dist/Sidebar.d.ts +3 -2
  171. package/dist/Sidebar.js +590 -377
  172. package/dist/Sidebar.mjs +590 -377
  173. package/dist/StatCard.d.mts +1 -2
  174. package/dist/StatCard.d.ts +1 -2
  175. package/dist/Steps.d.mts +3 -3
  176. package/dist/Steps.d.ts +3 -3
  177. package/dist/StorageUsage.d.mts +1 -2
  178. package/dist/StorageUsage.d.ts +1 -2
  179. package/dist/SupportChatWidget.d.mts +128 -0
  180. package/dist/SupportChatWidget.d.ts +128 -0
  181. package/dist/SupportChatWidget.js +696 -0
  182. package/dist/SupportChatWidget.mjs +678 -0
  183. package/dist/Table.d.mts +4 -5
  184. package/dist/Table.d.ts +4 -5
  185. package/dist/TableRecordButton.d.mts +1 -2
  186. package/dist/TableRecordButton.d.ts +1 -2
  187. package/dist/TimeAgo.d.mts +2 -2
  188. package/dist/TimeAgo.d.ts +2 -2
  189. package/dist/TimePanel.d.mts +1 -2
  190. package/dist/TimePanel.d.ts +1 -2
  191. package/dist/TimeRangeField.d.mts +2 -2
  192. package/dist/TimeRangeField.d.ts +2 -2
  193. package/dist/Toast.d.mts +1 -2
  194. package/dist/Toast.d.ts +1 -2
  195. package/dist/Tooltip.d.mts +1 -2
  196. package/dist/Tooltip.d.ts +1 -2
  197. package/dist/UploadCard.d.mts +1 -2
  198. package/dist/UploadCard.d.ts +1 -2
  199. package/dist/WordEditor.d.mts +3 -3
  200. package/dist/WordEditor.d.ts +3 -3
  201. package/dist/WorkflowDiagram.d.mts +1 -2
  202. package/dist/WorkflowDiagram.d.ts +1 -2
  203. package/dist/{animations-CHrNeawW.d.mts → animations-Di5tQRLw.d.mts} +2 -2
  204. package/dist/{animations-CHrNeawW.d.ts → animations-Di5tQRLw.d.ts} +2 -2
  205. package/dist/animations.d.mts +1 -1
  206. package/dist/animations.d.ts +1 -1
  207. package/dist/charts.d.mts +2 -1
  208. package/dist/charts.d.ts +2 -1
  209. package/dist/charts.js +6 -0
  210. package/dist/charts.mjs +6 -2
  211. package/dist/i18n.d.mts +1 -2
  212. package/dist/i18n.d.ts +1 -2
  213. package/dist/iconos/WorkflowEdgesSvg.d.mts +1 -2
  214. package/dist/iconos/WorkflowEdgesSvg.d.ts +1 -2
  215. package/dist/iconos/index.d.mts +1546 -1547
  216. package/dist/iconos/index.d.ts +1546 -1547
  217. package/dist/iconos/regular-icons.js +2 -2
  218. package/dist/iconos/regular-icons.mjs +2 -2
  219. package/dist/index.d.mts +11 -4
  220. package/dist/index.d.ts +11 -4
  221. package/dist/index.js +30 -0
  222. package/dist/index.mjs +167 -148
  223. package/dist/internal/AutoSize.d.mts +1 -2
  224. package/dist/internal/AutoSize.d.ts +1 -2
  225. package/dist/map.css +1 -1
  226. package/dist/theme/FontSizeController.d.mts +2 -2
  227. package/dist/theme/FontSizeController.d.ts +2 -2
  228. package/dist/theme/FontSizeController.js +1 -1
  229. package/dist/theme/FontSizeController.mjs +1 -1
  230. package/dist/theme/ThemeController.d.mts +2 -3
  231. package/dist/theme/ThemeController.d.ts +2 -3
  232. package/dist/theme/ThemeProvider.d.mts +1 -2
  233. package/dist/theme/ThemeProvider.d.ts +1 -2
  234. package/dist/theme/ThemeScript.d.mts +2 -2
  235. package/dist/theme/ThemeScript.d.ts +2 -2
  236. package/dist/theme/ThemeToggle.d.mts +2 -2
  237. package/dist/theme/ThemeToggle.d.ts +2 -2
  238. package/dist/theme/ThemeToggle.js +4 -4
  239. package/dist/theme/ThemeToggle.mjs +4 -4
  240. package/package.json +1 -1
@@ -0,0 +1,225 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import React from "react";
4
+ import { TrendDownIcon, TrendUpIcon } from "./iconos/index.mjs";
5
+ import { formatCurrencyValue, formatNumericValue, formatPercentValue } from "./Numeric.mjs";
6
+ function alphaColor(color, alpha, fallback) {
7
+ if (!color) return fallback;
8
+ if (color.startsWith("#")) {
9
+ let hex = color.slice(1);
10
+ if (hex.length === 3) {
11
+ hex = hex.split("").map((char) => char + char).join("");
12
+ }
13
+ if (hex.length === 6) {
14
+ const r = Number.parseInt(hex.slice(0, 2), 16);
15
+ const g = Number.parseInt(hex.slice(2, 4), 16);
16
+ const b = Number.parseInt(hex.slice(4, 6), 16);
17
+ return `rgba(${r}, ${g}, ${b}, ${alpha})`;
18
+ }
19
+ }
20
+ return `color-mix(in oklab, ${color} ${Math.round(alpha * 100)}%, transparent)`;
21
+ }
22
+ function Sparkline({
23
+ data,
24
+ color,
25
+ width = 128,
26
+ height = 56
27
+ }) {
28
+ var _a;
29
+ const gradientId = React.useId();
30
+ if (!Array.isArray(data) || data.length < 2) {
31
+ return /* @__PURE__ */ jsx("div", { className: "h-8 w-20 rounded-full bg-[color-mix(in_oklab,var(--surface)_80%,transparent)]" });
32
+ }
33
+ const min = Math.min(...data);
34
+ const max = Math.max(...data);
35
+ const range = max - min || 1;
36
+ const step = width / Math.max(1, data.length - 1);
37
+ const points = data.map((value, index) => {
38
+ const x = index * step;
39
+ const y = height - (value - min) / range * height;
40
+ return `${x},${y}`;
41
+ }).join(" ");
42
+ const areaPoints = `0,${height} ${points} ${width},${height}`;
43
+ const last = (_a = data[data.length - 1]) != null ? _a : 0;
44
+ return /* @__PURE__ */ jsxs(
45
+ "svg",
46
+ {
47
+ viewBox: `0 0 ${width} ${height}`,
48
+ className: "h-14 w-32 overflow-visible",
49
+ "aria-hidden": "true",
50
+ focusable: "false",
51
+ children: [
52
+ /* @__PURE__ */ jsxs("defs", { children: [
53
+ /* @__PURE__ */ jsxs("linearGradient", { id: `${gradientId}-line`, x1: "0", x2: "1", y1: "0", y2: "0", children: [
54
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: alphaColor(color, 0.24, color) }),
55
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: color })
56
+ ] }),
57
+ /* @__PURE__ */ jsxs("linearGradient", { id: `${gradientId}-fill`, x1: "0", x2: "0", y1: "0", y2: "1", children: [
58
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: alphaColor(color, 0.4, color) }),
59
+ /* @__PURE__ */ jsx("stop", { offset: "58%", stopColor: alphaColor(color, 0.18, color) }),
60
+ /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: alphaColor(color, 0.02, color) })
61
+ ] })
62
+ ] }),
63
+ /* @__PURE__ */ jsx(
64
+ "polygon",
65
+ {
66
+ points: areaPoints,
67
+ fill: `url(#${gradientId}-fill)`
68
+ }
69
+ ),
70
+ /* @__PURE__ */ jsx(
71
+ "polyline",
72
+ {
73
+ fill: "none",
74
+ stroke: `url(#${gradientId}-line)`,
75
+ strokeWidth: "2.5",
76
+ strokeLinecap: "round",
77
+ strokeLinejoin: "round",
78
+ points
79
+ }
80
+ ),
81
+ /* @__PURE__ */ jsx(
82
+ "circle",
83
+ {
84
+ cx: width,
85
+ cy: height - (last - min) / range * height,
86
+ r: "2.75",
87
+ fill: color
88
+ }
89
+ )
90
+ ]
91
+ }
92
+ );
93
+ }
94
+ function AssetAvatar({ symbol, accent, icon }) {
95
+ if (icon) {
96
+ return /* @__PURE__ */ jsx(
97
+ "div",
98
+ {
99
+ className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-2xl text-white shadow-sm",
100
+ style: { background: accent != null ? accent : "var(--primary)" },
101
+ children: icon
102
+ }
103
+ );
104
+ }
105
+ return /* @__PURE__ */ jsx(
106
+ "div",
107
+ {
108
+ className: "flex h-12 w-12 shrink-0 items-center justify-center rounded-2xl text-sm font-semibold text-white shadow-sm",
109
+ style: { background: accent != null ? accent : "var(--primary)" },
110
+ children: symbol.slice(0, 3).toUpperCase()
111
+ }
112
+ );
113
+ }
114
+ function AssetTickerRow({
115
+ items,
116
+ locale = "es-MX",
117
+ className,
118
+ selectedId,
119
+ onSelect,
120
+ priceFormatter
121
+ }) {
122
+ return /* @__PURE__ */ jsx(
123
+ "div",
124
+ {
125
+ className: [
126
+ "grid gap-3 sm:grid-cols-2 xl:grid-cols-3",
127
+ className != null ? className : ""
128
+ ].join(" "),
129
+ children: items.map((item) => {
130
+ var _a, _b, _c, _d, _e;
131
+ const positive = ((_b = (_a = item.changePercent) != null ? _a : item.change) != null ? _b : 0) >= 0;
132
+ const accent = (_c = item.accent) != null ? _c : "var(--primary)";
133
+ const selected = selectedId === item.id;
134
+ return /* @__PURE__ */ jsxs(
135
+ "button",
136
+ {
137
+ type: "button",
138
+ onClick: () => onSelect == null ? void 0 : onSelect(item),
139
+ className: [
140
+ "group relative flex w-full items-center gap-4 overflow-hidden rounded-[1.6rem] border px-4 py-3 text-left shadow-sm transition",
141
+ "bg-[linear-gradient(180deg,color-mix(in_oklab,var(--card)_96%,white),var(--card))]",
142
+ "hover:-translate-y-0.5 hover:shadow-md focus:outline-none focus-visible:ring-2 focus-visible:ring-[color-mix(in_oklab,var(--ring)_35%,transparent)]",
143
+ selected ? "border-[color-mix(in_oklab,var(--ring)_40%,transparent)] ring-1 ring-[color-mix(in_oklab,var(--ring)_22%,transparent)]" : "border-[var(--border)]"
144
+ ].join(" "),
145
+ children: [
146
+ /* @__PURE__ */ jsx(
147
+ "div",
148
+ {
149
+ "aria-hidden": "true",
150
+ className: "pointer-events-none absolute inset-y-0 right-0 hidden w-1/2 sm:block",
151
+ style: {
152
+ background: `linear-gradient(90deg, transparent 0%, ${alphaColor(accent, 0.08, accent)} 32%, ${alphaColor(accent, 0.18, accent)} 100%)`
153
+ }
154
+ }
155
+ ),
156
+ /* @__PURE__ */ jsx(
157
+ "div",
158
+ {
159
+ "aria-hidden": "true",
160
+ className: "pointer-events-none absolute inset-x-4 bottom-0 h-px",
161
+ style: { background: `linear-gradient(90deg, transparent, ${alphaColor(accent, 0.42, accent)}, transparent)` }
162
+ }
163
+ ),
164
+ /* @__PURE__ */ jsx("div", { className: "relative z-10 shrink-0", children: /* @__PURE__ */ jsx(AssetAvatar, { symbol: item.symbol, accent, icon: item.icon }) }),
165
+ /* @__PURE__ */ jsxs("div", { className: "relative z-10 min-w-0 flex-1", children: [
166
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
167
+ /* @__PURE__ */ jsx("p", { className: "truncate text-[15px] font-semibold text-[var(--foreground)]", children: item.name }),
168
+ /* @__PURE__ */ jsx("span", { className: "rounded-full bg-[color-mix(in_oklab,var(--surface)_82%,transparent)] px-2 py-0.5 text-[10px] font-semibold uppercase tracking-[0.18em] text-[var(--muted)]", children: item.symbol })
169
+ ] }),
170
+ /* @__PURE__ */ jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-x-2 gap-y-1", children: [
171
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-semibold tabular-nums text-[var(--foreground)]", children: priceFormatter ? priceFormatter(item.price, item, locale) : formatCurrencyValue(item.price, {
172
+ currency: (_d = item.priceCurrency) != null ? _d : "USD",
173
+ locale,
174
+ minimumFractionDigits: 2,
175
+ maximumFractionDigits: 2
176
+ }) }),
177
+ item.changePercent != null ? /* @__PURE__ */ jsxs(
178
+ "span",
179
+ {
180
+ className: [
181
+ "inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] font-semibold",
182
+ positive ? "bg-emerald-50 text-emerald-700" : "bg-rose-50 text-rose-700"
183
+ ].join(" "),
184
+ children: [
185
+ positive ? /* @__PURE__ */ jsx(TrendUpIcon, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx(TrendDownIcon, { className: "h-3.5 w-3.5" }),
186
+ formatPercentValue(item.changePercent, {
187
+ locale,
188
+ minimumFractionDigits: 2,
189
+ maximumFractionDigits: 2
190
+ })
191
+ ]
192
+ }
193
+ ) : item.change != null ? /* @__PURE__ */ jsxs(
194
+ "span",
195
+ {
196
+ className: [
197
+ "inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] font-semibold",
198
+ positive ? "bg-emerald-50 text-emerald-700" : "bg-rose-50 text-rose-700"
199
+ ].join(" "),
200
+ children: [
201
+ positive ? /* @__PURE__ */ jsx(TrendUpIcon, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ jsx(TrendDownIcon, { className: "h-3.5 w-3.5" }),
202
+ formatNumericValue(item.change, {
203
+ locale,
204
+ minimumFractionDigits: 2,
205
+ maximumFractionDigits: 2,
206
+ prefix: item.change > 0 ? "+" : ""
207
+ })
208
+ ]
209
+ }
210
+ ) : null
211
+ ] }),
212
+ item.meta ? /* @__PURE__ */ jsx("div", { className: "mt-1 text-xs text-[var(--muted)]", children: item.meta }) : null
213
+ ] }),
214
+ /* @__PURE__ */ jsx("div", { className: "relative z-10 hidden shrink-0 sm:block", children: /* @__PURE__ */ jsx(Sparkline, { data: (_e = item.sparkline) != null ? _e : [], color: accent }) })
215
+ ]
216
+ },
217
+ item.id
218
+ );
219
+ })
220
+ }
221
+ );
222
+ }
223
+ export {
224
+ AssetTickerRow as default
225
+ };
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
  import { ChatUser, ChatThread, ChatMessage, ChatPresenceUser } from './ChatCenter.mjs';
4
3
  import { LanguageOption } from './LanguageSwitcher.mjs';
@@ -61,6 +60,7 @@ type AuthTopbarBrowserNotifications = {
61
60
  type AuthTopbarProps = {
62
61
  title: string;
63
62
  subtitle?: string;
63
+ contentClassName?: string;
64
64
  user?: SidebarUser;
65
65
  loading?: boolean;
66
66
  loadingMinDurationMs?: number;
@@ -117,6 +117,6 @@ type AuthTopbarProps = {
117
117
  }) => void | Promise<void>;
118
118
  };
119
119
  };
120
- declare function AuthTopbar({ title, subtitle, user, loading, loadingMinDurationMs, onLogout, onNavigate, passwordHref, invitesHref, pendingInvites, accountMenuEntries, settingsMenuEntries, showSearchButton, appearance, omniSearch, tour, browserNotifications, impersonation, notifications, chat, }: AuthTopbarProps): react_jsx_runtime.JSX.Element;
120
+ declare function AuthTopbar({ title, subtitle, contentClassName, user, loading, loadingMinDurationMs, onLogout, onNavigate, passwordHref, invitesHref, pendingInvites, accountMenuEntries, settingsMenuEntries, showSearchButton, appearance, omniSearch, tour, browserNotifications, impersonation, notifications, chat, }: AuthTopbarProps): React__default.JSX.Element;
121
121
 
122
122
  export { type AuthTopbarAccountMenuEntry, type AuthTopbarAccountMenuItem, type AuthTopbarBrowserNotifications, type AuthTopbarProps, type AuthTopbarSettingsMenuEntry, type AuthTopbarSettingsMenuItem, AuthTopbar as default };
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
  import { ChatUser, ChatThread, ChatMessage, ChatPresenceUser } from './ChatCenter.js';
4
3
  import { LanguageOption } from './LanguageSwitcher.js';
@@ -61,6 +60,7 @@ type AuthTopbarBrowserNotifications = {
61
60
  type AuthTopbarProps = {
62
61
  title: string;
63
62
  subtitle?: string;
63
+ contentClassName?: string;
64
64
  user?: SidebarUser;
65
65
  loading?: boolean;
66
66
  loadingMinDurationMs?: number;
@@ -117,6 +117,6 @@ type AuthTopbarProps = {
117
117
  }) => void | Promise<void>;
118
118
  };
119
119
  };
120
- declare function AuthTopbar({ title, subtitle, user, loading, loadingMinDurationMs, onLogout, onNavigate, passwordHref, invitesHref, pendingInvites, accountMenuEntries, settingsMenuEntries, showSearchButton, appearance, omniSearch, tour, browserNotifications, impersonation, notifications, chat, }: AuthTopbarProps): react_jsx_runtime.JSX.Element;
120
+ declare function AuthTopbar({ title, subtitle, contentClassName, user, loading, loadingMinDurationMs, onLogout, onNavigate, passwordHref, invitesHref, pendingInvites, accountMenuEntries, settingsMenuEntries, showSearchButton, appearance, omniSearch, tour, browserNotifications, impersonation, notifications, chat, }: AuthTopbarProps): React__default.JSX.Element;
121
121
 
122
122
  export { type AuthTopbarAccountMenuEntry, type AuthTopbarAccountMenuItem, type AuthTopbarBrowserNotifications, type AuthTopbarProps, type AuthTopbarSettingsMenuEntry, type AuthTopbarSettingsMenuItem, AuthTopbar as default };
@@ -53,6 +53,7 @@ var import_skeleton = require("./internal/skeleton");
53
53
  function AuthTopbar({
54
54
  title,
55
55
  subtitle,
56
+ contentClassName,
56
57
  user,
57
58
  loading,
58
59
  loadingMinDurationMs = import_skeleton.DEFAULT_SKELETON_MIN_DURATION_MS,
@@ -331,7 +332,7 @@ function AuthTopbar({
331
332
  className: ["sticky top-14 xl:top-0 z-30 border-b border-[var(--border)] bg-[var(--card)] shadow-sm"].join(" "),
332
333
  "aria-busy": showLoading ? "true" : void 0,
333
334
  children: [
334
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "mx-auto flex h-14 w-full max-w-7xl items-center justify-between gap-3 px-4", children: [
335
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: contentClassName != null ? contentClassName : "mx-auto flex h-14 w-full max-w-7xl items-center justify-between gap-3 px-4", children: [
335
336
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "min-w-0", children: showLoading ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "space-y-2", children: [
336
337
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "fx-skeleton", style: { width: "10rem", height: 12, borderRadius: 10 } }),
337
338
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "fx-skeleton", style: { width: "14rem", height: 10, borderRadius: 10, opacity: 0.9 } })
@@ -32,6 +32,7 @@ import { DEFAULT_SKELETON_MIN_DURATION_MS, useMinVisible } from "./internal/skel
32
32
  function AuthTopbar({
33
33
  title,
34
34
  subtitle,
35
+ contentClassName,
35
36
  user,
36
37
  loading,
37
38
  loadingMinDurationMs = DEFAULT_SKELETON_MIN_DURATION_MS,
@@ -310,7 +311,7 @@ function AuthTopbar({
310
311
  className: ["sticky top-14 xl:top-0 z-30 border-b border-[var(--border)] bg-[var(--card)] shadow-sm"].join(" "),
311
312
  "aria-busy": showLoading ? "true" : void 0,
312
313
  children: [
313
- /* @__PURE__ */ jsxs("div", { className: "mx-auto flex h-14 w-full max-w-7xl items-center justify-between gap-3 px-4", children: [
314
+ /* @__PURE__ */ jsxs("div", { className: contentClassName != null ? contentClassName : "mx-auto flex h-14 w-full max-w-7xl items-center justify-between gap-3 px-4", children: [
314
315
  /* @__PURE__ */ jsx("div", { className: "min-w-0", children: showLoading ? /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
315
316
  /* @__PURE__ */ jsx("div", { className: "fx-skeleton", style: { width: "10rem", height: 12, borderRadius: 10 } }),
316
317
  /* @__PURE__ */ jsx("div", { className: "fx-skeleton", style: { width: "14rem", height: 10, borderRadius: 10, opacity: 0.9 } })
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as React from 'react';
2
2
 
3
3
  type Props = {
4
4
  sources?: Array<string | null | undefined>;
@@ -11,6 +11,6 @@ type Props = {
11
11
  className?: string;
12
12
  showCounter?: boolean;
13
13
  };
14
- declare function AvatarGroup({ sources, images, labels, max, size, overlap, radiusClass, className, showCounter, }: Props): react_jsx_runtime.JSX.Element;
14
+ declare function AvatarGroup({ sources, images, labels, max, size, overlap, radiusClass, className, showCounter, }: Props): React.JSX.Element;
15
15
 
16
16
  export { AvatarGroup as default };
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as React from 'react';
2
2
 
3
3
  type Props = {
4
4
  sources?: Array<string | null | undefined>;
@@ -11,6 +11,6 @@ type Props = {
11
11
  className?: string;
12
12
  showCounter?: boolean;
13
13
  };
14
- declare function AvatarGroup({ sources, images, labels, max, size, overlap, radiusClass, className, showCounter, }: Props): react_jsx_runtime.JSX.Element;
14
+ declare function AvatarGroup({ sources, images, labels, max, size, overlap, radiusClass, className, showCounter, }: Props): React.JSX.Element;
15
15
 
16
16
  export { AvatarGroup as default };
@@ -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 Props = {
4
4
  size?: number;
@@ -10,6 +10,6 @@ type Props = {
10
10
  radiusClass?: string;
11
11
  color?: "accent" | "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
12
12
  };
13
- declare function AvatarSquare({ size, src, alt, initials, imageFit, className, radiusClass, color, }: Props): react_jsx_runtime.JSX.Element;
13
+ declare function AvatarSquare({ size, src, alt, initials, imageFit, className, radiusClass, color, }: Props): React__default.JSX.Element;
14
14
 
15
15
  export { AvatarSquare as default };
@@ -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 Props = {
4
4
  size?: number;
@@ -10,6 +10,6 @@ type Props = {
10
10
  radiusClass?: string;
11
11
  color?: "accent" | "slate" | "gray" | "zinc" | "neutral" | "stone" | "red" | "orange" | "amber" | "yellow" | "lime" | "green" | "emerald" | "teal" | "cyan" | "sky" | "blue" | "indigo" | "violet" | "purple" | "fuchsia" | "pink" | "rose";
12
12
  };
13
- declare function AvatarSquare({ size, src, alt, initials, imageFit, className, radiusClass, color, }: Props): react_jsx_runtime.JSX.Element;
13
+ declare function AvatarSquare({ size, src, alt, initials, imageFit, className, radiusClass, color, }: Props): React__default.JSX.Element;
14
14
 
15
15
  export { AvatarSquare as default };
@@ -35,6 +35,7 @@ module.exports = __toCommonJS(AvatarSquare_exports);
35
35
  var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_image = __toESM(require("next/image"));
38
+ var import_iconos = require("./iconos");
38
39
  function AvatarSquare({
39
40
  size = 32,
40
41
  src,
@@ -73,31 +74,32 @@ function AvatarSquare({
73
74
  pink: "ring-pink-300/40 dark:ring-pink-300/20",
74
75
  rose: "ring-rose-300/40 dark:ring-rose-300/20"
75
76
  };
76
- const GRADIENT = {
77
- accent: "bg-gradient-to-br from-[color-mix(in_oklab,var(--primary)_14%,white)] to-[color-mix(in_oklab,var(--primary)_28%,white)] dark:from-[color-mix(in_oklab,var(--primary)_16%,black)] dark:to-[color-mix(in_oklab,var(--primary)_30%,black)]",
78
- slate: "bg-gradient-to-br from-slate-100 to-slate-200 dark:from-slate-900/20 dark:to-slate-800/20",
79
- gray: "bg-gradient-to-br from-gray-100 to-gray-200 dark:from-gray-900/20 dark:to-gray-800/20",
80
- zinc: "bg-gradient-to-br from-zinc-100 to-zinc-200 dark:from-zinc-900/20 dark:to-zinc-800/20",
81
- neutral: "bg-gradient-to-br from-neutral-100 to-neutral-200 dark:from-neutral-900/20 dark:to-neutral-800/20",
82
- stone: "bg-gradient-to-br from-stone-100 to-stone-200 dark:from-stone-900/20 dark:to-stone-800/20",
83
- red: "bg-gradient-to-br from-red-100 to-red-200 dark:from-red-900/20 dark:to-red-800/20",
84
- orange: "bg-gradient-to-br from-orange-100 to-orange-200 dark:from-orange-900/20 dark:to-orange-800/20",
85
- amber: "bg-gradient-to-br from-amber-100 to-amber-200 dark:from-amber-900/20 dark:to-amber-800/20",
86
- yellow: "bg-gradient-to-br from-yellow-100 to-yellow-200 dark:from-yellow-900/20 dark:to-yellow-800/20",
87
- lime: "bg-gradient-to-br from-lime-100 to-lime-200 dark:from-lime-900/20 dark:to-lime-800/20",
88
- green: "bg-gradient-to-br from-green-100 to-green-200 dark:from-green-900/20 dark:to-green-800/20",
89
- emerald: "bg-gradient-to-br from-emerald-100 to-emerald-200 dark:from-emerald-900/20 dark:to-emerald-800/20",
90
- teal: "bg-gradient-to-br from-teal-100 to-teal-200 dark:from-teal-900/20 dark:to-teal-800/20",
91
- cyan: "bg-gradient-to-br from-cyan-100 to-cyan-200 dark:from-cyan-900/20 dark:to-cyan-800/20",
92
- sky: "bg-gradient-to-br from-sky-100 to-sky-200 dark:from-sky-900/20 dark:to-sky-800/20",
93
- blue: "bg-gradient-to-br from-blue-100 to-blue-200 dark:from-blue-900/20 dark:to-blue-800/20",
94
- indigo: "bg-gradient-to-br from-indigo-100 to-indigo-200 dark:from-indigo-900/20 dark:to-indigo-800/20",
95
- violet: "bg-gradient-to-br from-violet-100 to-violet-200 dark:from-violet-900/20 dark:to-violet-800/20",
96
- purple: "bg-gradient-to-br from-purple-100 to-purple-200 dark:from-purple-900/20 dark:to-purple-800/20",
97
- fuchsia: "bg-gradient-to-br from-fuchsia-100 to-fuchsia-200 dark:from-fuchsia-900/20 dark:to-fuchsia-800/20",
98
- pink: "bg-gradient-to-br from-pink-100 to-pink-200 dark:from-pink-900/20 dark:to-pink-800/20",
99
- rose: "bg-gradient-to-br from-rose-100 to-rose-200 dark:from-rose-900/20 dark:to-rose-800/20"
77
+ const FALLBACK_STYLE = {
78
+ accent: "bg-[color-mix(in_oklab,var(--primary)_12%,var(--card))] text-[color-mix(in_oklab,var(--primary)_72%,var(--foreground))] dark:bg-[color-mix(in_oklab,var(--primary)_18%,var(--card))] dark:text-[color-mix(in_oklab,var(--primary)_54%,var(--foreground))]",
79
+ slate: "bg-slate-100 text-slate-700 dark:bg-slate-800/55 dark:text-slate-200",
80
+ gray: "bg-gray-100 text-gray-700 dark:bg-gray-800/55 dark:text-gray-200",
81
+ zinc: "bg-zinc-100 text-zinc-700 dark:bg-zinc-800/55 dark:text-zinc-200",
82
+ neutral: "bg-neutral-100 text-neutral-700 dark:bg-neutral-800/55 dark:text-neutral-200",
83
+ stone: "bg-stone-100 text-stone-700 dark:bg-stone-800/55 dark:text-stone-200",
84
+ red: "bg-red-50 text-red-700 dark:bg-red-500/16 dark:text-red-200",
85
+ orange: "bg-orange-50 text-orange-700 dark:bg-orange-500/16 dark:text-orange-200",
86
+ amber: "bg-amber-50 text-amber-700 dark:bg-amber-500/16 dark:text-amber-200",
87
+ yellow: "bg-yellow-50 text-yellow-700 dark:bg-yellow-500/16 dark:text-yellow-200",
88
+ lime: "bg-lime-50 text-lime-700 dark:bg-lime-500/16 dark:text-lime-200",
89
+ green: "bg-green-50 text-green-700 dark:bg-green-500/16 dark:text-green-200",
90
+ emerald: "bg-emerald-50 text-emerald-700 dark:bg-emerald-500/16 dark:text-emerald-200",
91
+ teal: "bg-teal-50 text-teal-700 dark:bg-teal-500/16 dark:text-teal-200",
92
+ cyan: "bg-cyan-50 text-cyan-700 dark:bg-cyan-500/16 dark:text-cyan-200",
93
+ sky: "bg-sky-50 text-sky-700 dark:bg-sky-500/16 dark:text-sky-200",
94
+ blue: "bg-blue-50 text-blue-700 dark:bg-blue-500/16 dark:text-blue-200",
95
+ indigo: "bg-indigo-50 text-indigo-700 dark:bg-indigo-500/16 dark:text-indigo-200",
96
+ violet: "bg-violet-50 text-violet-700 dark:bg-violet-500/16 dark:text-violet-200",
97
+ purple: "bg-purple-50 text-purple-700 dark:bg-purple-500/16 dark:text-purple-200",
98
+ fuchsia: "bg-fuchsia-50 text-fuchsia-700 dark:bg-fuchsia-500/16 dark:text-fuchsia-200",
99
+ pink: "bg-pink-50 text-pink-700 dark:bg-pink-500/16 dark:text-pink-200",
100
+ rose: "bg-rose-50 text-rose-700 dark:bg-rose-500/16 dark:text-rose-200"
100
101
  };
102
+ const fallbackText = typeof initials === "string" && initials.trim() ? initials.trim() : alt ? alt.split(/\s+/).slice(0, 2).map((s) => s[0]).join("") : "";
101
103
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
102
104
  "div",
103
105
  {
@@ -124,14 +126,14 @@ function AvatarSquare({
124
126
  "div",
125
127
  {
126
128
  className: [
127
- "grid place-items-center h-full w-full text-[0.6875rem] font-semibold uppercase tracking-wide text-[var(--foreground)]",
129
+ "grid place-items-center h-full w-full text-[0.6875rem] font-semibold uppercase tracking-wide",
128
130
  "drop-shadow-[0_1px_0_rgba(0,0,0,0.10)] dark:drop-shadow-none",
129
131
  radiusClass,
130
- GRADIENT[color]
132
+ FALLBACK_STYLE[color]
131
133
  ].join(" "),
132
134
  "aria-label": alt || initials || "avatar",
133
135
  title: alt || initials || void 0,
134
- children: typeof initials === "string" && initials.trim() ? initials.trim() : alt ? alt.split(/\s+/).slice(0, 2).map((s) => s[0]).join("") : ""
136
+ children: fallbackText ? fallbackText : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_iconos.ImageIcon, { className: "h-[52%] w-[52%]" })
135
137
  }
136
138
  )
137
139
  }
@@ -2,6 +2,7 @@
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import React from "react";
4
4
  import Image from "next/image";
5
+ import { ImageIcon } from "./iconos/index.mjs";
5
6
  function AvatarSquare({
6
7
  size = 32,
7
8
  src,
@@ -40,31 +41,32 @@ function AvatarSquare({
40
41
  pink: "ring-pink-300/40 dark:ring-pink-300/20",
41
42
  rose: "ring-rose-300/40 dark:ring-rose-300/20"
42
43
  };
43
- const GRADIENT = {
44
- accent: "bg-gradient-to-br from-[color-mix(in_oklab,var(--primary)_14%,white)] to-[color-mix(in_oklab,var(--primary)_28%,white)] dark:from-[color-mix(in_oklab,var(--primary)_16%,black)] dark:to-[color-mix(in_oklab,var(--primary)_30%,black)]",
45
- slate: "bg-gradient-to-br from-slate-100 to-slate-200 dark:from-slate-900/20 dark:to-slate-800/20",
46
- gray: "bg-gradient-to-br from-gray-100 to-gray-200 dark:from-gray-900/20 dark:to-gray-800/20",
47
- zinc: "bg-gradient-to-br from-zinc-100 to-zinc-200 dark:from-zinc-900/20 dark:to-zinc-800/20",
48
- neutral: "bg-gradient-to-br from-neutral-100 to-neutral-200 dark:from-neutral-900/20 dark:to-neutral-800/20",
49
- stone: "bg-gradient-to-br from-stone-100 to-stone-200 dark:from-stone-900/20 dark:to-stone-800/20",
50
- red: "bg-gradient-to-br from-red-100 to-red-200 dark:from-red-900/20 dark:to-red-800/20",
51
- orange: "bg-gradient-to-br from-orange-100 to-orange-200 dark:from-orange-900/20 dark:to-orange-800/20",
52
- amber: "bg-gradient-to-br from-amber-100 to-amber-200 dark:from-amber-900/20 dark:to-amber-800/20",
53
- yellow: "bg-gradient-to-br from-yellow-100 to-yellow-200 dark:from-yellow-900/20 dark:to-yellow-800/20",
54
- lime: "bg-gradient-to-br from-lime-100 to-lime-200 dark:from-lime-900/20 dark:to-lime-800/20",
55
- green: "bg-gradient-to-br from-green-100 to-green-200 dark:from-green-900/20 dark:to-green-800/20",
56
- emerald: "bg-gradient-to-br from-emerald-100 to-emerald-200 dark:from-emerald-900/20 dark:to-emerald-800/20",
57
- teal: "bg-gradient-to-br from-teal-100 to-teal-200 dark:from-teal-900/20 dark:to-teal-800/20",
58
- cyan: "bg-gradient-to-br from-cyan-100 to-cyan-200 dark:from-cyan-900/20 dark:to-cyan-800/20",
59
- sky: "bg-gradient-to-br from-sky-100 to-sky-200 dark:from-sky-900/20 dark:to-sky-800/20",
60
- blue: "bg-gradient-to-br from-blue-100 to-blue-200 dark:from-blue-900/20 dark:to-blue-800/20",
61
- indigo: "bg-gradient-to-br from-indigo-100 to-indigo-200 dark:from-indigo-900/20 dark:to-indigo-800/20",
62
- violet: "bg-gradient-to-br from-violet-100 to-violet-200 dark:from-violet-900/20 dark:to-violet-800/20",
63
- purple: "bg-gradient-to-br from-purple-100 to-purple-200 dark:from-purple-900/20 dark:to-purple-800/20",
64
- fuchsia: "bg-gradient-to-br from-fuchsia-100 to-fuchsia-200 dark:from-fuchsia-900/20 dark:to-fuchsia-800/20",
65
- pink: "bg-gradient-to-br from-pink-100 to-pink-200 dark:from-pink-900/20 dark:to-pink-800/20",
66
- rose: "bg-gradient-to-br from-rose-100 to-rose-200 dark:from-rose-900/20 dark:to-rose-800/20"
44
+ const FALLBACK_STYLE = {
45
+ accent: "bg-[color-mix(in_oklab,var(--primary)_12%,var(--card))] text-[color-mix(in_oklab,var(--primary)_72%,var(--foreground))] dark:bg-[color-mix(in_oklab,var(--primary)_18%,var(--card))] dark:text-[color-mix(in_oklab,var(--primary)_54%,var(--foreground))]",
46
+ slate: "bg-slate-100 text-slate-700 dark:bg-slate-800/55 dark:text-slate-200",
47
+ gray: "bg-gray-100 text-gray-700 dark:bg-gray-800/55 dark:text-gray-200",
48
+ zinc: "bg-zinc-100 text-zinc-700 dark:bg-zinc-800/55 dark:text-zinc-200",
49
+ neutral: "bg-neutral-100 text-neutral-700 dark:bg-neutral-800/55 dark:text-neutral-200",
50
+ stone: "bg-stone-100 text-stone-700 dark:bg-stone-800/55 dark:text-stone-200",
51
+ red: "bg-red-50 text-red-700 dark:bg-red-500/16 dark:text-red-200",
52
+ orange: "bg-orange-50 text-orange-700 dark:bg-orange-500/16 dark:text-orange-200",
53
+ amber: "bg-amber-50 text-amber-700 dark:bg-amber-500/16 dark:text-amber-200",
54
+ yellow: "bg-yellow-50 text-yellow-700 dark:bg-yellow-500/16 dark:text-yellow-200",
55
+ lime: "bg-lime-50 text-lime-700 dark:bg-lime-500/16 dark:text-lime-200",
56
+ green: "bg-green-50 text-green-700 dark:bg-green-500/16 dark:text-green-200",
57
+ emerald: "bg-emerald-50 text-emerald-700 dark:bg-emerald-500/16 dark:text-emerald-200",
58
+ teal: "bg-teal-50 text-teal-700 dark:bg-teal-500/16 dark:text-teal-200",
59
+ cyan: "bg-cyan-50 text-cyan-700 dark:bg-cyan-500/16 dark:text-cyan-200",
60
+ sky: "bg-sky-50 text-sky-700 dark:bg-sky-500/16 dark:text-sky-200",
61
+ blue: "bg-blue-50 text-blue-700 dark:bg-blue-500/16 dark:text-blue-200",
62
+ indigo: "bg-indigo-50 text-indigo-700 dark:bg-indigo-500/16 dark:text-indigo-200",
63
+ violet: "bg-violet-50 text-violet-700 dark:bg-violet-500/16 dark:text-violet-200",
64
+ purple: "bg-purple-50 text-purple-700 dark:bg-purple-500/16 dark:text-purple-200",
65
+ fuchsia: "bg-fuchsia-50 text-fuchsia-700 dark:bg-fuchsia-500/16 dark:text-fuchsia-200",
66
+ pink: "bg-pink-50 text-pink-700 dark:bg-pink-500/16 dark:text-pink-200",
67
+ rose: "bg-rose-50 text-rose-700 dark:bg-rose-500/16 dark:text-rose-200"
67
68
  };
69
+ const fallbackText = typeof initials === "string" && initials.trim() ? initials.trim() : alt ? alt.split(/\s+/).slice(0, 2).map((s) => s[0]).join("") : "";
68
70
  return /* @__PURE__ */ jsx(
69
71
  "div",
70
72
  {
@@ -91,14 +93,14 @@ function AvatarSquare({
91
93
  "div",
92
94
  {
93
95
  className: [
94
- "grid place-items-center h-full w-full text-[0.6875rem] font-semibold uppercase tracking-wide text-[var(--foreground)]",
96
+ "grid place-items-center h-full w-full text-[0.6875rem] font-semibold uppercase tracking-wide",
95
97
  "drop-shadow-[0_1px_0_rgba(0,0,0,0.10)] dark:drop-shadow-none",
96
98
  radiusClass,
97
- GRADIENT[color]
99
+ FALLBACK_STYLE[color]
98
100
  ].join(" "),
99
101
  "aria-label": alt || initials || "avatar",
100
102
  title: alt || initials || void 0,
101
- children: typeof initials === "string" && initials.trim() ? initials.trim() : alt ? alt.split(/\s+/).slice(0, 2).map((s) => s[0]).join("") : ""
103
+ children: fallbackText ? fallbackText : /* @__PURE__ */ jsx(ImageIcon, { className: "h-[52%] w-[52%]" })
102
104
  }
103
105
  )
104
106
  }
package/dist/Badge.d.mts CHANGED
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
 
4
3
  type Tone = "accent" | "emerald" | "indigo" | "amber" | "slate" | "rose" | "sky" | "violet" | "cyan" | "teal" | "pink" | "orange" | "lime";
@@ -11,6 +10,6 @@ declare function Badge({ tone, color, size, children, onClick, title, className,
11
10
  onClick?: (e: React__default.MouseEvent) => void;
12
11
  title?: string;
13
12
  className?: string;
14
- }): react_jsx_runtime.JSX.Element;
13
+ }): React__default.JSX.Element;
15
14
 
16
15
  export { type Tone, Badge as default };
package/dist/Badge.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
 
4
3
  type Tone = "accent" | "emerald" | "indigo" | "amber" | "slate" | "rose" | "sky" | "violet" | "cyan" | "teal" | "pink" | "orange" | "lime";
@@ -11,6 +10,6 @@ declare function Badge({ tone, color, size, children, onClick, title, className,
11
10
  onClick?: (e: React__default.MouseEvent) => void;
12
11
  title?: string;
13
12
  className?: string;
14
- }): react_jsx_runtime.JSX.Element;
13
+ }): React__default.JSX.Element;
15
14
 
16
15
  export { type Tone, Badge as default };
@@ -1,6 +1,5 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as React from 'react';
2
2
  import { Tone } from './Badge.mjs';
3
- import 'react';
4
3
 
5
4
  type Item = {
6
5
  label: string;
@@ -12,6 +11,6 @@ declare function BadgeCluster({ items, max, align, className, usePortal, }: {
12
11
  align?: "left" | "right";
13
12
  className?: string;
14
13
  usePortal?: boolean;
15
- }): react_jsx_runtime.JSX.Element;
14
+ }): React.JSX.Element;
16
15
 
17
16
  export { BadgeCluster as default };
@@ -1,6 +1,5 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as React from 'react';
2
2
  import { Tone } from './Badge.js';
3
- import 'react';
4
3
 
5
4
  type Item = {
6
5
  label: string;
@@ -12,6 +11,6 @@ declare function BadgeCluster({ items, max, align, className, usePortal, }: {
12
11
  align?: "left" | "right";
13
12
  className?: string;
14
13
  usePortal?: boolean;
15
- }): react_jsx_runtime.JSX.Element;
14
+ }): React.JSX.Element;
16
15
 
17
16
  export { BadgeCluster as default };
@@ -1,4 +1,3 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
1
  import React__default from 'react';
3
2
 
4
3
  type BreadcrumbItem = {
@@ -15,6 +14,6 @@ type BreadcrumbProps = {
15
14
  loadingMinDurationMs?: number;
16
15
  className?: string;
17
16
  };
18
- declare function Breadcrumb({ items, maxItems, loading, loadingMinDurationMs, className, }: BreadcrumbProps): react_jsx_runtime.JSX.Element;
17
+ declare function Breadcrumb({ items, maxItems, loading, loadingMinDurationMs, className, }: BreadcrumbProps): React__default.JSX.Element;
19
18
 
20
19
  export { type BreadcrumbItem, type BreadcrumbProps, Breadcrumb as default };