@agg-build/ui 4.14.0 → 4.17.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.
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  ConnectKalshiModal,
4
4
  dispatchAggDepositNotification
5
- } from "./chunk-TXQJUVRW.mjs";
5
+ } from "./chunk-QGONLJLE.mjs";
6
6
  import {
7
7
  BoltIcon,
8
8
  Button,
@@ -36,7 +36,7 @@ import {
36
36
  shortenAddress,
37
37
  useOptionalToast,
38
38
  venueLogoLabels
39
- } from "./chunk-W7HQVQ22.mjs";
39
+ } from "./chunk-RR44PSKH.mjs";
40
40
 
41
41
  // src/deposit/index.tsx
42
42
  import { useAggAuthState, useAggUiConfig, useDepositAddresses, useLabels as useLabels11 } from "@agg-build/hooks";
@@ -3062,7 +3062,8 @@ var TRADING_ACCESS_VENUES = [
3062
3062
  "myriad",
3063
3063
  "hyperliquid",
3064
3064
  "novig",
3065
- "prophetx"
3065
+ "prophetx",
3066
+ "pred"
3066
3067
  ];
3067
3068
  var TRADING_ACCESS_VENUE_ITEMS = TRADING_ACCESS_VENUES.map((id) => ({ id }));
3068
3069
  var SectionTitle2 = ({ children }) => /* @__PURE__ */ jsx22("h3", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children });
@@ -9,13 +9,13 @@ import {
9
9
  getTradingVenueLabel,
10
10
  prepareSettlementDifferences,
11
11
  resolveOrderEligibilityMessage
12
- } from "./chunk-6EHT5OFU.mjs";
12
+ } from "./chunk-HFMKCV4L.mjs";
13
13
  import {
14
14
  ConnectKalshiModal,
15
15
  GeoBlockBanner,
16
16
  SharedKycModal,
17
17
  subscribeAggDepositNotification
18
- } from "./chunk-TXQJUVRW.mjs";
18
+ } from "./chunk-QGONLJLE.mjs";
19
19
  import {
20
20
  AGG_TERMS_OF_SERVICE_URL,
21
21
  Button,
@@ -48,7 +48,7 @@ import {
48
48
  resolveResolvedOutcomeLabel,
49
49
  skeletonViews,
50
50
  useOptionalToast
51
- } from "./chunk-W7HQVQ22.mjs";
51
+ } from "./chunk-RR44PSKH.mjs";
52
52
 
53
53
  // src/trading/types.ts
54
54
  import { Venue, enumGuard, isFiniteNonNeg, safeParse } from "@agg-build/sdk";
@@ -5011,7 +5011,7 @@ var PlaceOrder = ({
5011
5011
  disabledVenues,
5012
5012
  isConfigLoading: isAppConfigLoading
5013
5013
  }) === "available";
