@trading-game/design-intelligence-layer 0.14.0 → 0.15.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.
- package/AGENTS.md +140 -1
- package/README.md +15 -6
- package/dist/index.cjs +506 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +186 -1
- package/dist/index.d.ts +186 -1
- package/dist/index.js +498 -0
- package/dist/index.js.map +1 -1
- package/guides/design-system-guide/trading-game-ds-guide.md +199 -33
- package/guides/rules/design-system-consuming-project.mdc +19 -11
- package/package.json +1 -1
- package/src/styles.css +22 -0
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,
|
|
@@ -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,
|
|
@@ -6971,6 +6979,496 @@ function ToggleGroupItem(_a) {
|
|
|
6971
6979
|
})
|
|
6972
6980
|
);
|
|
6973
6981
|
}
|
|
6982
|
+
|
|
6983
|
+
// components/blocks/result-block.tsx
|
|
6984
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
6985
|
+
var THUMBS_UP_DATA_URL = "data:image/webp;base64,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";
|
|
6986
|
+
var THUMBS_DOWN_DATA_URL = "data:image/webp;base64,UklGRvgPAABXRUJQVlA4WAoAAAAQAAAAxwAAxwAAQUxQSOIFAAAB8IBteyFp27btSdWcum3btm3btm3btm3bvmzMTE33nDaGVw+6R1XJfmNSU6kcye37jogJwP/9/99f1caUdimdUBqb7vrG303Onteb783OTE9OTM68BW59s5n9e/bs2N7tdorR4eHR0aIoirFOMTJSjAwPnzsyWhRjnU632xktiqIYG+t0ut3ueLc73u0WxUjxt51Op9vdsXPXjvEzvvOGZ18NUEqkDFc4jhu2vJULk5binnJjaHmUvtAozcbIp9ShvJZ7r4VMGKXuy5KNPq3GtECk4TeRi6LU02nY7DOEozWzyCTJbkrDhp8pHVmtIJdDgyWjxWoXtBzvNmz82TVmxKJ9qhID9PDcGtNyGQstxa3o8eU1puSifa2S4v0+XldjUjCzDCXEb3y8OQrkfbUQx/l4R42jkplDEPJkH2+pcUQy8rJahlN8vDYS5teQ8VQfb6pxTDRyixbhNB/vqjEhm32fEuFMHx+oMSWbKaEkONvHl2rMyEb7aC3BWT6+XmNeODMPJcA5Pk6uUQpH3kELMOxjxrWF0pudkG3BdVHxyIvo8EZ99F2Xkc9+UYU35mPRdbkIGKWD2+XjPNdl5aN9ngpun4+e61IxWIAK7YCPRdclI0DeUYd2yMcgKuYQBFt2XSIG5KV1YId9rMbF/ASBH/FRui4SBXKTlu8CcbAvV2JVrvPFwQyg/j4g76WlKmNjjkK880eCvHIm1Fp0zIkQajU65Pm0TEuuC0TDvlvJ1I9QCSXb+aJB3lOLNHBtjYc5Atm2xIO8sg7mWGKYP0CiJdfmiJDbdCgTqWHfr0KZTA2zBhXIhI+Ba1NMyIeGMpkcdgby9F1DUSGvpv9OML+DOEuuPC7kkJJmuYaNzMPEWXFlJi62QJATCUIOBTHZCh2da4mlqtg87u+G14qVmdi8RZrVGjY2b5BmxZUzti8LYtrHsmsoOk8Ooudj4NoUnTsFseBj0bU5OhcMou9jwXW+2ExCmr7rIrF5RxgDH/Oui8fm8WH0fcy6LhOb14Ux56PnumxsdoUx5WPBdcnYcCiICR8914Wjc8sgjvqYdV0wOq8O4lArLhyd7wexz8e866Jh2RBODmKvjwXXxYKyDLEI4k+tuERAi4Y2hF1BfMLHogCGgY6FoB7qY8l1yXBI2iBODAHbfCzLEOZ7g8DxVQsuHp3bqRCyC9E0tuq6UEAmEI0g9XNom1pznT+gMM2pCATvp2loNVa8mg4DGk+gaWbFdb6QLE3rqhMRrNKXGKdtwEy7sGYDKlmtkrZF1RLyYIAM1/3lxiwfpVw/YjyrAXIErYArPPh93/r5H048+aSTTzn5lJNP/Okd4MrwmF8cV4xP0Ihn7DhyiKsU3ArrvpBWNmv5NOSIoMaXjWz9V2VaI4oaU1X7qn5vrjczPTM7O9ub7/cX+wN3fzDoD9bvT3V//eIrQGnEMs9ZtY6XRZJm16Npm/llmkC9lLZlNFBJonGcaRvvkybIsVi2zO5CoubbWLaLvIhOE+ib0bTLflIlCtRr2G6zjFTVONO0iryBShTkGJTt+iiSNTs/y1YdThfoW9G0iUPpAvUGtvqKCaNxumnT4xIGOQZli96eMsjPx6o930wa6JvRtOZ7aQP1Krb2u4mjcYppy68SBznmq5b8JnWQbWXZjm8kD7Ib0rTiJekD9Rq28g4JpHGmacPWBEKOQeXvKJI4uyBLb6NpBH0XGl/copJI4YP0/jCkscaw8fWVREKOlcrTWCohvwqtn/lkAn5s/AzSKdtM62U5naA+52c1ofT5uK5tqEwoYNyuY5tZSapXsVGzXi+l1A2bcXZSCuf38pGkQtmEcdxGJdW+jVlLJ9L6lxtz2zMT6/nN8To6qdT1GzMjSOytjVjS8HxZYmG5ib99TIbUPtJM9Ueo5PpFI9Ux5Eht9YAGrJnCENL7Ahsz/DVypPixqp41fAwypHh2GVY1rOEvN2mNNNe3pLUO/uwiyJDqSuOtByxZTh73xC3QSHkFIM8VoBT+7/9/fwRWUDgg8AkAADAxAJ0BKsgAyAA+kUKcSyWjoqymVGnxkBIJY27hcIDhQN/e+dvmhIx7MdAnpM27fmA/Wv9bvd09KO8r+gB5c3s2f4HAYNvvzaCLtF+z2VKDR/jGpTKAZORoHjc+qPYI8rj17fth7KX7Xk+2XiRUGTEXzLXDxkerZEuqna4OSkKXGsst3feHLAweKkPz8hy//rhTmG3bGoefPlZdx5hmazDpdadafF56TWEtI1qzwvQz4a93PvlwkDzPrX7CwP8aTrejC2xSfzQl6AQeRzJUFW+mpNZ7BQfiXCdNUPlXZq5420NaqGqA21AhtKu3guMjYZKUnI0XAnt15ojAkS/QZbQr1Og5hythotoLPZj1kfej9vPWOLKVjWOggPbaIqpy7CuffcDamgC12ir1+kA3SArDVekOigxdQKrvMcLCT8jOAE3G4l1eLEC0G+miJ+B2Him04Svzc44JA3EioGkHDurwuMT7XwDdafBI9ZO/Posu+G6M+60iYMKboYEV0HSMUgWfTxQDOtzyE8S6ggIl1BAQuAD+/xagAE6VVvxN9ErSzTevtjce80DStnMdPQPLurcHc2595OHopyAPoJlxDYzsSAkZLjQ+1DYXMozr/NRubuIqOovseYg4txNVnU05g9NKaGJR2VxB3zT5tvkHtJpIsU7T0BlT6kVPR/MeQC8bP1BZCFu4jiBhIuLBYcYVUzdKM2EQQW5qV25gp4uhXvvql2TVs3eLWlcht+FUrE/mzTXB51b+X6f8m2XK4Pp1Ig0uhCun1ZiNe0ro++PielC9tv9kaxX4uCDqdC60Wv0mtLDUBjyOycpuJQ5bXKZymDt0NpAjM3tmayr2YiRnrJJEM8PhqDwZj0LIsCFYMwCfDXmUvqPgtO9yMiB+WJ+RFsLWwYqmvVLFkrsdEnybgJLxiiTMv6eiNvTOdGAk4JCSMyzzoQzCnaf2jJt+VLPZ9/4ilN33zy9cLdo7/Qs4Ngso5aeAnBVbyp7cT9EDiUjY1252NgEZFVVv13jkOSIgJyb5oMyZkQnYMsr3A3yWpVUuJ0D5OfFxHvcb5AA3lwidHZx8JG6PixPcKII1f2BCJ+cqvULGMOF55kc6xsegCFFwt+tstOz8xty50qvBlbrIFrHoEBayoL9t3jqteDh3cuPM8aQWVRWDuL9Mdrtg2jczruARMKfZs2O7PDiomDEDqo+DYKtWZyCdRFpsAEhIHIjJ/GlY16MXz2GgvGfQNsi1Tp0OnKhLJbj/09BHBY9WwXynfpaQsSxGLZNkpygDoPIEwGVUPsv4+Noeh0pBU2WVNlQcdL6daOQjciKMC3vj5Kx9awAK789eKtjZ1ZXOvzaiU/59ZV7/gzNe+2QvPKDKI1eVGQGnTbG+0NL6To89dlf3306EfsmY0zvs5e6kHks3YMLqnY7fcUy8+TxxieDhGVRKEhCJ5XDsf4Af00N6Jk8yRKXws1AdlbqUNxXlGRyMGAaER32lSjdyD26dBWG+X/X/kDhkQTUjY2rH8Ul9VSvCeIDZkBAUG0zIUc2eIFsTs8BYlCkEXUrBWVU8S0vVLvnSqMQiVPZEz/6WlMKq4rFKJPWAxhusdfATImz8lfrZNbO0GG2h0q0XoTi3k5NjF6CVzynzAN6m9xnoESU428C9q2PYJGkZOQJm/4Bw8xVOxtAj0VstaTb3ffl1ZahIlTj097xhbIbOo45TQSOLybT2utt6OtFB6QhzK0esLQfQEAWwAZeriZdoWg7ShPR3vuiE1yNBOiseGN+SCP1s/ilVG2Y3auvUFn0be+2e/ZkphEyBVi+3Ah2gx2mSkAn8JE05tgyYgti4NwhQt0UxVggmZPcHRrLCPQWXzz7LV52Clqg39/CV6PvoNKcS/w2PBTFKDTPU2UqkxFDt+i8xWp9MrNOMoy6oDJgzk+t62sLcuPrjCXIgREQA5jbAgciPvO/TxbBTxKws0gYm5DyICgahB2pgLQGE2SmlVo/RZgVsx2vMo4i2O8diUWYxnUESWPdgQWBG/3xM3t66DhGDDcTubDV1RVLVcWuPYmLblLvIQKr9Xa9q1mmWemN5Ccr4lzcgixQevg483Ba4Qi2F1V1Yc237HNlURv2iWHHOm0BLHNJAyrfr/VR/cmOL5GaHgRQy+joUNUcuUGiYAFz4fwVuUDmpUgrY4Il0RlFbWdVYTtt7FGOpRlh6Kvcc4on4qx+JR9q2D2WObuffcl3pT58M4SSfiIth/ypyjDXOHBPa5NX5RdeOP4uf8WQhLgZ4Mbcsj22cqOMDOwlJeVxk+zwxhITpqqajToGm4dL4UjzgQrdRoJT1sodc+/degvUX0t27ogTE3ss36fScYLJdKPOXhGLsqAlA73J+got3HMJngNAmGkThC2LOL9IiIPqrR0YptOmK0XEEYh5T6+J34QGD55JJls5y3W3hc607dfsvb0GhOVifkuR4HFbwAJlHB3M+oJlbQI6xSbe+dBFVQYgNaWQvM3aouoRSEZq1WCp3SvSiGkFRDdiZXyV881w2g1iW2ya3gwslnnNv/t86d2Ya0DiwHd9jTyxXvnTd/i3LD8oWPCPaEhzvizXHKfUr6j+gKWL25LtC3aru0i0f4EAeqNRUCWM60WfxlJ2p60HexqCHHIyOzmWf2wgDvMEnjVk9WdgtfHEdbvbDFGJv6JEPZF6ouqXCeMuZvmMAbdtZbYYMF6Zpk6SVsjsVK7+nxTzQ51gZnigoOeCtJzQMc0qrLF6JoOMZWesIrWmk1Bn1Coxz60Xp4VS/uKixMkWXzb2rFOA1ES2VzHHWZNsJQAwcwwh3pf+3JJDbQszgIkvTAGYQ3EeEsVLrQyoEFPZcsO9pNNI9ArbmQ3RAAApXxWzZ0jYNOvdyny6/SoR5kmLHxBJOqbopzEMSJej2lfKM8GsfW76LkKYqa5s/L5Ij+T6uBOTQ2WxCWCbJnY7w4o85it/oIKN4i4Dw4nZmmJjpIowT4g7TxkogF8eb3P9lgnpP6TwcjMOJpmgEmaH3KH3YWrqjW3JOgSZZlUYz3feChOHVs2w8z1v4Vh9QofYXKE61Klfz0gjthZe+wMAnYiPchCSUNMaDfOMwVNHxPBqthq+nTlJGFUV8DjI7JB6ed08tX11pz6P2WmyYEAclqv4y1aWH5wjis0QtYd+JqYOYt/piG0bRyv/FD3IWHHp+HJJNMM3qLS1/UXgrJ71vjLbCKKP1gRkMIgNLo0DICCGoCWzlzwVaxaA+Vw2ak8zv1yOoqrBn2qtzv2hH0Sa/cw0F8kI0HzjwhsBeJceJAqsiO+wfsXZVY6WhujWK3iV42g/pWHuzPySKVsytA6AhimxmMXBLyL81aahZwi3ABTmJaNUjSUB3k5756ga8XCYmBf7ltCYwS9pugAAAAAAAAA==";
|
|
6987
|
+
function ResultBlock({
|
|
6988
|
+
status,
|
|
6989
|
+
amount,
|
|
6990
|
+
currency,
|
|
6991
|
+
contractLabel,
|
|
6992
|
+
pickedDigit,
|
|
6993
|
+
duration,
|
|
6994
|
+
ctaMode
|
|
6995
|
+
}) {
|
|
6996
|
+
const isWin = status === "win";
|
|
6997
|
+
const titleText = isWin ? "You won!" : "You lost!";
|
|
6998
|
+
const signedAmount = isWin ? `+${amount}` : `\u2212${amount}`;
|
|
6999
|
+
const amountColorClass = isWin ? "text-semantic-win" : "text-semantic-loss";
|
|
7000
|
+
const haloBgClass = isWin ? "bg-semantic-win" : "bg-semantic-loss";
|
|
7001
|
+
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: [
|
|
7002
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "relative flex items-center justify-center py-2", children: [
|
|
7003
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
7004
|
+
"span",
|
|
7005
|
+
{
|
|
7006
|
+
"aria-hidden": true,
|
|
7007
|
+
"data-results-motion": "halo",
|
|
7008
|
+
className: `absolute size-24 rounded-full blur-2xl opacity-20 ${haloBgClass}`
|
|
7009
|
+
}
|
|
7010
|
+
),
|
|
7011
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
7012
|
+
"img",
|
|
7013
|
+
{
|
|
7014
|
+
"data-results-motion": isWin ? "icon-win" : "icon-loss",
|
|
7015
|
+
src: isWin ? THUMBS_UP_DATA_URL : THUMBS_DOWN_DATA_URL,
|
|
7016
|
+
alt: isWin ? "Win" : "Loss",
|
|
7017
|
+
className: "relative size-20"
|
|
7018
|
+
}
|
|
7019
|
+
)
|
|
7020
|
+
] }),
|
|
7021
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-lg font-semibold text-on-prominent", children: titleText }),
|
|
7022
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("p", { className: `flex items-baseline gap-1.5 ${amountColorClass}`, children: [
|
|
7023
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "font-display text-4xl font-bold tabular-nums tracking-tight", children: signedAmount }),
|
|
7024
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-lg font-semibold", children: currency })
|
|
7025
|
+
] }),
|
|
7026
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
7027
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Badge, { variant: "standard", size: "sm", children: [
|
|
7028
|
+
contractLabel,
|
|
7029
|
+
pickedDigit !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [
|
|
7030
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { "aria-hidden": true, className: "h-3 w-px bg-border-prominent/40 mx-1" }),
|
|
7031
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "tabular-nums", children: pickedDigit })
|
|
7032
|
+
] })
|
|
7033
|
+
] }),
|
|
7034
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Badge, { variant: "standard", size: "sm", children: duration })
|
|
7035
|
+
] }),
|
|
7036
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "w-full pt-2", children: [
|
|
7037
|
+
ctaMode === "next-round" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: "Next round" }),
|
|
7038
|
+
ctaMode === "go-again" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: "Go again" }),
|
|
7039
|
+
ctaMode === "conversion" && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "w-full flex flex-col gap-3", children: [
|
|
7040
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-center text-base font-semibold text-on-prominent", children: "Ready to play for real?" }),
|
|
7041
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: "Deposit now" }),
|
|
7042
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { variant: "secondary", className: "w-full", children: "Stay in demo" })
|
|
7043
|
+
] })
|
|
7044
|
+
] })
|
|
7045
|
+
] });
|
|
7046
|
+
}
|
|
7047
|
+
function ResultDialog({
|
|
7048
|
+
title,
|
|
7049
|
+
body,
|
|
7050
|
+
primaryLabel,
|
|
7051
|
+
secondaryLabel
|
|
7052
|
+
}) {
|
|
7053
|
+
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: [
|
|
7054
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex flex-col items-center gap-2 text-center", children: [
|
|
7055
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-lg font-semibold text-on-prominent", children: title }),
|
|
7056
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-sm text-on-subtle", children: body })
|
|
7057
|
+
] }),
|
|
7058
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "w-full flex flex-col gap-2", children: [
|
|
7059
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: primaryLabel }),
|
|
7060
|
+
/* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { variant: "secondary", className: "w-full", children: secondaryLabel })
|
|
7061
|
+
] })
|
|
7062
|
+
] });
|
|
7063
|
+
}
|
|
7064
|
+
|
|
7065
|
+
// components/blocks/header-navigation-block.tsx
|
|
7066
|
+
var import_lucide_react24 = require("lucide-react");
|
|
7067
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
7068
|
+
function HeaderNavigationBlock({
|
|
7069
|
+
onBack,
|
|
7070
|
+
badge,
|
|
7071
|
+
balance,
|
|
7072
|
+
history,
|
|
7073
|
+
actions
|
|
7074
|
+
}) {
|
|
7075
|
+
var _a;
|
|
7076
|
+
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: [
|
|
7077
|
+
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" }) }),
|
|
7078
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex min-w-0 flex-1 items-center justify-center gap-2", children: [
|
|
7079
|
+
badge && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Badge, { variant: (_a = badge.variant) != null ? _a : "fill-warning", size: "sm", children: badge.label }),
|
|
7080
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "font-display font-semibold tabular-nums text-on-prominent", children: balance.amount }),
|
|
7081
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-sm text-on-subtle", children: balance.currency })
|
|
7082
|
+
] }),
|
|
7083
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
|
|
7084
|
+
history && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(HistoryButton, __spreadValues({}, history)),
|
|
7085
|
+
actions
|
|
7086
|
+
] })
|
|
7087
|
+
] }) });
|
|
7088
|
+
}
|
|
7089
|
+
function HistoryButton({
|
|
7090
|
+
count,
|
|
7091
|
+
onClick,
|
|
7092
|
+
"aria-label": ariaLabelOverride
|
|
7093
|
+
}) {
|
|
7094
|
+
const show = typeof count === "number" && count > 0;
|
|
7095
|
+
const label = show ? count > 99 ? "99+" : String(count) : null;
|
|
7096
|
+
const ariaLabel = ariaLabelOverride != null ? ariaLabelOverride : show ? `Open history, ${count} new` : "Open history";
|
|
7097
|
+
return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "relative inline-flex", children: [
|
|
7098
|
+
/* @__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" }) }),
|
|
7099
|
+
show && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
|
|
7100
|
+
"span",
|
|
7101
|
+
{
|
|
7102
|
+
"aria-hidden": true,
|
|
7103
|
+
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",
|
|
7104
|
+
children: label
|
|
7105
|
+
}
|
|
7106
|
+
)
|
|
7107
|
+
] });
|
|
7108
|
+
}
|
|
7109
|
+
|
|
7110
|
+
// components/blocks/faq-block.tsx
|
|
7111
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
7112
|
+
function FAQBlock({
|
|
7113
|
+
eyebrow = "FAQ Section",
|
|
7114
|
+
title = "Frequently asked questions",
|
|
7115
|
+
intro,
|
|
7116
|
+
items,
|
|
7117
|
+
defaultValue,
|
|
7118
|
+
helpCard,
|
|
7119
|
+
layout = "desktop"
|
|
7120
|
+
}) {
|
|
7121
|
+
var _a;
|
|
7122
|
+
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";
|
|
7123
|
+
const helpTitleClass = layout === "desktop" ? "text-2xl font-semibold font-display text-on-prominent" : "text-xl font-semibold font-display text-on-prominent";
|
|
7124
|
+
const helpCardPaddingClass = layout === "desktop" ? "p-8" : "p-6";
|
|
7125
|
+
const gapClass = layout === "desktop" ? "gap-12" : "gap-10";
|
|
7126
|
+
const headerGapClass = layout === "desktop" ? "gap-5" : "gap-4";
|
|
7127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `w-full flex flex-col ${gapClass}`, children: [
|
|
7128
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `flex flex-col ${headerGapClass} items-center w-full`, children: [
|
|
7129
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-sm text-on-subtle font-body", children: eyebrow }),
|
|
7130
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h2", { className: headingClass, children: title }),
|
|
7131
|
+
intro && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-lg text-on-subtle font-body text-center", children: intro })
|
|
7132
|
+
] }),
|
|
7133
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
7134
|
+
Accordion,
|
|
7135
|
+
{
|
|
7136
|
+
type: "single",
|
|
7137
|
+
collapsible: true,
|
|
7138
|
+
defaultValue: defaultValue != null ? defaultValue : (_a = items[0]) == null ? void 0 : _a.value,
|
|
7139
|
+
className: "w-full",
|
|
7140
|
+
children: items.map(({ value, question, answer }) => /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(AccordionItem, { value, children: [
|
|
7141
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(AccordionTrigger, { className: "text-base font-medium font-body text-on-prominent hover:no-underline", children: question }),
|
|
7142
|
+
/* @__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 }) })
|
|
7143
|
+
] }, value))
|
|
7144
|
+
}
|
|
7145
|
+
),
|
|
7146
|
+
helpCard && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `flex flex-col gap-6 items-center w-full bg-subtle rounded-xl ${helpCardPaddingClass}`, children: [
|
|
7147
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex flex-col gap-2 w-full", children: [
|
|
7148
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h3", { className: helpTitleClass, children: helpCard.title }),
|
|
7149
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-base text-on-subtle font-body", children: helpCard.body })
|
|
7150
|
+
] }),
|
|
7151
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Button, { size: "sm", onClick: helpCard.onCtaClick, children: helpCard.ctaLabel })
|
|
7152
|
+
] })
|
|
7153
|
+
] });
|
|
7154
|
+
}
|
|
7155
|
+
|
|
7156
|
+
// components/blocks/hero-block.tsx
|
|
7157
|
+
var import_lucide_react25 = require("lucide-react");
|
|
7158
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
7159
|
+
function HeroBlock({
|
|
7160
|
+
layout = "centered",
|
|
7161
|
+
tagline,
|
|
7162
|
+
heading,
|
|
7163
|
+
body,
|
|
7164
|
+
primaryCta,
|
|
7165
|
+
secondaryCta,
|
|
7166
|
+
image
|
|
7167
|
+
}) {
|
|
7168
|
+
if (layout === "centered") {
|
|
7169
|
+
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: [
|
|
7170
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex flex-col items-center gap-6 w-full", children: [
|
|
7171
|
+
tagline && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(TaglinePill, __spreadValues({}, tagline)),
|
|
7172
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h1", { className: "text-5xl font-semibold font-display tracking-tight text-on-prominent text-center", children: heading }),
|
|
7173
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: "text-lg font-body text-on-subtle text-center", children: body })
|
|
7174
|
+
] }),
|
|
7175
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Button, { size: "sm", onClick: primaryCta.onClick, children: [
|
|
7176
|
+
primaryCta.label,
|
|
7177
|
+
primaryCta.trailingArrow !== false && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react25.ArrowRight, { className: "size-4" })
|
|
7178
|
+
] })
|
|
7179
|
+
] }) });
|
|
7180
|
+
}
|
|
7181
|
+
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: [
|
|
7182
|
+
/* @__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: [
|
|
7183
|
+
/* @__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: [
|
|
7184
|
+
tagline && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(TaglinePill, __spreadProps(__spreadValues({}, tagline), { responsive: true })),
|
|
7185
|
+
/* @__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 }),
|
|
7186
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: "text-lg font-body text-on-subtle", children: body })
|
|
7187
|
+
] }),
|
|
7188
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex items-center justify-center min-[600px]:justify-start gap-2", children: [
|
|
7189
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { size: "sm", onClick: primaryCta.onClick, children: primaryCta.label }),
|
|
7190
|
+
secondaryCta && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { variant: "secondary", size: "sm", onClick: secondaryCta.onClick, children: secondaryCta.label })
|
|
7191
|
+
] })
|
|
7192
|
+
] }),
|
|
7193
|
+
/* @__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 })
|
|
7194
|
+
] }) });
|
|
7195
|
+
}
|
|
7196
|
+
function TaglinePill({
|
|
7197
|
+
label,
|
|
7198
|
+
suffix,
|
|
7199
|
+
responsive
|
|
7200
|
+
}) {
|
|
7201
|
+
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: [
|
|
7202
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "size-1.5 rounded-full bg-semantic-win shrink-0", "aria-hidden": "true" }),
|
|
7203
|
+
responsive && suffix ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
|
|
7204
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "hidden min-[600px]:inline", children: [
|
|
7205
|
+
label,
|
|
7206
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle", children: " \xB7 " })
|
|
7207
|
+
] }),
|
|
7208
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle min-[600px]:text-on-prominent", children: suffix })
|
|
7209
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
|
|
7210
|
+
label,
|
|
7211
|
+
suffix && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle", children: ` \xB7 ${suffix}` })
|
|
7212
|
+
] }),
|
|
7213
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react25.ArrowUpRight, { className: "size-4 text-on-subtle shrink-0", "aria-hidden": "true" })
|
|
7214
|
+
] });
|
|
7215
|
+
}
|
|
7216
|
+
|
|
7217
|
+
// components/blocks/auth-block.tsx
|
|
7218
|
+
var React14 = __toESM(require("react"), 1);
|
|
7219
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
7220
|
+
function AuthBlock({
|
|
7221
|
+
mode,
|
|
7222
|
+
logoSrc,
|
|
7223
|
+
wordmark = "trading.game",
|
|
7224
|
+
providers = ["google", "telegram", "x"],
|
|
7225
|
+
onSubmit,
|
|
7226
|
+
crossLinkHref = "#",
|
|
7227
|
+
idPrefix = "auth"
|
|
7228
|
+
}) {
|
|
7229
|
+
const headingText = mode === "sign-in" ? "Sign in" : "Sign up";
|
|
7230
|
+
const termsText = mode === "sign-in" ? "By signing in" : "By signing up";
|
|
7231
|
+
const ctaText = mode === "sign-in" ? "Sign in" : "Sign up";
|
|
7232
|
+
const footerPrompt = mode === "sign-in" ? "Don't have an account?" : "Already have an account?";
|
|
7233
|
+
const footerLinkLabel = mode === "sign-in" ? "Sign up" : "Log in";
|
|
7234
|
+
const [email, setEmail] = React14.useState("");
|
|
7235
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex flex-col items-center gap-6 w-full", children: [
|
|
7236
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-2", children: [
|
|
7237
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("img", { src: logoSrc, alt: wordmark, className: "size-8 object-contain" }),
|
|
7238
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "font-display font-semibold text-base text-on-prominent tracking-tight", children: wordmark })
|
|
7239
|
+
] }),
|
|
7240
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("h2", { className: "text-3xl font-bold font-display text-on-prominent text-center", children: headingText }),
|
|
7241
|
+
/* @__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)) }),
|
|
7242
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-3 w-full", children: [
|
|
7243
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex-1 h-px bg-border-subtle" }),
|
|
7244
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-sm text-on-subtle font-body", children: "or" }),
|
|
7245
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex-1 h-px bg-border-subtle" })
|
|
7246
|
+
] }),
|
|
7247
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex items-center gap-2 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
7248
|
+
Input,
|
|
7249
|
+
{
|
|
7250
|
+
id: `${idPrefix}-email`,
|
|
7251
|
+
type: "text",
|
|
7252
|
+
placeholder: "Email or phone number",
|
|
7253
|
+
className: "flex-1",
|
|
7254
|
+
value: email,
|
|
7255
|
+
onChange: (e) => setEmail(e.target.value)
|
|
7256
|
+
}
|
|
7257
|
+
) }),
|
|
7258
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("p", { className: "text-sm text-on-subtle font-body text-left w-full", children: [
|
|
7259
|
+
termsText,
|
|
7260
|
+
", you agree to our",
|
|
7261
|
+
" ",
|
|
7262
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Link, { size: "sm", href: "#", children: "Terms & Conditions" })
|
|
7263
|
+
] }),
|
|
7264
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Button, { size: "md", className: "w-full", onClick: () => onSubmit == null ? void 0 : onSubmit({ email }), children: ctaText }),
|
|
7265
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("p", { className: "text-sm text-on-subtle font-body text-center", children: [
|
|
7266
|
+
footerPrompt,
|
|
7267
|
+
" ",
|
|
7268
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Link, { size: "sm", href: crossLinkHref, children: footerLinkLabel })
|
|
7269
|
+
] })
|
|
7270
|
+
] });
|
|
7271
|
+
}
|
|
7272
|
+
function ProviderButton({ provider }) {
|
|
7273
|
+
switch (provider) {
|
|
7274
|
+
case "google":
|
|
7275
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
|
|
7276
|
+
/* @__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: [
|
|
7277
|
+
/* @__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" }),
|
|
7278
|
+
/* @__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" }),
|
|
7279
|
+
/* @__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" }),
|
|
7280
|
+
/* @__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" })
|
|
7281
|
+
] }),
|
|
7282
|
+
"Continue with Google"
|
|
7283
|
+
] });
|
|
7284
|
+
case "telegram":
|
|
7285
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
|
|
7286
|
+
/* @__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: [
|
|
7287
|
+
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("circle", { cx: "9", cy: "9", r: "9", fill: "#29B6F6" }),
|
|
7288
|
+
/* @__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" }),
|
|
7289
|
+
/* @__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" })
|
|
7290
|
+
] }),
|
|
7291
|
+
"Continue with Telegram"
|
|
7292
|
+
] });
|
|
7293
|
+
case "x":
|
|
7294
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
|
|
7295
|
+
/* @__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" }) }),
|
|
7296
|
+
"Continue with X (Twitter)"
|
|
7297
|
+
] });
|
|
7298
|
+
}
|
|
7299
|
+
}
|
|
7300
|
+
|
|
7301
|
+
// components/blocks/navbar-block.tsx
|
|
7302
|
+
var React15 = __toESM(require("react"), 1);
|
|
7303
|
+
var import_lucide_react26 = require("lucide-react");
|
|
7304
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
7305
|
+
function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
7306
|
+
var _a, _b, _c, _d;
|
|
7307
|
+
const [mobileMenuOpen, setMobileMenuOpen] = React15.useState(false);
|
|
7308
|
+
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: [
|
|
7309
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center justify-between px-layout-margin-inline py-3", children: [
|
|
7310
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-6", children: [
|
|
7311
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
7312
|
+
"img",
|
|
7313
|
+
{
|
|
7314
|
+
src: brand.fullLogoSrc,
|
|
7315
|
+
alt: brand.alt,
|
|
7316
|
+
className: "hidden min-[600px]:block h-7 w-auto shrink-0 object-contain object-left"
|
|
7317
|
+
}
|
|
7318
|
+
),
|
|
7319
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
7320
|
+
"img",
|
|
7321
|
+
{
|
|
7322
|
+
src: brand.iconLogoSrc,
|
|
7323
|
+
alt: brand.alt,
|
|
7324
|
+
className: "min-[600px]:hidden size-7 shrink-0 object-contain"
|
|
7325
|
+
}
|
|
7326
|
+
),
|
|
7327
|
+
/* @__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)) })
|
|
7328
|
+
] }),
|
|
7329
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "hidden min-[600px]:flex items-center gap-2", children: [
|
|
7330
|
+
signIn && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { variant: "tertiary", size: "sm", onClick: signIn.onClick, children: (_a = signIn.label) != null ? _a : "Sign in" }),
|
|
7331
|
+
signUp && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { size: "sm", onClick: signUp.onClick, children: (_b = signUp.label) != null ? _b : "Sign up" })
|
|
7332
|
+
] }),
|
|
7333
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
7334
|
+
Button,
|
|
7335
|
+
{
|
|
7336
|
+
variant: "tertiary",
|
|
7337
|
+
size: "icon-sm",
|
|
7338
|
+
"aria-label": mobileMenuOpen ? "Close navigation menu" : "Open navigation menu",
|
|
7339
|
+
"aria-expanded": mobileMenuOpen,
|
|
7340
|
+
className: "min-[600px]:hidden",
|
|
7341
|
+
onClick: () => setMobileMenuOpen((prev) => !prev),
|
|
7342
|
+
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" })
|
|
7343
|
+
}
|
|
7344
|
+
)
|
|
7345
|
+
] }),
|
|
7346
|
+
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: [
|
|
7347
|
+
links.map((l) => /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
7348
|
+
Button,
|
|
7349
|
+
{
|
|
7350
|
+
variant: "tertiary",
|
|
7351
|
+
size: "sm",
|
|
7352
|
+
className: "justify-start w-full",
|
|
7353
|
+
onClick: l.onClick,
|
|
7354
|
+
children: l.label
|
|
7355
|
+
},
|
|
7356
|
+
l.label
|
|
7357
|
+
)),
|
|
7358
|
+
(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: [
|
|
7359
|
+
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" }),
|
|
7360
|
+
signUp && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { size: "sm", className: "w-full", onClick: signUp.onClick, children: (_d = signUp.label) != null ? _d : "Sign up" })
|
|
7361
|
+
] })
|
|
7362
|
+
] })
|
|
7363
|
+
] }) });
|
|
7364
|
+
}
|
|
7365
|
+
|
|
7366
|
+
// components/blocks/open-positions-block.tsx
|
|
7367
|
+
var React16 = __toESM(require("react"), 1);
|
|
7368
|
+
var import_lucide_react27 = require("lucide-react");
|
|
7369
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
7370
|
+
function OpenPositionsBlock({
|
|
7371
|
+
trigger,
|
|
7372
|
+
sheetTitle = "Positions",
|
|
7373
|
+
positions,
|
|
7374
|
+
onViewHistory,
|
|
7375
|
+
emptyState
|
|
7376
|
+
}) {
|
|
7377
|
+
const isMobile = useIsMobile();
|
|
7378
|
+
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 });
|
|
7379
|
+
if (isMobile) {
|
|
7380
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Drawer, { children: [
|
|
7381
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerTrigger, { asChild: true, children: trigger }),
|
|
7382
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(DrawerContent, { className: "p-0 flex flex-col", children: [
|
|
7383
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(DrawerHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0 text-left", children: [
|
|
7384
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
|
|
7385
|
+
/* @__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, {}) }) })
|
|
7386
|
+
] }),
|
|
7387
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
|
|
7388
|
+
body
|
|
7389
|
+
] })
|
|
7390
|
+
] });
|
|
7391
|
+
}
|
|
7392
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Sheet, { children: [
|
|
7393
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetTrigger, { asChild: true, children: trigger }),
|
|
7394
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(SheetContent, { side: "right", showCloseButton: false, className: "p-0 flex flex-col w-80 sm:max-w-xs", children: [
|
|
7395
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(SheetHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0", children: [
|
|
7396
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
|
|
7397
|
+
/* @__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, {}) }) })
|
|
7398
|
+
] }),
|
|
7399
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
|
|
7400
|
+
body
|
|
7401
|
+
] })
|
|
7402
|
+
] });
|
|
7403
|
+
}
|
|
7404
|
+
function PositionsList({
|
|
7405
|
+
positions,
|
|
7406
|
+
onViewHistory
|
|
7407
|
+
}) {
|
|
7408
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex flex-col flex-1 min-h-0", children: [
|
|
7409
|
+
/* @__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: [
|
|
7410
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PositionRow, { position: pos }),
|
|
7411
|
+
i < positions.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "h-px mx-4 bg-border-subtle" })
|
|
7412
|
+
] }, i)) }),
|
|
7413
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
|
|
7414
|
+
/* @__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" }) })
|
|
7415
|
+
] });
|
|
7416
|
+
}
|
|
7417
|
+
function PositionRow({ position }) {
|
|
7418
|
+
const { label, suffix } = positionTitleParts(position);
|
|
7419
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Item, { size: "sm", children: [
|
|
7420
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(ItemContent, { children: [
|
|
7421
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(ItemTitle, { children: [
|
|
7422
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-on-prominent", children: label }),
|
|
7423
|
+
suffix && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-on-subtle", children: ` ${suffix}` })
|
|
7424
|
+
] }),
|
|
7425
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(MetaNote, { market: position.market, duration: position.duration })
|
|
7426
|
+
] }),
|
|
7427
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ItemActions, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PnlMeta, { pnl: position.pnl, win: position.win, stake: position.stake }) })
|
|
7428
|
+
] });
|
|
7429
|
+
}
|
|
7430
|
+
var DIGITS_TYPE_LABEL = {
|
|
7431
|
+
matches: "Matches",
|
|
7432
|
+
differs: "Differs",
|
|
7433
|
+
odd: "Odd",
|
|
7434
|
+
even: "Even",
|
|
7435
|
+
over: "Over",
|
|
7436
|
+
under: "Under"
|
|
7437
|
+
};
|
|
7438
|
+
function positionTitleParts(p) {
|
|
7439
|
+
switch (p.kind) {
|
|
7440
|
+
case "rise-fall":
|
|
7441
|
+
return { label: p.direction };
|
|
7442
|
+
case "swipe":
|
|
7443
|
+
return { label: `Swipe-${p.direction.toLowerCase()}` };
|
|
7444
|
+
case "box-o":
|
|
7445
|
+
return { label: "Box-O", suffix: p.multiplier };
|
|
7446
|
+
// Digits with a picked value (matches/differs/over/under) show it as a
|
|
7447
|
+
// subtle suffix; odd/even have no digit so just the label.
|
|
7448
|
+
case "digits":
|
|
7449
|
+
return { label: DIGITS_TYPE_LABEL[p.type], suffix: p.digit };
|
|
7450
|
+
}
|
|
7451
|
+
}
|
|
7452
|
+
function MetaNote({ market, duration }) {
|
|
7453
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: "text-xs text-on-subtle whitespace-nowrap", children: [
|
|
7454
|
+
market,
|
|
7455
|
+
" \xB7 ",
|
|
7456
|
+
duration
|
|
7457
|
+
] });
|
|
7458
|
+
}
|
|
7459
|
+
function PnlMeta({ pnl, win, stake }) {
|
|
7460
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex flex-col items-end gap-0.5", children: [
|
|
7461
|
+
/* @__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 }),
|
|
7462
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "tabular-nums text-xs text-on-subtle", children: stake })
|
|
7463
|
+
] });
|
|
7464
|
+
}
|
|
7465
|
+
function DefaultEmptyState({ onViewHistory }) {
|
|
7466
|
+
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: [
|
|
7467
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(EmptyMedia, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react27.History, { className: "size-8 text-on-subtle" }) }),
|
|
7468
|
+
/* @__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." }),
|
|
7469
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View transaction history" })
|
|
7470
|
+
] }) });
|
|
7471
|
+
}
|
|
6974
7472
|
// Annotate the CommonJS export names for ESM import in node:
|
|
6975
7473
|
0 && (module.exports = {
|
|
6976
7474
|
Accordion,
|
|
@@ -6993,6 +7491,7 @@ function ToggleGroupItem(_a) {
|
|
|
6993
7491
|
AlertDialogTrigger,
|
|
6994
7492
|
AlertTitle,
|
|
6995
7493
|
AspectRatio,
|
|
7494
|
+
AuthBlock,
|
|
6996
7495
|
Avatar,
|
|
6997
7496
|
AvatarBadge,
|
|
6998
7497
|
AvatarFallback,
|
|
@@ -7114,6 +7613,7 @@ function ToggleGroupItem(_a) {
|
|
|
7114
7613
|
EmptyHeader,
|
|
7115
7614
|
EmptyMedia,
|
|
7116
7615
|
EmptyTitle,
|
|
7616
|
+
FAQBlock,
|
|
7117
7617
|
Field,
|
|
7118
7618
|
FieldContent,
|
|
7119
7619
|
FieldDescription,
|
|
@@ -7131,6 +7631,8 @@ function ToggleGroupItem(_a) {
|
|
|
7131
7631
|
FormItem,
|
|
7132
7632
|
FormLabel,
|
|
7133
7633
|
FormMessage,
|
|
7634
|
+
HeaderNavigationBlock,
|
|
7635
|
+
HeroBlock,
|
|
7134
7636
|
HoverCard,
|
|
7135
7637
|
HoverCardContent,
|
|
7136
7638
|
HoverCardTrigger,
|
|
@@ -7178,6 +7680,7 @@ function ToggleGroupItem(_a) {
|
|
|
7178
7680
|
NativeSelect,
|
|
7179
7681
|
NativeSelectOptGroup,
|
|
7180
7682
|
NativeSelectOption,
|
|
7683
|
+
NavBarBlock,
|
|
7181
7684
|
NavigationButton,
|
|
7182
7685
|
NavigationMenu,
|
|
7183
7686
|
NavigationMenuContent,
|
|
@@ -7187,6 +7690,7 @@ function ToggleGroupItem(_a) {
|
|
|
7187
7690
|
NavigationMenuList,
|
|
7188
7691
|
NavigationMenuTrigger,
|
|
7189
7692
|
NavigationMenuViewport,
|
|
7693
|
+
OpenPositionsBlock,
|
|
7190
7694
|
Pagination,
|
|
7191
7695
|
PaginationContent,
|
|
7192
7696
|
PaginationEllipsis,
|
|
@@ -7207,6 +7711,8 @@ function ToggleGroupItem(_a) {
|
|
|
7207
7711
|
ResizableHandle,
|
|
7208
7712
|
ResizablePanel,
|
|
7209
7713
|
ResizablePanelGroup,
|
|
7714
|
+
ResultBlock,
|
|
7715
|
+
ResultDialog,
|
|
7210
7716
|
ScrollArea,
|
|
7211
7717
|
ScrollBar,
|
|
7212
7718
|
Select,
|