@trading-game/design-intelligence-layer 0.14.0 → 0.15.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.
package/dist/index.cjs CHANGED
@@ -80,6 +80,7 @@ __export(index_exports, {
80
80
  AlertDialogTrigger: () => AlertDialogTrigger,
81
81
  AlertTitle: () => AlertTitle,
82
82
  AspectRatio: () => AspectRatio,
83
+ AuthBlock: () => AuthBlock,
83
84
  Avatar: () => Avatar,
84
85
  AvatarBadge: () => AvatarBadge,
85
86
  AvatarFallback: () => AvatarFallback,
@@ -87,7 +88,6 @@ __export(index_exports, {
87
88
  AvatarGroupCount: () => AvatarGroupCount,
88
89
  AvatarImage: () => AvatarImage,
89
90
  Badge: () => Badge,
90
- BoostTicketCard: () => BoostTicketCard,
91
91
  Breadcrumb: () => Breadcrumb,
92
92
  BreadcrumbEllipsis: () => BreadcrumbEllipsis,
93
93
  BreadcrumbItem: () => BreadcrumbItem,
@@ -159,6 +159,7 @@ __export(index_exports, {
159
159
  ContextMenuSubContent: () => ContextMenuSubContent,
160
160
  ContextMenuSubTrigger: () => ContextMenuSubTrigger,
161
161
  ContextMenuTrigger: () => ContextMenuTrigger,
162
+ CreditTicketCard: () => CreditTicketCard,
162
163
  Dialog: () => Dialog,
163
164
  DialogClose: () => DialogClose,
164
165
  DialogContent: () => DialogContent,
@@ -201,6 +202,7 @@ __export(index_exports, {
201
202
  EmptyHeader: () => EmptyHeader,
202
203
  EmptyMedia: () => EmptyMedia,
203
204
  EmptyTitle: () => EmptyTitle,
205
+ FAQBlock: () => FAQBlock,
204
206
  Field: () => Field,
205
207
  FieldContent: () => FieldContent,
206
208
  FieldDescription: () => FieldDescription,
@@ -218,6 +220,8 @@ __export(index_exports, {
218
220
  FormItem: () => FormItem,
219
221
  FormLabel: () => FormLabel,
220
222
  FormMessage: () => FormMessage,
223
+ HeaderNavigationBlock: () => HeaderNavigationBlock,
224
+ HeroBlock: () => HeroBlock,
221
225
  HoverCard: () => HoverCard,
222
226
  HoverCardContent: () => HoverCardContent,
223
227
  HoverCardTrigger: () => HoverCardTrigger,
@@ -265,6 +269,7 @@ __export(index_exports, {
265
269
  NativeSelect: () => NativeSelect,
266
270
  NativeSelectOptGroup: () => NativeSelectOptGroup,
267
271
  NativeSelectOption: () => NativeSelectOption,
272
+ NavBarBlock: () => NavBarBlock,
268
273
  NavigationButton: () => NavigationButton,
269
274
  NavigationMenu: () => NavigationMenu,
270
275
  NavigationMenuContent: () => NavigationMenuContent,
@@ -274,6 +279,7 @@ __export(index_exports, {
274
279
  NavigationMenuList: () => NavigationMenuList,
275
280
  NavigationMenuTrigger: () => NavigationMenuTrigger,
276
281
  NavigationMenuViewport: () => NavigationMenuViewport,
282
+ OpenPositionsBlock: () => OpenPositionsBlock,
277
283
  Pagination: () => Pagination,
278
284
  PaginationContent: () => PaginationContent,
279
285
  PaginationEllipsis: () => PaginationEllipsis,
@@ -294,6 +300,8 @@ __export(index_exports, {
294
300
  ResizableHandle: () => ResizableHandle,
295
301
  ResizablePanel: () => ResizablePanel,
296
302
  ResizablePanelGroup: () => ResizablePanelGroup,
303
+ ResultBlock: () => ResultBlock,
304
+ ResultDialog: () => ResultDialog,
297
305
  ScrollArea: () => ScrollArea,
298
306
  ScrollBar: () => ScrollBar,
299
307
  Select: () => Select,
@@ -957,7 +965,7 @@ var badgeVariants = (0, import_class_variance_authority3.cva)(
957
965
  "fill-success": "bg-semantic-win/10 border-transparent text-semantic-win",
958
966
  "fill-fail": "bg-semantic-loss/10 border-transparent text-semantic-loss",
959
967
  "fill-warning": "bg-semantic-warning/10 border-transparent text-semantic-warning",
960
- "fill-boost": "bg-semantic-boost/16 border-transparent text-on-semantic-boost !text-xs !font-semibold",
968
+ "fill-credit": "bg-semantic-boost/16 border-transparent text-on-semantic-boost !text-xs !font-semibold",
961
969
  // Ghost (transparent)
962
970
  ghost: "bg-transparent border-transparent text-primary [a&]:hover:bg-secondary-hover [a&]:hover:text-primary",
963
971
  "ghost-success": "bg-transparent border-transparent text-semantic-win [a&]:hover:bg-semantic-win/10 [a&]:hover:text-semantic-win",
@@ -6733,7 +6741,7 @@ function TicketCard({
6733
6741
  )
6734
6742
  ] }) });
6735
6743
  }
6736
- function BoostTicketCard({
6744
+ function CreditTicketCard({
6737
6745
  className,
6738
6746
  icon,
6739
6747
  label,
@@ -6742,34 +6750,37 @@ function BoostTicketCard({
6742
6750
  stubLabel,
6743
6751
  onStubClick,
6744
6752
  stubDisabled = false,
6745
- boostAmount = "0.00",
6746
- boostCurrency = "USDT",
6747
- boostInfo,
6748
- boostInfoSide = "top",
6749
- boostInfoAlign = "center",
6750
- boostInfoTitle,
6751
- boostInfoCloseLabel,
6753
+ badgeIcon,
6754
+ badgeLabel = "Label",
6755
+ badgeValue = "0.00",
6756
+ badgeCurrency = "USDT",
6757
+ badgeInfo,
6758
+ badgeInfoSide = "top",
6759
+ badgeInfoAlign = "center",
6760
+ badgeInfoTitle,
6761
+ badgeInfoCloseLabel,
6752
6762
  compact = false
6753
6763
  }) {
6754
6764
  return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: cn("flex w-full flex-col gap-2", className), children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "relative flex w-full items-stretch justify-between rounded-sm bg-subtle", children: [
6755
6765
  (() => {
6756
- const boostBadge = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Badge, { variant: "fill-boost", size: "sm", className: "!gap-1 !font-medium !tracking-normal", children: [
6757
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react23.Rocket, { className: "!size-3.5", strokeWidth: 2 }),
6758
- "Boost: ",
6759
- boostAmount,
6766
+ const creditBadge = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Badge, { variant: "fill-credit", size: "sm", className: "!gap-1 !font-medium !tracking-normal", children: [
6767
+ badgeIcon,
6768
+ badgeLabel,
6769
+ ": ",
6770
+ badgeValue,
6760
6771
  " ",
6761
- boostCurrency,
6762
- boostInfo && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Tooltip2, { children: [
6772
+ badgeCurrency,
6773
+ badgeInfo && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(TooltipProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Tooltip2, { children: [
6763
6774
  /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
6764
6775
  "button",
6765
6776
  {
6766
6777
  type: "button",
6767
- "aria-label": "More info about boost",
6778
+ "aria-label": `More info about ${badgeLabel.toLowerCase()}`,
6768
6779
  className: "inline-flex shrink-0 items-center justify-center rounded-full text-on-semantic-boost outline-none transition-opacity hover:opacity-70 focus-visible:opacity-70 focus-visible:ring-2 focus-visible:ring-on-semantic-boost/40 cursor-pointer",
6769
6780
  children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react23.Info, { className: "!size-3.5", strokeWidth: 2 })
6770
6781
  }
6771
6782
  ) }),
6772
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(TooltipContent, { side: boostInfoSide, align: boostInfoAlign, title: boostInfoTitle, closeLabel: boostInfoCloseLabel, variant: "inverse", className: "max-w-xs whitespace-normal", children: boostInfo })
6783
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(TooltipContent, { side: badgeInfoSide, align: badgeInfoAlign, title: badgeInfoTitle, closeLabel: badgeInfoCloseLabel, variant: "inverse", className: "max-w-xs whitespace-normal", children: badgeInfo })
6773
6784
  ] }) })
6774
6785
  ] });
6775
6786
  const labelValue = /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
@@ -6788,7 +6799,7 @@ function BoostTicketCard({
6788
6799
  /* Mobile / compact: badge stacked under the value */
6789
6800
  /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col gap-2 whitespace-nowrap", children: [
6790
6801
  /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "flex flex-col gap-1", children: labelValue }),
6791
- boostBadge
6802
+ creditBadge
6792
6803
  ] })
6793
6804
  ) : (
6794
6805
  /* Desktop: badge inline next to the value (16px gap = gap-4) */
@@ -6802,7 +6813,7 @@ function BoostTicketCard({
6802
6813
  /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-sm text-on-subtle", children: currency })
6803
6814
  ] })
6804
6815
  ] }),
6805
- boostBadge
6816
+ creditBadge
6806
6817
  ] })
6807
6818
  ] })
6808
6819
  )
@@ -6971,6 +6982,496 @@ function ToggleGroupItem(_a) {
6971
6982
  })
6972
6983
  );