5014
- const needsKalshiConnection = isAuthenticated && hasKalshiConnectionState && isKalshiAvailable && isKalshiRoute && !isKalshiAccountActive;
5014
+ const needsKalshiConnection = !isPaperMode && isAuthenticated && hasKalshiConnectionState && isKalshiAvailable && isKalshiRoute && !isKalshiAccountActive;
5015
5015
  const handleVerifyKalshi = useCallback3(
5016
5016
  (credentials) => __async(null, null, function* () {
5017
5017
  if (onConnectKalshi) {
@@ -19,7 +19,7 @@ import {
19
19
  selectPrimaryVenueMarket,
20
20
  skeletonViews,
21
21
  sortOutcomes
22
- } from "./chunk-W7HQVQ22.mjs";
22
+ } from "./chunk-RR44PSKH.mjs";
23
23
 
24
24
  // src/trading/trading-context/index.tsx
25
25
  import { useEventTradingContext } from "@agg-build/hooks";
@@ -12,7 +12,7 @@ import {
12
12
  isErrorWithStatus,
13
13
  useEventListTabs,
14
14
  useEventListTabsHeaderOverflow
15
- } from "./chunk-IS45S6R3.mjs";
15
+ } from "./chunk-NIRCF54M.mjs";
16
16
  import {
17
17
  DEPOSIT_MODAL_OPEN_EVENT,
18
18
  PlaceOrder,
@@ -21,12 +21,12 @@ import {
21
21
  formatChainIdLabel,
22
22
  useClaimWinnings,
23
23
  useResolvedMarketClaim
24
- } from "./chunk-VHKGW4DB.mjs";
24
+ } from "./chunk-D2BTU7QI.mjs";
25
25
  import {
26
26
  getDisplayOutcomePrice,
27
27
  resolveHeaderOutcomeItems,
28
28
  resolveMarketFromVenueMarkets
29
- } from "./chunk-6EHT5OFU.mjs";
29
+ } from "./chunk-HFMKCV4L.mjs";
30
30
  import {
31
31
  AggErrorBoundary,
32
32
  Button,
@@ -62,7 +62,7 @@ import {
62
62
  skeletonViews,
63
63
  sortCategoriesForNavigation,
64
64
  useOptionalToast
65
- } from "./chunk-W7HQVQ22.mjs";
65
+ } from "./chunk-RR44PSKH.mjs";
66
66
 
67
67
  // src/pages/home/index.tsx
68
68
  import {
@@ -24,7 +24,7 @@ import {
24
24
  resolveUnifiedOrderBookEntries,
25
25
  sortOutcomeSelectorOutcomes,
26
26
  useEventTradingContext
27
- } from "./chunk-6EHT5OFU.mjs";
27
+ } from "./chunk-HFMKCV4L.mjs";
28
28
  import {
29
29
  AutocompleteSelect,
30
30
  Badge,
@@ -78,7 +78,7 @@ import {
78
78
  sortOutcomes,
79
79
  splitEventsByLifecycle,
80
80
  validateSubcategoryPath
81
- } from "./chunk-W7HQVQ22.mjs";
81
+ } from "./chunk-RR44PSKH.mjs";
82
82
 
83
83
  // src/events/item/index.tsx
84
84
  import {
@@ -3062,9 +3062,7 @@ var EventListItemDetailsContent = ({
3062
3062
  {
3063
3063
  className: cn("group/agg-event-details", detailsBaseCardClassName, classNames == null ? void 0 : classNames.root),
3064
3064
  "aria-label": ariaLabel != null ? ariaLabel : [resolvedTitle.title, (_c = recurringMarkets == null ? void 0 : recurringMarkets.windowLabel) != null ? _c : resolvedTitle.timestampLabel].filter(Boolean).join(" "),
3065
- onClick: () => {
3066
- onClick == null ? void 0 : onClick(event);
3067
- },
3065
+ onClick: onClick ? () => onClick(event) : void 0,
3068
3066
  children: [
3069
3067
  /* @__PURE__ */ jsxs5(
3070
3068
  "div",
@@ -20,7 +20,7 @@ import {
20
20
  __spreadProps,
21
21
  __spreadValues,
22
22
  cn
23
- } from "./chunk-W7HQVQ22.mjs";
23
+ } from "./chunk-RR44PSKH.mjs";
24
24
 
25
25
  // src/geo-block-banner/index.tsx
26
26
  import { useLabels } from "@agg-build/hooks";
@@ -4049,7 +4049,8 @@ var getCardClassName = ({
4049
4049
  "relative flex w-full flex-col font-agg-sans rounded-[calc(var(--agg-radius-xl)-1px)] bg-agg-secondary text-agg-foreground shadow-agg-card",
4050
4050
  (hasOnClick || hasHref) && "cursor-pointer",
4051
4051
  hasHref && "no-underline text-inherit",
4052
- getMotionClassName(
4052
+ // Only interactive cards lift on hover; a lift on a static card reads as clickable.
4053
+ (hasOnClick || hasHref) && getMotionClassName(
4053
4054
  enableAnimations,
4054
4055
  "transition-shadow hover:shadow-agg-card-hover duration-300 ease-in-out"
4055
4056
  ),
@@ -7264,11 +7265,13 @@ var formatRecurringMarketWindowTimeEt = (windowStart, windowEnd) => {
7264
7265
  // src/events/shared/format-event-title.ts
7265
7266
  var SPORT_CATEGORY_TOKENS = /* @__PURE__ */ new Set(["sport", "sports"]);
7266
7267
  var RECURRING_CRYPTO_TIMESTAMP_SUFFIX = /\s+-\s+(?:jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sep(?:t(?:ember)?)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)\b.*$/i;
7267
- var RECURRING_CRYPTO_DURATION_SUFFIX = /\s+-\s+(?:5m(?:in)?|15m(?:in)?|1h|1d)$/i;
7268
+ var RECURRING_CRYPTO_DURATION_SUFFIX = /\s+-\s+(?:5m(?:in)?|15m(?:in)?|30m(?:in)?|1h|4h|1d)$/i;
7268
7269
  var RECURRING_CRYPTO_DURATION_LABELS = {
7269
7270
  PT5M: "5min",
7270
7271
  PT15M: "15min",
7272
+ PT30M: "30min",
7271
7273
  PT1H: "1h",
7274
+ PT4H: "4h",
7272
7275
  P1D: "1d"
7273
7276
  };
7274
7277
  var normalizeCategoryToken = (value) => {
package/dist/events.js CHANGED
@@ -3755,7 +3755,8 @@ var getCardClassName = ({
3755
3755
  "relative flex w-full flex-col font-agg-sans rounded-[calc(var(--agg-radius-xl)-1px)] bg-agg-secondary text-agg-foreground shadow-agg-card",
3756
3756
  (hasOnClick || hasHref) && "cursor-pointer",
3757
3757
  hasHref && "no-underline text-inherit",
3758
- getMotionClassName(
3758
+ // Only interactive cards lift on hover; a lift on a static card reads as clickable.
3759
+ (hasOnClick || hasHref) && getMotionClassName(
3759
3760
  enableAnimations,
3760
3761
  "transition-shadow hover:shadow-agg-card-hover duration-300 ease-in-out"
3761
3762
  ),
@@ -6088,11 +6089,13 @@ var formatSportsEventTimeEt = (value) => {
6088
6089
  // src/events/shared/format-event-title.ts
6089
6090
  var SPORT_CATEGORY_TOKENS = /* @__PURE__ */ new Set(["sport", "sports"]);
6090
6091
  var RECURRING_CRYPTO_TIMESTAMP_SUFFIX = /\s+-\s+(?:jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sep(?:t(?:ember)?)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)\b.*$/i;
6091
- var RECURRING_CRYPTO_DURATION_SUFFIX = /\s+-\s+(?:5m(?:in)?|15m(?:in)?|1h|1d)$/i;
6092
+ var RECURRING_CRYPTO_DURATION_SUFFIX = /\s+-\s+(?:5m(?:in)?|15m(?:in)?|30m(?:in)?|1h|4h|1d)$/i;
6092
6093
  var RECURRING_CRYPTO_DURATION_LABELS = {
6093
6094
  PT5M: "5min",
6094
6095
  PT15M: "15min",
6096
+ PT30M: "30min",
6095
6097
  PT1H: "1h",
6098
+ PT4H: "4h",
6096
6099
  P1D: "1d"
6097
6100
  };
6098
6101
  var normalizeCategoryToken = (value) => {
@@ -12434,9 +12437,7 @@ var EventListItemDetailsContent = ({
12434
12437
  {
12435
12438
  className: cn("group/agg-event-details", detailsBaseCardClassName, classNames == null ? void 0 : classNames.root),
12436
12439
  "aria-label": ariaLabel != null ? ariaLabel : [resolvedTitle.title, (_c = recurringMarkets == null ? void 0 : recurringMarkets.windowLabel) != null ? _c : resolvedTitle.timestampLabel].filter(Boolean).join(" "),
12437
- onClick: () => {
12438
- onClick == null ? void 0 : onClick(event);
12439
- },
12440
+ onClick: onClick ? () => onClick(event) : void 0,
12440
12441
  children: [
12441
12442
  /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(
12442
12443
  "div",
package/dist/events.mjs CHANGED
@@ -17,13 +17,13 @@ import {
17
17
  orderbookRowLimitDefault,
18
18
  resolveEventDetailsSyncKey,
19
19
  useCenterOrderbookSpread
20
- } from "./chunk-IS45S6R3.mjs";
20
+ } from "./chunk-NIRCF54M.mjs";
21
21
  import {
22
22
  formatProbabilityCents,
23
23
  resolveOrderBookRows,
24
24
  resolveUnifiedOrderBookEntries
25
- } from "./chunk-6EHT5OFU.mjs";
26
- import "./chunk-W7HQVQ22.mjs";
25
+ } from "./chunk-HFMKCV4L.mjs";
26
+ import "./chunk-RR44PSKH.mjs";
27
27
  export {
28
28
  EventList,
29
29
  EventListItem,
package/dist/index.js CHANGED
@@ -4287,7 +4287,8 @@ var getCardClassName = ({
4287
4287
  "relative flex w-full flex-col font-agg-sans rounded-[calc(var(--agg-radius-xl)-1px)] bg-agg-secondary text-agg-foreground shadow-agg-card",
4288
4288
  (hasOnClick || hasHref) && "cursor-pointer",
4289
4289
  hasHref && "no-underline text-inherit",
4290
- getMotionClassName(
4290
+ // Only interactive cards lift on hover; a lift on a static card reads as clickable.
4291
+ (hasOnClick || hasHref) && getMotionClassName(
4291
4292
  enableAnimations,
4292
4293
  "transition-shadow hover:shadow-agg-card-hover duration-300 ease-in-out"
4293
4294
  ),
@@ -7489,11 +7490,13 @@ var formatRecurringMarketWindowTimeEt = (windowStart, windowEnd) => {
7489
7490
  // src/events/shared/format-event-title.ts
7490
7491
  var SPORT_CATEGORY_TOKENS = /* @__PURE__ */ new Set(["sport", "sports"]);
7491
7492
  var RECURRING_CRYPTO_TIMESTAMP_SUFFIX = /\s+-\s+(?:jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sep(?:t(?:ember)?)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)\b.*$/i;
7492
- var RECURRING_CRYPTO_DURATION_SUFFIX = /\s+-\s+(?:5m(?:in)?|15m(?:in)?|1h|1d)$/i;
7493
+ var RECURRING_CRYPTO_DURATION_SUFFIX = /\s+-\s+(?:5m(?:in)?|15m(?:in)?|30m(?:in)?|1h|4h|1d)$/i;
7493
7494
  var RECURRING_CRYPTO_DURATION_LABELS = {
7494
7495
  PT5M: "5min",
7495
7496
  PT15M: "15min",
7497
+ PT30M: "30min",
7496
7498
  PT1H: "1h",
7499
+ PT4H: "4h",
7497
7500
  P1D: "1d"
7498
7501
  };
7499
7502
  var normalizeCategoryToken = (value) => {
@@ -16366,9 +16369,7 @@ var EventListItemDetailsContent = ({
16366
16369
  {
16367
16370
  className: cn("group/agg-event-details", detailsBaseCardClassName, classNames == null ? void 0 : classNames.root),
16368
16371
  "aria-label": ariaLabel != null ? ariaLabel : [resolvedTitle.title, (_c = recurringMarkets == null ? void 0 : recurringMarkets.windowLabel) != null ? _c : resolvedTitle.timestampLabel].filter(Boolean).join(" "),
16369
- onClick: () => {
16370
- onClick == null ? void 0 : onClick(event);
16371
- },
16372
+ onClick: onClick ? () => onClick(event) : void 0,
16372
16373
  children: [
16373
16374
  /* @__PURE__ */ (0, import_jsx_runtime156.jsxs)(
16374
16375
  "div",
@@ -25436,7 +25437,7 @@ var PlaceOrder = ({
25436
25437
  disabledVenues,
25437
25438
  isConfigLoading: isAppConfigLoading
25438
25439
  }) === "available";
25439
- const needsKalshiConnection = isAuthenticated && hasKalshiConnectionState && isKalshiAvailable && isKalshiRoute && !isKalshiAccountActive;
25440
+ const needsKalshiConnection = !isPaperMode && isAuthenticated && hasKalshiConnectionState && isKalshiAvailable && isKalshiRoute && !isKalshiAccountActive;
25440
25441
  const handleVerifyKalshi = (0, import_react41.useCallback)(
25441
25442
  (credentials) => __async(null, null, function* () {
25442
25443
  if (onConnectKalshi) {
@@ -39187,7 +39188,8 @@ var TRADING_ACCESS_VENUES = [
39187
39188
  "myriad",
39188
39189
  "hyperliquid",
39189
39190
  "novig",
39190
- "prophetx"
39191
+ "prophetx",
39192
+ "pred"
39191
39193
  ];
39192
39194
  var TRADING_ACCESS_VENUE_ITEMS = TRADING_ACCESS_VENUES.map((id) => ({ id }));
39193
39195
  var SectionTitle2 = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime217.jsx)("h3", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children });
package/dist/index.mjs CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  formatRecurringCountdown,
15
15
  formatShareAmount,
16
16
  useHomePageModals
17
- } from "./chunk-VAL2IB3M.mjs";
17
+ } from "./chunk-M6U2RKBD.mjs";
18
18
  import {
19
19
  EventList,
20
20
  EventListItem,
@@ -32,7 +32,7 @@ import {
32
32
  orderbookRowLimitDefault,
33
33
  resolveEventDetailsSyncKey,
34
34
  useCenterOrderbookSpread
35
- } from "./chunk-IS45S6R3.mjs";
35
+ } from "./chunk-NIRCF54M.mjs";
36
36
  import {
37
37
  CARD_NETWORK_OPTIONS,
38
38
  DepositModal,
@@ -45,7 +45,7 @@ import {
45
45
  buildTerminalSummary,
46
46
  clearPendingCardSession,
47
47
  getPendingCardSession
48
- } from "./chunk-Z4WWOHDT.mjs";
48
+ } from "./chunk-5SCDQSNA.mjs";
49
49
  import {
50
50
  AggNotificationEventsProvider,
51
51
  DEPOSIT_MODAL_OPEN_EVENT,
@@ -67,7 +67,7 @@ import {
67
67
  useResolvedMarketClaim,
68
68
  useSharedKycFlow,
69
69
  venueRequiresSharedKyc
70
- } from "./chunk-VHKGW4DB.mjs";
70
+ } from "./chunk-D2BTU7QI.mjs";
71
71
  import {
72
72
  SETTLEMENT_SECTION_ID,
73
73
  Settlement,
@@ -88,7 +88,7 @@ import {
88
88
  resolveOrderBookRows,
89
89
  resolveUnifiedOrderBookEntries,
90
90
  useEventTradingContext
91
- } from "./chunk-6EHT5OFU.mjs";
91
+ } from "./chunk-HFMKCV4L.mjs";
92
92
  import {
93
93
  ConnectAccountsStep,
94
94
  ConnectKalshiModal,
@@ -98,7 +98,7 @@ import {
98
98
  OnboardingModal,
99
99
  ProfileSetupStep,
100
100
  SharedKycModal
101
- } from "./chunk-TXQJUVRW.mjs";
101
+ } from "./chunk-QGONLJLE.mjs";
102
102
  import {
103
103
  AGG_DEFAULT_URL,
104
104
  AGG_DOCS_URL,
@@ -220,7 +220,7 @@ import {
220
220
  useOptionalToast,
221
221
  useToast,
222
222
  venueLogoNames
223
- } from "./chunk-W7HQVQ22.mjs";
223
+ } from "./chunk-RR44PSKH.mjs";
224
224
 
225
225
  // src/notifications/agg-toast-provider.tsx
226
226
  import { jsx } from "react/jsx-runtime";
package/dist/modals.js CHANGED
@@ -9898,7 +9898,8 @@ var TRADING_ACCESS_VENUES = [
9898
9898
  "myriad",
9899
9899
  "hyperliquid",
9900
9900
  "novig",
9901
- "prophetx"
9901
+ "prophetx",
9902
+ "pred"
9902
9903
  ];
9903
9904
  var TRADING_ACCESS_VENUE_ITEMS = TRADING_ACCESS_VENUES.map((id) => ({ id }));
9904
9905
  var SectionTitle2 = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime145.jsx)("h3", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children });
package/dist/modals.mjs CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  buildTerminalSummary,
12
12
  clearPendingCardSession,
13
13
  getPendingCardSession
14
- } from "./chunk-Z4WWOHDT.mjs";
14
+ } from "./chunk-5SCDQSNA.mjs";
15
15
  import {
16
16
  ConnectAccountsStep,
17
17
  ConnectKalshiModal,
@@ -21,8 +21,8 @@ import {
21
21
  OnboardingModal,
22
22
  ProfileSetupStep,
23
23
  SharedKycModal
24
- } from "./chunk-TXQJUVRW.mjs";
25
- import "./chunk-W7HQVQ22.mjs";
24
+ } from "./chunk-QGONLJLE.mjs";
25
+ import "./chunk-RR44PSKH.mjs";
26
26
  export {
27
27
  CARD_NETWORK_OPTIONS,
28
28
  ConnectAccountsStep,
package/dist/pages.js CHANGED
@@ -4067,7 +4067,8 @@ var getCardClassName = ({
4067
4067
  "relative flex w-full flex-col font-agg-sans rounded-[calc(var(--agg-radius-xl)-1px)] bg-agg-secondary text-agg-foreground shadow-agg-card",
4068
4068
  (hasOnClick || hasHref) && "cursor-pointer",
4069
4069
  hasHref && "no-underline text-inherit",
4070
- getMotionClassName(
4070
+ // Only interactive cards lift on hover; a lift on a static card reads as clickable.
4071
+ (hasOnClick || hasHref) && getMotionClassName(
4071
4072
  enableAnimations,
4072
4073
  "transition-shadow hover:shadow-agg-card-hover duration-300 ease-in-out"
4073
4074
  ),
@@ -6703,11 +6704,13 @@ var formatRecurringMarketWindowTimeEt = (windowStart, windowEnd) => {
6703
6704
  // src/events/shared/format-event-title.ts
6704
6705
  var SPORT_CATEGORY_TOKENS = /* @__PURE__ */ new Set(["sport", "sports"]);
6705
6706
  var RECURRING_CRYPTO_TIMESTAMP_SUFFIX = /\s+-\s+(?:jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sep(?:t(?:ember)?)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)\b.*$/i;
6706
- var RECURRING_CRYPTO_DURATION_SUFFIX = /\s+-\s+(?:5m(?:in)?|15m(?:in)?|1h|1d)$/i;
6707
+ var RECURRING_CRYPTO_DURATION_SUFFIX = /\s+-\s+(?:5m(?:in)?|15m(?:in)?|30m(?:in)?|1h|4h|1d)$/i;
6707
6708
  var RECURRING_CRYPTO_DURATION_LABELS = {
6708
6709
  PT5M: "5min",
6709
6710
  PT15M: "15min",
6711
+ PT30M: "30min",
6710
6712
  PT1H: "1h",
6713
+ PT4H: "4h",
6711
6714
  P1D: "1d"
6712
6715
  };
6713
6716
  var normalizeCategoryToken = (value) => {
@@ -14929,9 +14932,7 @@ var EventListItemDetailsContent = ({
14929
14932
  {
14930
14933
  className: cn("group/agg-event-details", detailsBaseCardClassName, classNames == null ? void 0 : classNames.root),
14931
14934
  "aria-label": ariaLabel != null ? ariaLabel : [resolvedTitle.title, (_c = recurringMarkets == null ? void 0 : recurringMarkets.windowLabel) != null ? _c : resolvedTitle.timestampLabel].filter(Boolean).join(" "),
14932
- onClick: () => {
14933
- onClick == null ? void 0 : onClick(event);
14934
- },
14935
+ onClick: onClick ? () => onClick(event) : void 0,
14935
14936
  children: [
14936
14937
  /* @__PURE__ */ (0, import_jsx_runtime149.jsxs)(
14937
14938
  "div",
@@ -23107,7 +23108,7 @@ var PlaceOrder = ({
23107
23108
  disabledVenues,
23108
23109
  isConfigLoading: isAppConfigLoading
23109
23110
  }) === "available";
23110
- const needsKalshiConnection = isAuthenticated && hasKalshiConnectionState && isKalshiAvailable && isKalshiRoute && !isKalshiAccountActive;
23111
+ const needsKalshiConnection = !isPaperMode && isAuthenticated && hasKalshiConnectionState && isKalshiAvailable && isKalshiRoute && !isKalshiAccountActive;
23111
23112
  const handleVerifyKalshi = (0, import_react38.useCallback)(
23112
23113
  (credentials) => __async(null, null, function* () {
23113
23114
  if (onConnectKalshi) {
package/dist/pages.mjs CHANGED
@@ -11,17 +11,17 @@ import {
11
11
  formatRecurringCountdown,
12
12
  formatShareAmount,
13
13
  useHomePageModals
14
- } from "./chunk-VAL2IB3M.mjs";
15
- import "./chunk-IS45S6R3.mjs";
14
+ } from "./chunk-M6U2RKBD.mjs";
15
+ import "./chunk-NIRCF54M.mjs";
16
16
  import {
17
17
  DEPOSIT_MODAL_OPEN_EVENT,
18
18
  WITHDRAW_MODAL_OPEN_EVENT,
19
19
  requestAggDepositModalOpen,
20
20
  requestAggWithdrawModalOpen
21
- } from "./chunk-VHKGW4DB.mjs";
22
- import "./chunk-6EHT5OFU.mjs";
23
- import "./chunk-TXQJUVRW.mjs";
24
- import "./chunk-W7HQVQ22.mjs";
21
+ } from "./chunk-D2BTU7QI.mjs";
22
+ import "./chunk-HFMKCV4L.mjs";
23
+ import "./chunk-QGONLJLE.mjs";
24
+ import "./chunk-RR44PSKH.mjs";
25
25
  export {
26
26
  DEPOSIT_MODAL_OPEN_EVENT,
27
27
  EventMarketPage,
@@ -4012,7 +4012,8 @@ var getCardClassName = ({
4012
4012
  "relative flex w-full flex-col font-agg-sans rounded-[calc(var(--agg-radius-xl)-1px)] bg-agg-secondary text-agg-foreground shadow-agg-card",
4013
4013
  (hasOnClick || hasHref) && "cursor-pointer",
4014
4014
  hasHref && "no-underline text-inherit",
4015
- getMotionClassName(
4015
+ // Only interactive cards lift on hover; a lift on a static card reads as clickable.
4016
+ (hasOnClick || hasHref) && getMotionClassName(
4016
4017
  enableAnimations,
4017
4018
  "transition-shadow hover:shadow-agg-card-hover duration-300 ease-in-out"
4018
4019
  ),
@@ -7059,11 +7060,13 @@ var formatSportsEventTimeEt = (value) => {
7059
7060
  // src/events/shared/format-event-title.ts
7060
7061
  var SPORT_CATEGORY_TOKENS = /* @__PURE__ */ new Set(["sport", "sports"]);
7061
7062
  var RECURRING_CRYPTO_TIMESTAMP_SUFFIX = /\s+-\s+(?:jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sep(?:t(?:ember)?)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?)\b.*$/i;
7062
- var RECURRING_CRYPTO_DURATION_SUFFIX = /\s+-\s+(?:5m(?:in)?|15m(?:in)?|1h|1d)$/i;
7063
+ var RECURRING_CRYPTO_DURATION_SUFFIX = /\s+-\s+(?:5m(?:in)?|15m(?:in)?|30m(?:in)?|1h|4h|1d)$/i;
7063
7064
  var RECURRING_CRYPTO_DURATION_LABELS = {
7064
7065
  PT5M: "5min",
7065
7066
  PT15M: "15min",
7067
+ PT30M: "30min",
7066
7068
  PT1H: "1h",
7069
+ PT4H: "4h",
7067
7070
  P1D: "1d"
7068
7071
  };
7069
7072
  var normalizeCategoryToken = (value) => {
@@ -100,7 +100,7 @@ import {
100
100
  useOptionalToast,
101
101
  useToast,
102
102
  venueLogoNames
103
- } from "./chunk-W7HQVQ22.mjs";
103
+ } from "./chunk-RR44PSKH.mjs";
104
104
  export {
105
105
  ActivityChartIcon,
106
106
  AggErrorBoundary,
package/dist/trading.js CHANGED
@@ -300,7 +300,8 @@ var getCardClassName = ({
300
300
  "relative flex w-full flex-col font-agg-sans rounded-[calc(var(--agg-radius-xl)-1px)] bg-agg-secondary text-agg-foreground shadow-agg-card",
301
301
  (hasOnClick || hasHref) && "cursor-pointer",
302
302
  hasHref && "no-underline text-inherit",
303
- getMotionClassName(
303
+ // Only interactive cards lift on hover; a lift on a static card reads as clickable.
304
+ (hasOnClick || hasHref) && getMotionClassName(
304
305
  enableAnimations,
305
306
  "transition-shadow hover:shadow-agg-card-hover duration-300 ease-in-out"
306
307
  ),
@@ -12914,7 +12915,7 @@ var PlaceOrder = ({
12914
12915
  disabledVenues,
12915
12916
  isConfigLoading: isAppConfigLoading
12916
12917
  }) === "available";
12917
- const needsKalshiConnection = isAuthenticated && hasKalshiConnectionState && isKalshiAvailable && isKalshiRoute && !isKalshiAccountActive;
12918
+ const needsKalshiConnection = !isPaperMode && isAuthenticated && hasKalshiConnectionState && isKalshiAvailable && isKalshiRoute && !isKalshiAccountActive;
12918
12919
  const handleVerifyKalshi = (0, import_react17.useCallback)(
12919
12920
  (credentials) => __async(null, null, function* () {
12920
12921
  if (onConnectKalshi) {
package/dist/trading.mjs CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  useClaimWinnings,
15
15
  useResolvedMarketClaim,
16
16
  venueRequiresSharedKyc
17
- } from "./chunk-VHKGW4DB.mjs";
17
+ } from "./chunk-D2BTU7QI.mjs";
18
18
  import {
19
19
  SETTLEMENT_SECTION_ID,
20
20
  Settlement,
@@ -32,9 +32,9 @@ import {
32
32
  prepareSettlementDifferences,
33
33
  resolveDifferenceIconClassName,
34
34
  useEventTradingContext
35
- } from "./chunk-6EHT5OFU.mjs";
36
- import "./chunk-TXQJUVRW.mjs";
37
- import "./chunk-W7HQVQ22.mjs";
35
+ } from "./chunk-HFMKCV4L.mjs";
36
+ import "./chunk-QGONLJLE.mjs";
37
+ import "./chunk-RR44PSKH.mjs";
38
38
  export {
39
39
  FundKalshiModal,
40
40
  PlaceOrder,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agg-build/ui",
3
- "version": "4.14.0",
3
+ "version": "4.17.0",
4
4
  "description": "Pre-built React component library for the AGG prediction market aggregator. Tailwind-based, themeable, with primitives, event surfaces, trading flows, full pages, and modals.",
5
5
  "sideEffects": false,
6
6
  "license": "MIT",
@@ -100,8 +100,8 @@
100
100
  "liveline": "^0.0.7",
101
101
  "react": "^18.0.0 || ^19.0.0",
102
102
  "react-dom": "^18.0.0 || ^19.0.0",
103
- "@agg-build/sdk": "^4.13.1",
104
- "@agg-build/hooks": "^4.11.0"
103
+ "@agg-build/hooks": "^4.17.0",
104
+ "@agg-build/sdk": "^4.17.0"
105
105
  },
106
106
  "dependencies": {
107
107
  "@number-flow/react": "^0.6.0",