@agg-market/ui 0.0.6 → 2.0.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 (137) hide show
  1. package/dist/badge.d.mts +5 -3
  2. package/dist/badge.d.ts +5 -3
  3. package/dist/badge.js +52 -12
  4. package/dist/badge.mjs +1 -1
  5. package/dist/button.d.mts +2 -2
  6. package/dist/button.d.ts +2 -2
  7. package/dist/button.js +19 -34
  8. package/dist/button.mjs +2 -2
  9. package/dist/card.d.mts +4 -2
  10. package/dist/card.d.ts +4 -2
  11. package/dist/card.js +8 -4
  12. package/dist/card.mjs +1 -1
  13. package/dist/chart.js +14 -7
  14. package/dist/chart.mjs +2 -2
  15. package/dist/{chunk-ZYREURXK.mjs → chunk-2MJY6RVY.mjs} +35 -35
  16. package/dist/{chunk-P23GR7NX.mjs → chunk-422MCIXV.mjs} +1 -1
  17. package/dist/chunk-4KMFDCAH.mjs +371 -0
  18. package/dist/{chunk-HM3CGN32.mjs → chunk-5GDNWQZS.mjs} +46 -46
  19. package/dist/{chunk-VIP7HSOU.mjs → chunk-5K7VXAYM.mjs} +4 -0
  20. package/dist/{chunk-BJNHDIDW.mjs → chunk-6425RRBI.mjs} +4 -4
  21. package/dist/{chunk-O2XH4A3G.mjs → chunk-7NISYVSJ.mjs} +22 -22
  22. package/dist/{chunk-MXBPDNMC.mjs → chunk-BEDUFOIG.mjs} +95 -22
  23. package/dist/{chunk-VC7LTPQD.mjs → chunk-BN5VVHNV.mjs} +2 -2
  24. package/dist/{chunk-JRS2M5GY.mjs → chunk-CTVMT3VL.mjs} +13 -6
  25. package/dist/{chunk-USLTNDJA.mjs → chunk-D5FTFSKL.mjs} +8 -8
  26. package/dist/{chunk-BLSHXIAH.mjs → chunk-D7JTOGYP.mjs} +6 -11
  27. package/dist/{chunk-W2DMBW4E.mjs → chunk-DL7STJQ5.mjs} +61 -33
  28. package/dist/chunk-ERGNR6UQ.mjs +67 -0
  29. package/dist/chunk-FO263M3V.mjs +10 -0
  30. package/dist/{chunk-3O4U3E5I.mjs → chunk-FO2QCB4Z.mjs} +8 -4
  31. package/dist/{chunk-OGI343OV.mjs → chunk-IGPNIM2B.mjs} +3 -2
  32. package/dist/chunk-K6IJ4WBM.mjs +67 -0
  33. package/dist/{chunk-PGSPYQOW.mjs → chunk-KAGYJ4XT.mjs} +17 -27
  34. package/dist/{chunk-RGZQHSNJ.mjs → chunk-KCPDVBIZ.mjs} +26 -17
  35. package/dist/{chunk-ZHKMDK5M.mjs → chunk-KFOATMAE.mjs} +87 -87
  36. package/dist/{chunk-I4YUYVJJ.mjs → chunk-LK5D3ZTK.mjs} +38 -27
  37. package/dist/{chunk-VUDJ3PYM.mjs → chunk-O46OFVH6.mjs} +40 -16
  38. package/dist/{chunk-RXACBTON.mjs → chunk-OA2IZ3VW.mjs} +16 -22
  39. package/dist/{chunk-F236MLT6.mjs → chunk-PZTHM6WG.mjs} +13 -10
  40. package/dist/{chunk-XELWY7SO.mjs → chunk-QYZKC7KG.mjs} +137 -104
  41. package/dist/{chunk-LWTQD345.mjs → chunk-S3H63TQ5.mjs} +57 -312
  42. package/dist/{chunk-MNSHWA6M.mjs → chunk-TA7LKYKP.mjs} +9 -8
  43. package/dist/{chunk-JH5VMNDL.mjs → chunk-V52WSZHQ.mjs} +8 -7
  44. package/dist/chunk-YJA5VQW6.mjs +167 -0
  45. package/dist/{chunk-EXF4SESB.mjs → chunk-ZFMCCBP6.mjs} +1 -1
  46. package/dist/connect-button.js +51 -73
  47. package/dist/connect-button.mjs +6 -6
  48. package/dist/deposit-modal.js +171 -177
  49. package/dist/deposit-modal.mjs +7 -7
  50. package/dist/event-list-item-details.js +222 -198
  51. package/dist/event-list-item-details.mjs +11 -11
  52. package/dist/event-list-item.js +172 -114
  53. package/dist/event-list-item.mjs +8 -8
  54. package/dist/event-list.js +391 -507
  55. package/dist/event-list.mjs +11 -11
  56. package/dist/event-market-page.d.mts +1 -1
  57. package/dist/event-market-page.d.ts +1 -1
  58. package/dist/event-market-page.js +826 -764
  59. package/dist/event-market-page.mjs +19 -19
  60. package/dist/hello-world.js +28 -16
  61. package/dist/hello-world.mjs +2 -2
  62. package/dist/home-page.js +395 -511
  63. package/dist/home-page.mjs +12 -12
  64. package/dist/icon.d.mts +1 -1
  65. package/dist/icon.d.ts +1 -1
  66. package/dist/icon.js +15 -17
  67. package/dist/icon.mjs +2 -2
  68. package/dist/index.d.mts +6 -6
  69. package/dist/index.d.ts +6 -6
  70. package/dist/index.js +1158 -956
  71. package/dist/index.mjs +34 -32
  72. package/dist/loading-icon.d.mts +1 -1
  73. package/dist/loading-icon.d.ts +1 -1
  74. package/dist/loading-icon.js +5 -9
  75. package/dist/loading-icon.mjs +2 -2
  76. package/dist/market-details.d.mts +2 -2
  77. package/dist/market-details.d.ts +2 -2
  78. package/dist/market-details.js +357 -551
  79. package/dist/market-details.mjs +13 -13
  80. package/dist/modal.js +4 -0
  81. package/dist/modal.mjs +1 -1
  82. package/dist/onboarding-modal.js +63 -67
  83. package/dist/onboarding-modal.mjs +6 -6
  84. package/dist/place-order.d.mts +1 -1
  85. package/dist/place-order.d.ts +1 -1
  86. package/dist/place-order.js +231 -466
  87. package/dist/place-order.mjs +9 -9
  88. package/dist/profile-modal.js +75 -77
  89. package/dist/profile-modal.mjs +6 -6
  90. package/dist/search.d.mts +2 -2
  91. package/dist/search.d.ts +2 -2
  92. package/dist/search.js +28 -34
  93. package/dist/search.mjs +4 -4
  94. package/dist/select.js +104 -99
  95. package/dist/select.mjs +3 -3
  96. package/dist/settlement.d.mts +1 -1
  97. package/dist/settlement.d.ts +1 -1
  98. package/dist/settlement.js +279 -59
  99. package/dist/settlement.mjs +6 -6
  100. package/dist/skeleton.js +15 -10
  101. package/dist/skeleton.mjs +2 -2
  102. package/dist/styles.css +1 -1
  103. package/dist/switch-button.js +13 -6
  104. package/dist/switch-button.mjs +1 -1
  105. package/dist/tabs.d.mts +8 -4
  106. package/dist/tabs.d.ts +8 -4
  107. package/dist/tabs.js +163 -420
  108. package/dist/tabs.mjs +4 -4
  109. package/dist/tailwind.css +1 -1
  110. package/dist/types-BVj9ky9P.d.mts +3 -0
  111. package/dist/types-BVj9ky9P.d.ts +3 -0
  112. package/dist/typography.d.mts +4 -2
  113. package/dist/typography.d.ts +4 -2
  114. package/dist/typography.js +49 -18
  115. package/dist/typography.mjs +5 -3
  116. package/dist/user-profile-page.d.mts +2 -2
  117. package/dist/user-profile-page.d.ts +2 -2
  118. package/dist/user-profile-page.js +200 -474
  119. package/dist/user-profile-page.mjs +7 -7
  120. package/dist/venue-logo.d.mts +2 -2
  121. package/dist/venue-logo.d.ts +2 -2
  122. package/dist/venue-logo.js +6 -11
  123. package/dist/venue-logo.mjs +1 -1
  124. package/dist/{venue-logo.types-BSAuY84j.d.ts → venue-logo.types-D8Cu2rAm.d.ts} +1 -1
  125. package/dist/{venue-logo.types-DACqcTvY.d.mts → venue-logo.types-HRf1yBLD.d.mts} +1 -1
  126. package/dist/withdraw-modal.js +72 -85
  127. package/dist/withdraw-modal.mjs +6 -6
  128. package/package.json +2 -2
  129. package/dist/chunk-AEMAY3MR.mjs +0 -44
  130. package/dist/chunk-DYEWXEEY.mjs +0 -37
  131. package/dist/chunk-QFQHD2V6.mjs +0 -146
  132. package/dist/chunk-ZDF7QP4G.mjs +0 -160
  133. package/dist/chunk-ZVBVGWSP.mjs +0 -15
  134. package/dist/types-Bed6Q0EK.d.mts +0 -3
  135. package/dist/types-Bed6Q0EK.d.ts +0 -3
  136. package/dist/{types-DkGlbmXq.d.mts → types-JBf1DZlH.d.mts} +2 -2
  137. package/dist/{types-DkGlbmXq.d.ts → types-JBf1DZlH.d.ts} +2 -2
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  EventListItem
3
- } from "./chunk-W2DMBW4E.mjs";
3
+ } from "./chunk-DL7STJQ5.mjs";
4
4
  import {
5
5
  Tabs
6
- } from "./chunk-LWTQD345.mjs";
6
+ } from "./chunk-S3H63TQ5.mjs";
7
7
  import {
8
8
  Skeleton
9
- } from "./chunk-JH5VMNDL.mjs";
9
+ } from "./chunk-V52WSZHQ.mjs";
10
10
  import {
11
11
  VenueLogo
12
- } from "./chunk-BLSHXIAH.mjs";
12
+ } from "./chunk-D7JTOGYP.mjs";
13
13
  import {
14
14
  Icon
15
- } from "./chunk-F236MLT6.mjs";
15
+ } from "./chunk-PZTHM6WG.mjs";
16
16
  import {
17
17
  Typography
18
- } from "./chunk-DYEWXEEY.mjs";
18
+ } from "./chunk-ERGNR6UQ.mjs";
19
19
  import {
20
20
  __spreadProps,
21
21
  __spreadValues,
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-GJ4U5NCE.mjs";
24
24
 
25
25
  // src/events/list/index.tsx
26
- import { useEffect, useMemo, useRef, useState } from "react";
26
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
27
27
  import { useEvents, useLabels } from "@agg-market/hooks";
28
28
 
29
29
  // src/events/list/event-list.constants.ts
@@ -90,7 +90,7 @@ var resolveTabVenus = (tab) => {
90
90
  import { jsx, jsxs } from "react/jsx-runtime";
91
91
  var renderTabIcon = (tab, isActive) => {
92
92
  if (tab.venueLogo) {
93
- return /* @__PURE__ */ jsx(VenueLogo, { venue: tab.venueLogo, size: "xs" });
93
+ return /* @__PURE__ */ jsx(VenueLogo, { venue: tab.venueLogo, size: "small" });
94
94
  }
95
95
  if (!tab.iconName)
96
96
  return null;
@@ -98,11 +98,37 @@ var renderTabIcon = (tab, isActive) => {
98
98
  Icon,
99
99
  {
100
100
  name: tab.iconName,
101
- size: "s",
101
+ size: "small",
102
102
  color: isActive ? "var(--agg-color-primary)" : "var(--agg-color-foreground)"
103
103
  }
104
104
  );
105
105
  };
106
+ var TAB_MIN_WIDTH = 80;
107
+ var TAB_HORIZONTAL_PADDING = 32;
108
+ var TAB_ICON_AND_GAP_WIDTH = 24;
109
+ var TAB_OUTER_BORDER_WIDTH = 2;
110
+ var TAB_INNER_BORDER_WIDTH = 1;
111
+ var measureTabLabelWidth = (label) => {
112
+ if (typeof document === "undefined")
113
+ return label.length * 9;
114
+ const canvas = document.createElement("canvas");
115
+ const context = canvas.getContext("2d");
116
+ if (!context)
117
+ return label.length * 9;
118
+ context.font = "700 16px Inter";
119
+ return context.measureText(label).width;
120
+ };
121
+ var estimateTabsWidth = (items) => {
122
+ if (items.length === 0)
123
+ return 0;
124
+ const tabsWidth = items.reduce((sum, item) => {
125
+ const textWidth = Math.ceil(measureTabLabelWidth(item.label));
126
+ const iconWidth = item.icon ? TAB_ICON_AND_GAP_WIDTH : 0;
127
+ const buttonWidth = Math.max(TAB_MIN_WIDTH, textWidth + iconWidth + TAB_HORIZONTAL_PADDING);
128
+ return sum + buttonWidth;
129
+ }, 0);
130
+ return tabsWidth + TAB_OUTER_BORDER_WIDTH + (items.length - 1) * TAB_INNER_BORDER_WIDTH;
131
+ };
106
132
  var EventList = ({
107
133
  title,
108
134
  maxItemsPerRow = 3,
@@ -120,6 +146,7 @@ var EventList = ({
120
146
  const [activeTabValue, setActiveTabValue] = useState(
121
147
  (_b = (_a = defaultEventListTabs[0]) == null ? void 0 : _a.value) != null ? _b : "matched"
122
148
  );
149
+ const [shouldUseSelectOverflow, setShouldUseSelectOverflow] = useState(false);
123
150
  const activeTab = useMemo(() => {
124
151
  return defaultEventListTabs.find((tab) => tab.value === activeTabValue);
125
152
  }, [activeTabValue]);
@@ -159,6 +186,46 @@ var EventList = ({
159
186
  };
160
187
  });
161
188
  }, [activeTabValue]);
189
+ const headerRef = useRef(null);
190
+ const titleRef = useRef(null);
191
+ const updateTabsOverflowBehavior = useCallback(() => {
192
+ if (typeof window === "undefined")
193
+ return;
194
+ const headerElement = headerRef.current;
195
+ const titleElement = titleRef.current;
196
+ if (!headerElement || !titleElement)
197
+ return;
198
+ const isDesktop = window.matchMedia("(min-width: 768px)").matches;
199
+ if (!isDesktop) {
200
+ setShouldUseSelectOverflow(false);
201
+ return;
202
+ }
203
+ const headerStyles = window.getComputedStyle(headerElement);
204
+ const rawGap = headerStyles.columnGap || headerStyles.gap || "0";
205
+ const horizontalGap = Number.parseFloat(rawGap) || 0;
206
+ const availableTabsWidth = headerElement.clientWidth - titleElement.getBoundingClientRect().width - horizontalGap;
207
+ const estimatedTabsWidth = estimateTabsWidth(tabsItems);
208
+ setShouldUseSelectOverflow(availableTabsWidth > 0 && estimatedTabsWidth > availableTabsWidth);
209
+ }, [tabsItems]);
210
+ useEffect(() => {
211
+ updateTabsOverflowBehavior();
212
+ }, [updateTabsOverflowBehavior]);
213
+ useEffect(() => {
214
+ if (typeof ResizeObserver === "undefined")
215
+ return;
216
+ const headerElement = headerRef.current;
217
+ const titleElement = titleRef.current;
218
+ if (!headerElement || !titleElement)
219
+ return;
220
+ const resizeObserver = new ResizeObserver(() => {
221
+ updateTabsOverflowBehavior();
222
+ });
223
+ resizeObserver.observe(headerElement);
224
+ resizeObserver.observe(titleElement);
225
+ return () => {
226
+ resizeObserver.disconnect();
227
+ };
228
+ }, [updateTabsOverflowBehavior]);
162
229
  const resolvedMaxItemsPerRow = Number.isFinite(maxItemsPerRow) ? Math.max(1, Math.floor(maxItemsPerRow)) : 1;
163
230
  const loadingPlaceholderCount = isFetchingNextPage ? Math.min(resolvedMaxItemsPerRow, resolvedMaxVisibleItems != null ? resolvedMaxVisibleItems : Infinity) : 0;
164
231
  const shouldRenderLoadingState = isLoading && tileEvents.length === 0;
@@ -200,19 +267,25 @@ var EventList = ({
200
267
  return /* @__PURE__ */ jsx(Skeleton, { view: "event-list", ariaLabel: labels.eventList.loading(title) });
201
268
  }
202
269
  return /* @__PURE__ */ jsxs("section", { className: "flex w-full flex-col gap-5", children: [
203
- /* @__PURE__ */ jsxs("header", { className: "flex flex-col md:flex-row w-full flex-nowrap items-start md:items-center justify-between gap-2 md:gap-4", children: [
204
- /* @__PURE__ */ jsx(Typography, { as: "h2", variant: "value", className: "truncate [&::first-letter]:uppercase", children: title }),
205
- /* @__PURE__ */ jsx(
206
- Tabs,
207
- {
208
- ariaLabel: labels.eventList.tabsAria(title),
209
- className: "max-w-full",
210
- items: tabsItems,
211
- value: activeTabValue,
212
- onChange: setActiveTabValue
213
- }
214
- )
215
- ] }),
270
+ /* @__PURE__ */ jsxs(
271
+ "header",
272
+ {
273
+ ref: headerRef,
274
+ className: "flex flex-col sm:flex-row w-full flex-nowrap items-start sm:items-center justify-between gap-2 sm:gap-4",
275
+ children: [
276
+ /* @__PURE__ */ jsx("div", { ref: titleRef, className: "min-w-0", children: /* @__PURE__ */ jsx(Typography, { as: "h2", variant: "title", className: "truncate [&::first-letter]:uppercase", children: title }) }),
277
+ /* @__PURE__ */ jsx(
278
+ Tabs,
279
+ {
280
+ ariaLabel: labels.eventList.tabsAria(title),
281
+ items: tabsItems,
282
+ value: activeTabValue,
283
+ onChange: setActiveTabValue
284
+ }
285
+ )
286
+ ]
287
+ }
288
+ ),
216
289
  /* @__PURE__ */ jsxs("div", { className: gridClassName, style: gridStyle, children: [
217
290
  tileEvents.map((event) => /* @__PURE__ */ jsx(
218
291
  EventListItem,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SwitchButton
3
- } from "./chunk-JRS2M5GY.mjs";
3
+ } from "./chunk-CTVMT3VL.mjs";
4
4
  import {
5
5
  __spreadProps,
6
6
  __spreadValues,
@@ -170,7 +170,7 @@ var LineChart = ({
170
170
  seriesSwitchAriaLabel: labels.common.lineChartSeriesSwitchAria,
171
171
  formatSeriesOptionAriaLabel: labels.common.lineChartSeriesOptionAria
172
172
  }) : null : null;
173
- return /* @__PURE__ */ jsxs("div", { className: cn("w-full", classNames == null ? void 0 : classNames.root), style: { width }, children: [
173
+ return /* @__PURE__ */ jsxs("div", { className: cn("group/agg-chart", "w-full", classNames == null ? void 0 : classNames.root), style: { width }, children: [
174
174
  !isLoading && seriesControls ? /* @__PURE__ */ jsx("div", { className: cn("mb-3", classNames == null ? void 0 : classNames.controls), children: seriesControls }) : null,
175
175
  /* @__PURE__ */ jsx(
176
176
  "div",
@@ -79,7 +79,10 @@ var SwitchButton = ({
79
79
  "div",
80
80
  {
81
81
  className: cn(
82
+ "group/agg-switch",
82
83
  "inline-flex min-w-0 rounded-agg-full bg-agg-secondary-hover font-agg-sans",
84
+ getMotionClassName(enableAnimations, "transition-background duration-200 ease-in-out"),
85
+ "cursor-pointer hover:bg-agg-tertiary",
83
86
  className
84
87
  ),
85
88
  children: /* @__PURE__ */ jsxs(
@@ -99,7 +102,7 @@ var SwitchButton = ({
99
102
  "pointer-events-none absolute inset-y-0 left-0 rounded-agg-full border-2 border-agg-primary bg-agg-secondary",
100
103
  getMotionClassName(
101
104
  enableAnimations,
102
- "transition-transform duration-[450ms] ease-[cubic-bezier(0.77,0,0.175,1)]"
105
+ "transition-transform duration-500 ease-[cubic-bezier(0.77,0,0.175,1)]"
103
106
  )
104
107
  ),
105
108
  style: {
@@ -123,15 +126,19 @@ var SwitchButton = ({
123
126
  disabled: option.disabled,
124
127
  className: cn(
125
128
  "relative z-10 min-w-0 rounded-agg-full px-5 py-1.5 font-agg-sans text-agg-base leading-agg-6 text-agg-foreground",
126
- getMotionClassName(enableAnimations, "transition-colors duration-300"),
129
+ getMotionClassName(
130
+ enableAnimations,
131
+ "transition-[colors] duration-200 ease-in-out"
132
+ ),
127
133
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-2 focus-visible:ring-offset-agg-secondary-hover",
128
- "disabled:cursor-not-allowed disabled:text-agg-muted-foreground",
134
+ "cursor-pointer disabled:cursor-not-allowed disabled:text-agg-muted-foreground",
129
135
  isActive ? "font-agg-bold" : "font-agg-normal"
130
136
  ),
131
- onClick: () => {
132
- if (option.disabled || isActive) {
137
+ onClick: (e) => {
138
+ e.preventDefault();
139
+ e.stopPropagation();
140
+ if (option.disabled || isActive)
133
141
  return;
134
- }
135
142
  onValueChange(option.value);
136
143
  },
137
144
  onKeyDown: (event) => {
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  Settlement
3
- } from "./chunk-QFQHD2V6.mjs";
3
+ } from "./chunk-4KMFDCAH.mjs";
4
4
  import {
5
5
  PlaceOrder
6
- } from "./chunk-VUDJ3PYM.mjs";
6
+ } from "./chunk-O46OFVH6.mjs";
7
7
  import {
8
8
  EventListItemDetails
9
- } from "./chunk-ZHKMDK5M.mjs";
9
+ } from "./chunk-KFOATMAE.mjs";
10
10
  import {
11
11
  MarketDetails
12
- } from "./chunk-XELWY7SO.mjs";
12
+ } from "./chunk-QYZKC7KG.mjs";
13
13
  import {
14
14
  Typography
15
- } from "./chunk-DYEWXEEY.mjs";
15
+ } from "./chunk-ERGNR6UQ.mjs";
16
16
  import {
17
17
  Card
18
- } from "./chunk-3O4U3E5I.mjs";
18
+ } from "./chunk-FO2QCB4Z.mjs";
19
19
  import {
20
20
  __spreadProps,
21
21
  __spreadValues,
@@ -93,8 +93,8 @@ var EventMarketPageUnavailableState = ({
93
93
  role: "status",
94
94
  "aria-label": ariaLabel != null ? ariaLabel : labels.eventMarketPage.unavailableAria,
95
95
  children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
96
- /* @__PURE__ */ jsx(Typography, { variant: "title", children: labels.eventMarketPage.unavailableTitle }),
97
- /* @__PURE__ */ jsx(Typography, { variant: "meta", children: labels.eventMarketPage.unavailableDescription })
96
+ /* @__PURE__ */ jsx(Typography, { variant: "body-large-strong", children: labels.eventMarketPage.unavailableTitle }),
97
+ /* @__PURE__ */ jsx(Typography, { variant: "label", className: "text-agg-muted-foreground", children: labels.eventMarketPage.unavailableDescription })
98
98
  ] })
99
99
  }
100
100
  );
@@ -12,7 +12,7 @@ import {
12
12
  import { useLabels } from "@agg-market/hooks";
13
13
 
14
14
  // src/primitives/venue-logo/logo-props.ts
15
- var DEFAULT_MONOCHROME_COLOR = "#000000";
15
+ var DEFAULT_MONOCHROME_COLOR = "currentColor";
16
16
  var resolveLogoPrimaryColor = ({
17
17
  brandColor,
18
18
  isColor = true,
@@ -216,14 +216,9 @@ var venueLogoLabels = {
216
216
  };
217
217
  var venueLogoNames = Object.keys(venueLogoRegistry);
218
218
  var sizeClasses = {
219
- xxs: "h-2 w-2",
220
- xs: "h-3 w-3",
221
- s: "h-4 w-4",
222
- ms: "h-5 w-5",
223
- m: "h-6 w-6",
224
- l: "h-8 w-8",
225
- xl: "h-10 w-10",
226
- xxl: "h-12 w-12"
219
+ small: "h-4 w-4",
220
+ medium: "h-6 w-6",
221
+ large: "h-8 w-8"
227
222
  };
228
223
 
229
224
  // src/primitives/venue-logo/index.tsx
@@ -233,7 +228,7 @@ var VenueLogo = ({
233
228
  isColor = true,
234
229
  isMonochromatic = false,
235
230
  color,
236
- size = "m",
231
+ size = "medium",
237
232
  className,
238
233
  ariaLabel,
239
234
  title
@@ -245,7 +240,7 @@ var VenueLogo = ({
245
240
  return /* @__PURE__ */ jsx5(
246
241
  Component,
247
242
  {
248
- className: cn("shrink-0", sizeClass, className),
243
+ className: cn("group/agg-venue-logo", "shrink-0", sizeClass, className),
249
244
  isColor: resolvedIsColor,
250
245
  color,
251
246
  "aria-label": ariaLabel != null ? ariaLabel : labels.venues[venue],
@@ -12,23 +12,23 @@ import {
12
12
  } from "./chunk-GHB3GOCW.mjs";
13
13
  import {
14
14
  Badge
15
- } from "./chunk-AEMAY3MR.mjs";
15
+ } from "./chunk-K6IJ4WBM.mjs";
16
16
  import {
17
17
  Skeleton,
18
18
  baseCardClassName
19
- } from "./chunk-JH5VMNDL.mjs";
19
+ } from "./chunk-V52WSZHQ.mjs";
20
20
  import {
21
21
  VenueLogo
22
- } from "./chunk-BLSHXIAH.mjs";
22
+ } from "./chunk-D7JTOGYP.mjs";
23
23
  import {
24
24
  Icon
25
- } from "./chunk-F236MLT6.mjs";
25
+ } from "./chunk-PZTHM6WG.mjs";
26
26
  import {
27
27
  Typography
28
- } from "./chunk-DYEWXEEY.mjs";
28
+ } from "./chunk-ERGNR6UQ.mjs";
29
29
  import {
30
30
  Card
31
- } from "./chunk-3O4U3E5I.mjs";
31
+ } from "./chunk-FO2QCB4Z.mjs";
32
32
  import {
33
33
  __objRest,
34
34
  __spreadValues,
@@ -70,7 +70,7 @@ var EventListItemUnavailableState = ({
70
70
  role: "status",
71
71
  "aria-label": ariaLabel != null ? ariaLabel : labels.eventItem.unavailableAria,
72
72
  children: /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-1", classNames == null ? void 0 : classNames.header), children: [
73
- /* @__PURE__ */ jsx(Typography, { variant: "title", className: cn("truncate", classNames == null ? void 0 : classNames.title), children: labels.eventItem.unavailableTitle }),
73
+ /* @__PURE__ */ jsx(Typography, { variant: "body-large-strong", className: cn("truncate", classNames == null ? void 0 : classNames.title), children: labels.eventItem.unavailableTitle }),
74
74
  /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-agg-muted-foreground", children: labels.eventItem.unavailableDescription })
75
75
  ] })
76
76
  }
@@ -114,8 +114,8 @@ var EventListItemContent = ({
114
114
  const handleKeyDown = (eventToHandle) => {
115
115
  if (!onClick)
116
116
  return;
117
- if (eventToHandle.key === "Enter" || eventToHandle.key === " ") {
118
- eventToHandle.preventDefault();
117
+ if ((eventToHandle == null ? void 0 : eventToHandle.key) === "Enter" || (eventToHandle == null ? void 0 : eventToHandle.key) === " ") {
118
+ eventToHandle == null ? void 0 : eventToHandle.preventDefault();
119
119
  onClick();
120
120
  }
121
121
  };
@@ -124,9 +124,17 @@ var EventListItemContent = ({
124
124
  return null;
125
125
  if (Math.abs(value) < config.arbitrageThreshold)
126
126
  return null;
127
- return /* @__PURE__ */ jsxs("div", { className: cn("flex items-baseline gap-1", "text-agg-success"), children: [
128
- /* @__PURE__ */ jsx(Typography, { variant: "label", className: "text-agg-success", children: config.formatPercent(value) }),
129
- /* @__PURE__ */ jsx(Icon, { name: "triangle-up", size: "xxs", title: labels.eventItem.arbitrage })
127
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1", "text-agg-success"), children: [
128
+ /* @__PURE__ */ jsx(Typography, { variant: "label-strong", className: "text-agg-success", children: config.formatPercent(value) }),
129
+ /* @__PURE__ */ jsx(
130
+ Icon,
131
+ {
132
+ name: "triangle-up",
133
+ size: "small",
134
+ title: labels.eventItem.arbitrage,
135
+ className: "size-2!"
136
+ }
137
+ )
130
138
  ] });
131
139
  };
132
140
  return /* @__PURE__ */ jsxs(
@@ -151,9 +159,10 @@ var EventListItemContent = ({
151
159
  /* @__PURE__ */ jsx(
152
160
  Typography,
153
161
  {
154
- variant: "title",
162
+ variant: "body-strong",
155
163
  className: cn(
156
- "min-w-0 text-agg-base font-agg-bold leading-agg-6 whitespace-normal [display:-webkit-box] [-webkit-box-orient:vertical] [-webkit-line-clamp:2] md:block md:truncate md:whitespace-nowrap",
164
+ "min-w-0 text-agg-base font-agg-bold leading-agg-6 ",
165
+ "truncate text-wrap wrap-break-word line-clamp-2",
157
166
  classNames == null ? void 0 : classNames.title
158
167
  ),
159
168
  children: resolvedTitle
@@ -170,7 +179,7 @@ var EventListItemContent = ({
170
179
  "div",
171
180
  {
172
181
  className: cn(
173
- "grid w-full grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-3",
182
+ "flex flex-row gap-3 w-full items-center justify-between",
174
183
  classNames == null ? void 0 : classNames.outcomeRow
175
184
  ),
176
185
  children: [
@@ -182,21 +191,23 @@ var EventListItemContent = ({
182
191
  children: formattedTitle
183
192
  }
184
193
  ),
185
- renderArbitrage(arbitragePercent),
186
- showBadge ? /* @__PURE__ */ jsx(
187
- Badge,
188
- {
189
- text: config.formatPercent(probability),
190
- prefix: showVenueLogo ? /* @__PURE__ */ jsx(VenueLogo, { venue: visibleOutcome.venue, size: "s" }) : void 0,
191
- size: "l",
192
- classNames: {
193
- root: cn(
194
- "h-9 min-w-[101px] justify-center px-4 text-agg-base leading-agg-6",
195
- classNames == null ? void 0 : classNames.badge
196
- )
194
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-3 items-center justify-end", children: [
195
+ renderArbitrage(arbitragePercent),
196
+ showBadge ? /* @__PURE__ */ jsx(
197
+ Badge,
198
+ {
199
+ text: config.formatPercent(probability),
200
+ prefix: showVenueLogo ? /* @__PURE__ */ jsx(VenueLogo, { venue: visibleOutcome.venue, size: "small" }) : void 0,
201
+ size: "large",
202
+ classNames: {
203
+ root: cn(
204
+ "h-9 min-w-[101px] justify-center px-4 text-agg-base leading-agg-6",
205
+ classNames == null ? void 0 : classNames.badge
206
+ )
207
+ }
197
208
  }
198
- }
199
- ) : null
209
+ ) : null
210
+ ] })
200
211
  ]
201
212
  },
202
213
  `${visibleOutcome.market.id}-${visibleOutcome.outcome.id}`
@@ -211,7 +222,7 @@ var EventListItemContent = ({
211
222
  classNames == null ? void 0 : classNames.footer
212
223
  ),
213
224
  children: [
214
- /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", "text-agg-sm leading-agg-5"), children: [
225
+ /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1", "text-agg-sm leading-agg-5"), children: [
215
226
  /* @__PURE__ */ jsx("span", { className: "truncate text-agg-muted-foreground", children: formatCountLabel(
216
227
  marketCount,
217
228
  labels.eventItem.marketSingular,
@@ -219,16 +230,33 @@ var EventListItemContent = ({
219
230
  ) }),
220
231
  /* @__PURE__ */ jsx("span", { className: "text-agg-muted-foreground", children: "\xD7" }),
221
232
  singleVenue ? /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 truncate text-agg-muted-foreground", children: [
222
- showVenueLogo ? /* @__PURE__ */ jsx(VenueLogo, { venue: singleVenue, size: "xs" }) : null,
233
+ showVenueLogo ? /* @__PURE__ */ jsx(
234
+ VenueLogo,
235
+ {
236
+ venue: singleVenue,
237
+ size: "small",
238
+ isMonochromatic: true,
239
+ className: "text-agg-muted-foreground!"
240
+ }
241
+ ) : null,
223
242
  /* @__PURE__ */ jsx("span", { children: venueLabel })
224
243
  ] }) : /* @__PURE__ */ jsx("span", { className: "truncate text-agg-muted-foreground", children: formatCountLabel(
225
244
  venueCount,
226
245
  labels.eventItem.venueSingular,
227
246
  labels.eventItem.venuePlural
228
247
  ) }),
229
- showVenueLogo && !singleVenue && visibleVenueLogos.length > 0 ? /* @__PURE__ */ jsx("span", { className: "flex items-center gap-1 overflow-hidden", children: visibleVenueLogos.map((venue) => /* @__PURE__ */ jsx(VenueLogo, { venue, size: "xs" }, venue)) }) : null
248
+ showVenueLogo && !singleVenue && visibleVenueLogos.length > 0 ? /* @__PURE__ */ jsx("span", { className: "flex items-center gap-1 overflow-hidden", children: visibleVenueLogos.map((venue) => /* @__PURE__ */ jsx(
249
+ VenueLogo,
250
+ {
251
+ venue,
252
+ size: "small",
253
+ isMonochromatic: true,
254
+ className: "text-agg-muted-foreground!"
255
+ },
256
+ venue
257
+ )) }) : null
230
258
  ] }),
231
- volumeLabel ? /* @__PURE__ */ jsx(Typography, { variant: "meta", className: "text-agg-sm", children: volumeLabel }) : null
259
+ volumeLabel ? /* @__PURE__ */ jsx(Typography, { variant: "label", className: "text-agg-sm text-agg-muted-foreground", children: volumeLabel }) : null
232
260
  ]
233
261
  }
234
262
  )
@@ -0,0 +1,67 @@
1
+ import {
2
+ cn
3
+ } from "./chunk-GJ4U5NCE.mjs";
4
+
5
+ // src/primitives/typography/typography.constants.ts
6
+ var typographyVariants = [
7
+ "display",
8
+ "heading",
9
+ "title",
10
+ "title-strong",
11
+ "body-large",
12
+ "body-large-strong",
13
+ "body",
14
+ "body-strong",
15
+ "label",
16
+ "label-strong",
17
+ "label-caps",
18
+ "caption",
19
+ "caption-strong",
20
+ "caption-caps",
21
+ "overline"
22
+ ];
23
+ var typographyVariantClasses = {
24
+ display: cn("agg-type-display"),
25
+ heading: cn("agg-type-heading"),
26
+ title: cn("agg-type-title"),
27
+ "title-strong": cn("agg-type-title-strong"),
28
+ "body-large": cn("agg-type-body-large"),
29
+ "body-large-strong": cn("agg-type-body-large-strong"),
30
+ body: cn("agg-type-body"),
31
+ "body-strong": cn("agg-type-body-strong"),
32
+ label: cn("agg-type-label"),
33
+ "label-strong": cn("agg-type-label-strong"),
34
+ "label-caps": cn("agg-type-label-caps"),
35
+ caption: cn("agg-type-caption"),
36
+ "caption-strong": cn("agg-type-caption-strong"),
37
+ "caption-caps": cn("agg-type-caption-caps"),
38
+ overline: cn("agg-type-overline")
39
+ };
40
+
41
+ // src/primitives/typography/index.tsx
42
+ import { jsx } from "react/jsx-runtime";
43
+ var Typography = ({
44
+ as: Component = "p",
45
+ variant = "body",
46
+ className,
47
+ children
48
+ }) => {
49
+ return /* @__PURE__ */ jsx(
50
+ Component,
51
+ {
52
+ className: cn(
53
+ "group/agg-typography",
54
+ "text-agg-foreground",
55
+ typographyVariantClasses[variant],
56
+ className
57
+ ),
58
+ children
59
+ }
60
+ );
61
+ };
62
+ Typography.displayName = "Typography";
63
+
64
+ export {
65
+ typographyVariants,
66
+ Typography
67
+ };
@@ -0,0 +1,10 @@
1
+ // src/primitives/icon/icon.constants.ts
2
+ var iconSizeClasses = {
3
+ small: "h-4 w-4",
4
+ medium: "h-6 w-6",
5
+ large: "h-8 w-8"
6
+ };
7
+
8
+ export {
9
+ iconSizeClasses
10
+ };
@@ -9,19 +9,23 @@ import {
9
9
  import { useSdkUiConfig } from "@agg-market/hooks";
10
10
  import { jsx } from "react/jsx-runtime";
11
11
  var Card = (_a) => {
12
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
12
+ var _b = _a, { className, onClick } = _b, props = __objRest(_b, ["className", "onClick"]);
13
13
  const { enableAnimations } = useSdkUiConfig();
14
14
  return /* @__PURE__ */ jsx(
15
15
  "div",
16
- __spreadValues({
16
+ __spreadValues(__spreadValues({
17
17
  className: cn(
18
+ "group/agg-card",
18
19
  "flex w-full flex-col font-agg-sans",
19
20
  "rounded-agg-xl border border-agg-separator",
20
21
  "bg-agg-secondary text-agg-foreground shadow-agg-card",
21
- getMotionClassName(enableAnimations, "transition-shadow hover:shadow-agg-card-hover"),
22
+ getMotionClassName(
23
+ enableAnimations,
24
+ "transition-shadow hover:shadow-agg-card-hover duration-300 ease-in-out"
25
+ ),
22
26
  className
23
27
  )
24
- }, props)
28
+ }, onClick ? { onClick } : {}), props)
25
29
  );
26
30
  };
27
31
  Card.displayName = "Card";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  iconSizeClasses
3
- } from "./chunk-ZVBVGWSP.mjs";
3
+ } from "./chunk-FO263M3V.mjs";
4
4
  import {
5
5
  cn
6
6
  } from "./chunk-GJ4U5NCE.mjs";
@@ -9,7 +9,7 @@ import {
9
9
  import { useLabels, useSdkUiConfig } from "@agg-market/hooks";
10
10
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
11
  var LoadingIcon = ({
12
- size = "m",
12
+ size = "medium",
13
13
  className,
14
14
  ariaLabel
15
15
  }) => {
@@ -21,6 +21,7 @@ var LoadingIcon = ({
21
21
  role: "status",
22
22
  "aria-label": ariaLabel != null ? ariaLabel : labels.common.loading,
23
23
  className: cn(
24
+ "group/agg-loading-icon",
24
25
  "inline-grid place-items-center text-agg-primary will-change-transform",
25
26
  className
26
27
  ),