6973
6984
  }
6985
+
6986
+ // components/blocks/result-block.tsx
6987
+ var import_jsx_runtime60 = require("react/jsx-runtime");
6988
+ var THUMBS_UP_DATA_URL = "data:image/webp;base64,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";
6989
+ var THUMBS_DOWN_DATA_URL = "data:image/webp;base64,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";
6990
+ function ResultBlock({
6991
+ status,
6992
+ amount,
6993
+ currency,
6994
+ contractLabel,
6995
+ pickedDigit,
6996
+ duration,
6997
+ ctaMode
6998
+ }) {
6999
+ const isWin = status === "win";
7000
+ const titleText = isWin ? "You won!" : "You lost!";
7001
+ const signedAmount = isWin ? `+${amount}` : `\u2212${amount}`;
7002
+ const amountColorClass = isWin ? "text-semantic-win" : "text-semantic-loss";
7003
+ const haloBgClass = isWin ? "bg-semantic-win" : "bg-semantic-loss";
7004
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-5 items-center gap-3", children: [
7005
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "relative flex items-center justify-center py-2", children: [
7006
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
7007
+ "span",
7008
+ {
7009
+ "aria-hidden": true,
7010
+ "data-results-motion": "halo",
7011
+ className: `absolute size-24 rounded-full blur-2xl opacity-20 ${haloBgClass}`
7012
+ }
7013
+ ),
7014
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
7015
+ "img",
7016
+ {
7017
+ "data-results-motion": isWin ? "icon-win" : "icon-loss",
7018
+ src: isWin ? THUMBS_UP_DATA_URL : THUMBS_DOWN_DATA_URL,
7019
+ alt: isWin ? "Win" : "Loss",
7020
+ className: "relative size-20"
7021
+ }
7022
+ )
7023
+ ] }),
7024
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-lg font-semibold text-on-prominent", children: titleText }),
7025
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("p", { className: `flex items-baseline gap-1.5 ${amountColorClass}`, children: [
7026
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "font-display text-4xl font-bold tabular-nums tracking-tight", children: signedAmount }),
7027
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-lg font-semibold", children: currency })
7028
+ ] }),
7029
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex items-center gap-2", children: [
7030
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Badge, { variant: "standard", size: "sm", children: [
7031
+ contractLabel,
7032
+ pickedDigit !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [
7033
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { "aria-hidden": true, className: "h-3 w-px bg-border-prominent/40 mx-1" }),
7034
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "tabular-nums", children: pickedDigit })
7035
+ ] })
7036
+ ] }),
7037
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Badge, { variant: "standard", size: "sm", children: duration })
7038
+ ] }),
7039
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "w-full pt-2", children: [
7040
+ ctaMode === "next-round" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: "Next round" }),
7041
+ ctaMode === "go-again" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: "Go again" }),
7042
+ ctaMode === "conversion" && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "w-full flex flex-col gap-3", children: [
7043
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-center text-base font-semibold text-on-prominent", children: "Ready to play for real?" }),
7044
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: "Deposit now" }),
7045
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { variant: "secondary", className: "w-full", children: "Stay in demo" })
7046
+ ] })
7047
+ ] })
7048
+ ] });
7049
+ }
7050
+ function ResultDialog({
7051
+ title,
7052
+ body,
7053
+ primaryLabel,
7054
+ secondaryLabel
7055
+ }) {
7056
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-6 items-center gap-4", children: [
7057
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex flex-col items-center gap-2 text-center", children: [
7058
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-lg font-semibold text-on-prominent", children: title }),
7059
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-sm text-on-subtle", children: body })
7060
+ ] }),
7061
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "w-full flex flex-col gap-2", children: [
7062
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: primaryLabel }),
7063
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { variant: "secondary", className: "w-full", children: secondaryLabel })
7064
+ ] })
7065
+ ] });
7066
+ }
7067
+
7068
+ // components/blocks/header-navigation-block.tsx
7069
+ var import_lucide_react24 = require("lucide-react");
7070
+ var import_jsx_runtime61 = require("react/jsx-runtime");
7071
+ function HeaderNavigationBlock({
7072
+ onBack,
7073
+ badge,
7074
+ balance,
7075
+ history,
7076
+ actions
7077
+ }) {
7078
+ var _a;
7079
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "w-full min-w-80 max-w-layout-diagram-small border border-border-subtle rounded-md overflow-hidden bg-prominent", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("header", { className: "flex items-center gap-2 border-b border-border-subtle bg-prominent px-layout-margin-inline py-3", children: [
7080
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(NavigationButton, { type: "button", size: "md", "aria-label": "Back", onClick: onBack, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react24.ArrowLeft, { className: "size-5" }) }),
7081
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex min-w-0 flex-1 items-center justify-center gap-2", children: [
7082
+ badge && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Badge, { variant: (_a = badge.variant) != null ? _a : "fill-warning", size: "sm", children: badge.label }),
7083
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "font-display font-semibold tabular-nums text-on-prominent", children: balance.amount }),
7084
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-sm text-on-subtle", children: balance.currency })
7085
+ ] }),
7086
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
7087
+ history && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(HistoryButton, __spreadValues({}, history)),
7088
+ actions
7089
+ ] })
7090
+ ] }) });
7091
+ }
7092
+ function HistoryButton({
7093
+ count,
7094
+ onClick,
7095
+ "aria-label": ariaLabelOverride
7096
+ }) {
7097
+ const show = typeof count === "number" && count > 0;
7098
+ const label = show ? count > 99 ? "99+" : String(count) : null;
7099
+ const ariaLabel = ariaLabelOverride != null ? ariaLabelOverride : show ? `Open history, ${count} new` : "Open history";
7100
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "relative inline-flex", children: [
7101
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(NavigationButton, { type: "button", size: "md", "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react24.History, { className: "size-5" }) }),
7102
+ show && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
7103
+ "span",
7104
+ {
7105
+ "aria-hidden": true,
7106
+ className: "pointer-events-none absolute -top-0.5 -right-0.5 min-w-[1.125rem] h-[1.125rem] px-1 rounded-full bg-primary text-on-primary text-[10px] leading-none font-semibold tabular-nums inline-flex items-center justify-center ring-2 ring-prominent",
7107
+ children: label
7108
+ }
7109
+ )
7110
+ ] });
7111
+ }
7112
+
7113
+ // components/blocks/faq-block.tsx
7114
+ var import_jsx_runtime62 = require("react/jsx-runtime");
7115
+ function FAQBlock({
7116
+ eyebrow = "FAQ Section",
7117
+ title = "Frequently asked questions",
7118
+ intro,
7119
+ items,
7120
+ defaultValue,
7121
+ helpCard,
7122
+ layout = "desktop"
7123
+ }) {
7124
+ var _a;
7125
+ const headingClass = layout === "desktop" ? "text-5xl font-bold font-display text-on-prominent text-center tracking-tight" : "text-4xl font-bold font-display text-on-prominent text-center tracking-tight";
7126
+ const helpTitleClass = layout === "desktop" ? "text-2xl font-semibold font-display text-on-prominent" : "text-xl font-semibold font-display text-on-prominent";
7127
+ const helpCardPaddingClass = layout === "desktop" ? "p-8" : "p-6";
7128
+ const gapClass = layout === "desktop" ? "gap-12" : "gap-10";
7129
+ const headerGapClass = layout === "desktop" ? "gap-5" : "gap-4";
7130
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `w-full flex flex-col ${gapClass}`, children: [
7131
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `flex flex-col ${headerGapClass} items-center w-full`, children: [
7132
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-sm text-on-subtle font-body", children: eyebrow }),
7133
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h2", { className: headingClass, children: title }),
7134
+ intro && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-lg text-on-subtle font-body text-center", children: intro })
7135
+ ] }),
7136
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
7137
+ Accordion,
7138
+ {
7139
+ type: "single",
7140
+ collapsible: true,
7141
+ defaultValue: defaultValue != null ? defaultValue : (_a = items[0]) == null ? void 0 : _a.value,
7142
+ className: "w-full",
7143
+ children: items.map(({ value, question, answer }) => /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(AccordionItem, { value, children: [
7144
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(AccordionTrigger, { className: "text-base font-medium font-body text-on-prominent hover:no-underline", children: question }),
7145
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(AccordionContent, { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-sm text-on-subtle font-body pb-4", children: answer }) })
7146
+ ] }, value))
7147
+ }
7148
+ ),
7149
+ helpCard && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `flex flex-col gap-6 items-center w-full bg-subtle rounded-xl ${helpCardPaddingClass}`, children: [
7150
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex flex-col gap-2 w-full", children: [
7151
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h3", { className: helpTitleClass, children: helpCard.title }),
7152
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-base text-on-subtle font-body", children: helpCard.body })
7153
+ ] }),
7154
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Button, { size: "sm", onClick: helpCard.onCtaClick, children: helpCard.ctaLabel })
7155
+ ] })
7156
+ ] });
7157
+ }
7158
+
7159
+ // components/blocks/hero-block.tsx
7160
+ var import_lucide_react25 = require("lucide-react");
7161
+ var import_jsx_runtime63 = require("react/jsx-runtime");
7162
+ function HeroBlock({
7163
+ layout = "centered",
7164
+ tagline,
7165
+ heading,
7166
+ body,
7167
+ primaryCta,
7168
+ secondaryCta,
7169
+ image
7170
+ }) {
7171
+ if (layout === "centered") {
7172
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex flex-col items-center justify-center gap-8 px-layout-margin-inline py-24 max-w-2xl mx-auto text-center", children: [
7173
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex flex-col items-center gap-6 w-full", children: [
7174
+ tagline && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(TaglinePill, __spreadValues({}, tagline)),
7175
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h1", { className: "text-5xl font-semibold font-display tracking-tight text-on-prominent text-center", children: heading }),
7176
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: "text-lg font-body text-on-subtle text-center", children: body })
7177
+ ] }),
7178
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Button, { size: "sm", onClick: primaryCta.onClick, children: [
7179
+ primaryCta.label,
7180
+ primaryCta.trailingArrow !== false && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react25.ArrowRight, { className: "size-4" })
7181
+ ] })
7182
+ ] }) });
7183
+ }
7184
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex flex-col min-[600px]:flex-row items-center gap-layout-gutter px-layout-margin-inline py-16 min-[600px]:py-24 max-w-5xl mx-auto", children: [
7185
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex flex-col gap-6 min-[600px]:gap-8 flex-1 min-w-0 items-center min-[600px]:items-start text-center min-[600px]:text-left w-full", children: [
7186
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex flex-col gap-5 min-[600px]:gap-6 items-center min-[600px]:items-start w-full", children: [
7187
+ tagline && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(TaglinePill, __spreadProps(__spreadValues({}, tagline), { responsive: true })),
7188
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h1", { className: "text-4xl min-[600px]:text-5xl font-semibold font-display tracking-tight text-on-prominent", children: heading }),
7189
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: "text-lg font-body text-on-subtle", children: body })
7190
+ ] }),
7191
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex items-center justify-center min-[600px]:justify-start gap-2", children: [
7192
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { size: "sm", onClick: primaryCta.onClick, children: primaryCta.label }),
7193
+ secondaryCta && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { variant: "secondary", size: "sm", onClick: secondaryCta.onClick, children: secondaryCta.label })
7194
+ ] })
7195
+ ] }),
7196
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "w-full min-[600px]:flex-1 min-[600px]:min-w-0 aspect-square rounded-xl bg-subtle shrink-0", "aria-hidden": "true", children: image })
7197
+ ] }) });
7198
+ }
7199
+ function TaglinePill({
7200
+ label,
7201
+ suffix,
7202
+ responsive
7203
+ }) {
7204
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "inline-flex items-center gap-1.5 h-7 px-3 rounded-full border border-border-subtle bg-prominent shadow-sm shrink-0", children: [
7205
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "size-1.5 rounded-full bg-semantic-win shrink-0", "aria-hidden": "true" }),
7206
+ responsive && suffix ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
7207
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "hidden min-[600px]:inline", children: [
7208
+ label,
7209
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle", children: " \xB7 " })
7210
+ ] }),
7211
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle min-[600px]:text-on-prominent", children: suffix })
7212
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
7213
+ label,
7214
+ suffix && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle", children: ` \xB7 ${suffix}` })
7215
+ ] }),
7216
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react25.ArrowUpRight, { className: "size-4 text-on-subtle shrink-0", "aria-hidden": "true" })
7217
+ ] });
7218
+ }
7219
+
7220
+ // components/blocks/auth-block.tsx
7221
+ var React14 = __toESM(require("react"), 1);
7222
+ var import_jsx_runtime64 = require("react/jsx-runtime");
7223
+ function AuthBlock({
7224
+ mode,
7225
+ logoSrc,
7226
+ wordmark = "trading.game",
7227
+ providers = ["google", "telegram", "x"],
7228
+ onSubmit,
7229
+ crossLinkHref = "#",
7230
+ idPrefix = "auth"
7231
+ }) {
7232
+ const headingText = mode === "sign-in" ? "Sign in" : "Sign up";
7233
+ const termsText = mode === "sign-in" ? "By signing in" : "By signing up";
7234
+ const ctaText = mode === "sign-in" ? "Sign in" : "Sign up";
7235
+ const footerPrompt = mode === "sign-in" ? "Don't have an account?" : "Already have an account?";
7236
+ const footerLinkLabel = mode === "sign-in" ? "Sign up" : "Log in";
7237
+ const [email, setEmail] = React14.useState("");
7238
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex flex-col items-center gap-6 w-full", children: [
7239
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-2", children: [
7240
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("img", { src: logoSrc, alt: wordmark, className: "size-8 object-contain" }),
7241
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "font-display font-semibold text-base text-on-prominent tracking-tight", children: wordmark })
7242
+ ] }),
7243
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("h2", { className: "text-3xl font-bold font-display text-on-prominent text-center", children: headingText }),
7244
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex flex-col gap-3 w-full", children: providers.map((p) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ProviderButton, { provider: p }, p)) }),
7245
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-3 w-full", children: [
7246
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex-1 h-px bg-border-subtle" }),
7247
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-sm text-on-subtle font-body", children: "or" }),
7248
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex-1 h-px bg-border-subtle" })
7249
+ ] }),
7250
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex items-center gap-2 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
7251
+ Input,
7252
+ {
7253
+ id: `${idPrefix}-email`,
7254
+ type: "text",
7255
+ placeholder: "Email or phone number",
7256
+ className: "flex-1",
7257
+ value: email,
7258
+ onChange: (e) => setEmail(e.target.value)
7259
+ }
7260
+ ) }),
7261
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("p", { className: "text-sm text-on-subtle font-body text-left w-full", children: [
7262
+ termsText,
7263
+ ", you agree to our",
7264
+ " ",
7265
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Link, { size: "sm", href: "#", children: "Terms & Conditions" })
7266
+ ] }),
7267
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Button, { size: "md", className: "w-full", onClick: () => onSubmit == null ? void 0 : onSubmit({ email }), children: ctaText }),
7268
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("p", { className: "text-sm text-on-subtle font-body text-center", children: [
7269
+ footerPrompt,
7270
+ " ",
7271
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Link, { size: "sm", href: crossLinkHref, children: footerLinkLabel })
7272
+ ] })
7273
+ ] });
7274
+ }
7275
+ function ProviderButton({ provider }) {
7276
+ switch (provider) {
7277
+ case "google":
7278
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
7279
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
7280
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("path", { d: "M17.64 9.205c0-.639-.057-1.252-.164-1.841H9v3.481h4.844a4.14 4.14 0 0 1-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615Z", fill: "#4285F4" }),
7281
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("path", { d: "M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18Z", fill: "#34A853" }),
7282
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("path", { d: "M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.996 8.996 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332Z", fill: "#FBBC05" }),
7283
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("path", { d: "M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 7.29C4.672 5.163 6.656 3.58 9 3.58Z", fill: "#EA4335" })
7284
+ ] }),
7285
+ "Continue with Google"
7286
+ ] });
7287
+ case "telegram":
7288
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
7289
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
7290
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("circle", { cx: "9", cy: "9", r: "9", fill: "#29B6F6" }),
7291
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("path", { d: "M13.5 5.25 11.25 13.5l-2.25-3-3 1.5 1.5-5.25 6-1.5Z", fill: "white", opacity: "0.3" }),
7292
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("path", { d: "m4.5 8.625 7.5-3-1.125 7.125-2.625-2.25-1.5 1.5.375-3.375Z", fill: "white" })
7293
+ ] }),
7294
+ "Continue with Telegram"
7295
+ ] });
7296
+ case "x":
7297
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
7298
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "currentColor", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("path", { d: "M13.955 2.25h2.423L10.977 8.28 17.25 15.75h-4.812l-3.913-5.116-4.477 5.116H1.645l5.703-6.52L1.125 2.25h4.934l3.538 4.678 4.358-4.678Zm-.85 12.105h1.343L5.025 3.627H3.579l9.526 10.728Z" }) }),
7299
+ "Continue with X (Twitter)"
7300
+ ] });
7301
+ }
7302
+ }
7303
+
7304
+ // components/blocks/navbar-block.tsx
7305
+ var React15 = __toESM(require("react"), 1);
7306
+ var import_lucide_react26 = require("lucide-react");
7307
+ var import_jsx_runtime65 = require("react/jsx-runtime");
7308
+ function NavBarBlock({ brand, links, signIn, signUp }) {
7309
+ var _a, _b, _c, _d;
7310
+ const [mobileMenuOpen, setMobileMenuOpen] = React15.useState(false);
7311
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-full border border-border-subtle rounded-md overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("nav", { className: "bg-prominent", children: [
7312
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center justify-between px-layout-margin-inline py-3", children: [
7313
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-6", children: [
7314
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
7315
+ "img",
7316
+ {
7317
+ src: brand.fullLogoSrc,
7318
+ alt: brand.alt,
7319
+ className: "hidden min-[600px]:block h-7 w-auto shrink-0 object-contain object-left"
7320
+ }
7321
+ ),
7322
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
7323
+ "img",
7324
+ {
7325
+ src: brand.iconLogoSrc,
7326
+ alt: brand.alt,
7327
+ className: "min-[600px]:hidden size-7 shrink-0 object-contain"
7328
+ }
7329
+ ),
7330
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "hidden min-[600px]:flex items-center gap-1", children: links.map((l) => /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { variant: "tertiary", size: "sm", onClick: l.onClick, children: l.label }, l.label)) })
7331
+ ] }),
7332
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "hidden min-[600px]:flex items-center gap-2", children: [
7333
+ signIn && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { variant: "tertiary", size: "sm", onClick: signIn.onClick, children: (_a = signIn.label) != null ? _a : "Sign in" }),
7334
+ signUp && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { size: "sm", onClick: signUp.onClick, children: (_b = signUp.label) != null ? _b : "Sign up" })
7335
+ ] }),
7336
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
7337
+ Button,
7338
+ {
7339
+ variant: "tertiary",
7340
+ size: "icon-sm",
7341
+ "aria-label": mobileMenuOpen ? "Close navigation menu" : "Open navigation menu",
7342
+ "aria-expanded": mobileMenuOpen,
7343
+ className: "min-[600px]:hidden",
7344
+ onClick: () => setMobileMenuOpen((prev) => !prev),
7345
+ children: mobileMenuOpen ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react26.X, { className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react26.Menu, { className: "size-4" })
7346
+ }
7347
+ )
7348
+ ] }),
7349
+ mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "min-[600px]:hidden flex flex-col border-t border-border-subtle px-layout-margin-inline py-3 gap-1", children: [
7350
+ links.map((l) => /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
7351
+ Button,
7352
+ {
7353
+ variant: "tertiary",
7354
+ size: "sm",
7355
+ className: "justify-start w-full",
7356
+ onClick: l.onClick,
7357
+ children: l.label
7358
+ },
7359
+ l.label
7360
+ )),
7361
+ (signIn || signUp) && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col gap-2 pt-3 mt-2 border-t border-border-subtle", children: [
7362
+ signIn && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { variant: "secondary", size: "sm", className: "w-full", onClick: signIn.onClick, children: (_c = signIn.label) != null ? _c : "Sign in" }),
7363
+ signUp && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { size: "sm", className: "w-full", onClick: signUp.onClick, children: (_d = signUp.label) != null ? _d : "Sign up" })
7364
+ ] })
7365
+ ] })
7366
+ ] }) });
7367
+ }
7368
+
7369
+ // components/blocks/open-positions-block.tsx
7370
+ var React16 = __toESM(require("react"), 1);
7371
+ var import_lucide_react27 = require("lucide-react");
7372
+ var import_jsx_runtime66 = require("react/jsx-runtime");
7373
+ function OpenPositionsBlock({
7374
+ trigger,
7375
+ sheetTitle = "Positions",
7376
+ positions,
7377
+ onViewHistory,
7378
+ emptyState
7379
+ }) {
7380
+ const isMobile = useIsMobile();
7381
+ const body = positions.length === 0 ? emptyState != null ? emptyState : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DefaultEmptyState, { onViewHistory }) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PositionsList, { positions, onViewHistory });
7382
+ if (isMobile) {
7383
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Drawer, { children: [
7384
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerTrigger, { asChild: true, children: trigger }),
7385
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(DrawerContent, { className: "p-0 flex flex-col", children: [
7386
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(DrawerHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0 text-left", children: [
7387
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
7388
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react27.X, {}) }) })
7389
+ ] }),
7390
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
7391
+ body
7392
+ ] })
7393
+ ] });
7394
+ }
7395
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Sheet, { children: [
7396
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetTrigger, { asChild: true, children: trigger }),
7397
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(SheetContent, { side: "right", showCloseButton: false, className: "p-0 flex flex-col w-80 sm:max-w-xs", children: [
7398
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(SheetHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0", children: [
7399
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
7400
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react27.X, {}) }) })
7401
+ ] }),
7402
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
7403
+ body
7404
+ ] })
7405
+ ] });
7406
+ }
7407
+ function PositionsList({
7408
+ positions,
7409
+ onViewHistory
7410
+ }) {
7411
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex flex-col flex-1 min-h-0", children: [
7412
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ItemGroup, { className: "min-h-0 overflow-y-auto", children: positions.map((pos, i) => /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(React16.Fragment, { children: [
7413
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PositionRow, { position: pos }),
7414
+ i < positions.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "h-px mx-4 bg-border-subtle" })
7415
+ ] }, i)) }),
7416
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
7417
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "shrink-0 flex justify-center py-4", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View transaction history" }) })
7418
+ ] });
7419
+ }
7420
+ function PositionRow({ position }) {
7421
+ const { label, suffix } = positionTitleParts(position);
7422
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Item, { size: "sm", children: [
7423
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(ItemContent, { children: [
7424
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(ItemTitle, { children: [
7425
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-on-prominent", children: label }),
7426
+ suffix && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-on-subtle", children: ` ${suffix}` })
7427
+ ] }),
7428
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(MetaNote, { market: position.market, duration: position.duration })
7429
+ ] }),
7430
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ItemActions, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PnlMeta, { pnl: position.pnl, win: position.win, stake: position.stake }) })
7431
+ ] });
7432
+ }
7433
+ var DIGITS_TYPE_LABEL = {
7434
+ matches: "Matches",
7435
+ differs: "Differs",
7436
+ odd: "Odd",
7437
+ even: "Even",
7438
+ over: "Over",
7439
+ under: "Under"
7440
+ };
7441
+ function positionTitleParts(p) {
7442
+ switch (p.kind) {
7443
+ case "rise-fall":
7444
+ return { label: p.direction };
7445
+ case "swipe":
7446
+ return { label: `Swipe-${p.direction.toLowerCase()}` };
7447
+ case "box-o":
7448
+ return { label: "Box-O", suffix: p.multiplier };
7449
+ // Digits with a picked value (matches/differs/over/under) show it as a
7450
+ // subtle suffix; odd/even have no digit so just the label.
7451
+ case "digits":
7452
+ return { label: DIGITS_TYPE_LABEL[p.type], suffix: p.digit };
7453
+ }
7454
+ }
7455
+ function MetaNote({ market, duration }) {
7456
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: "text-xs text-on-subtle whitespace-nowrap", children: [
7457
+ market,
7458
+ " \xB7 ",
7459
+ duration
7460
+ ] });
7461
+ }
7462
+ function PnlMeta({ pnl, win, stake }) {
7463
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex flex-col items-end gap-0.5", children: [
7464
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: `font-display font-bold tabular-nums text-base ${win ? "text-semantic-win" : "text-semantic-loss"}`, children: pnl }),
7465
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "tabular-nums text-xs text-on-subtle", children: stake })
7466
+ ] });
7467
+ }
7468
+ function DefaultEmptyState({ onViewHistory }) {
7469
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Empty, { className: "flex min-h-0 flex-1 flex-col justify-center border-none rounded-none p-6 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(EmptyHeader, { className: "gap-4", children: [
7470
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(EmptyMedia, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react27.History, { className: "size-8 text-on-subtle" }) }),
7471
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(EmptyTitle, { className: "text-base leading-6 font-semibold tracking-normal body-md text-on-subtle", children: "No trades yet." }),
7472
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View transaction history" })
7473
+ ] }) });
7474
+ }
6974
7475
  // Annotate the CommonJS export names for ESM import in node:
6975
7476
  0 && (module.exports = {
6976
7477
  Accordion,
@@ -6993,6 +7494,7 @@ function ToggleGroupItem(_a) {
6993
7494
  AlertDialogTrigger,
6994
7495
  AlertTitle,
6995
7496
  AspectRatio,
7497
+ AuthBlock,
6996
7498
  Avatar,
6997
7499
  AvatarBadge,
6998
7500
  AvatarFallback,
@@ -7000,7 +7502,6 @@ function ToggleGroupItem(_a) {
7000
7502
  AvatarGroupCount,
7001
7503
  AvatarImage,
7002
7504
  Badge,
7003
- BoostTicketCard,
7004
7505
  Breadcrumb,
7005
7506
  BreadcrumbEllipsis,
7006
7507
  BreadcrumbItem,
@@ -7072,6 +7573,7 @@ function ToggleGroupItem(_a) {
7072
7573
  ContextMenuSubContent,
7073
7574
  ContextMenuSubTrigger,
7074
7575
  ContextMenuTrigger,
7576
+ CreditTicketCard,
7075
7577
  Dialog,
7076
7578
  DialogClose,
7077
7579
  DialogContent,
@@ -7114,6 +7616,7 @@ function ToggleGroupItem(_a) {
7114
7616
  EmptyHeader,
7115
7617
  EmptyMedia,
7116
7618
  EmptyTitle,
7619
+ FAQBlock,
7117
7620
  Field,
7118
7621
  FieldContent,
7119
7622
  FieldDescription,
@@ -7131,6 +7634,8 @@ function ToggleGroupItem(_a) {
7131
7634
  FormItem,
7132
7635
  FormLabel,
7133
7636
  FormMessage,
7637
+ HeaderNavigationBlock,
7638
+ HeroBlock,
7134
7639
  HoverCard,
7135
7640
  HoverCardContent,
7136
7641
  HoverCardTrigger,
@@ -7178,6 +7683,7 @@ function ToggleGroupItem(_a) {
7178
7683
  NativeSelect,
7179
7684
  NativeSelectOptGroup,
7180
7685
  NativeSelectOption,
7686
+ NavBarBlock,
7181
7687
  NavigationButton,
7182
7688
  NavigationMenu,
7183
7689
  NavigationMenuContent,
@@ -7187,6 +7693,7 @@ function ToggleGroupItem(_a) {
7187
7693
  NavigationMenuList,
7188
7694
  NavigationMenuTrigger,
7189
7695
  NavigationMenuViewport,
7696
+ OpenPositionsBlock,
7190
7697
  Pagination,
7191
7698
  PaginationContent,
7192
7699
  PaginationEllipsis,
@@ -7207,6 +7714,8 @@ function ToggleGroupItem(_a) {
7207
7714
  ResizableHandle,
7208
7715
  ResizablePanel,
7209
7716
  ResizablePanelGroup,
7717
+ ResultBlock,
7718
+ ResultDialog,
7210
7719
  ScrollArea,
7211
7720
  ScrollBar,
7212
7721
  Select,