@trading-game/design-intelligence-layer 0.11.0 → 0.12.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/README.md +13 -1
- package/dist/index.cjs +145 -77
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +44 -9
- package/dist/index.d.ts +44 -9
- package/dist/index.js +145 -79
- package/dist/index.js.map +1 -1
- package/guides/design-system-guide/trading-game-ds-guide.md +14 -8
- package/package.json +1 -1
- package/src/styles.css +21 -0
package/README.md
CHANGED
|
@@ -149,7 +149,7 @@ npm install react react-dom tailwindcss
|
|
|
149
149
|
| Table | `Table, TableHeader, TableBody, TableRow, TableHead, TableCell` |
|
|
150
150
|
| Tabs | `Tabs, TabsList, TabsTrigger, TabsContent` |
|
|
151
151
|
| Textarea | `Textarea` |
|
|
152
|
-
| Ticket Card | `TicketCard` |
|
|
152
|
+
| Ticket Card | `TicketCard`, `CreditTicketCard` |
|
|
153
153
|
| Toast | `Toaster` |
|
|
154
154
|
| Toggle | `Toggle, toggleVariants` |
|
|
155
155
|
| Toggle Group | `ToggleGroup, ToggleGroupItem` |
|
|
@@ -215,6 +215,8 @@ States: hover (`bg-secondary-hover`), focus (3px `ring-ring/50`), active (`opaci
|
|
|
215
215
|
<Badge variant="fill" /> // Blue tint
|
|
216
216
|
<Badge variant="fill-success" /> // Green tint
|
|
217
217
|
<Badge variant="fill-fail" /> // Red tint
|
|
218
|
+
<Badge variant="fill-warning" /> // Orange tint
|
|
219
|
+
<Badge variant="fill-credit" /> // Amber-orange tint — credit/bonus labels (pair with TicketPlus icon)
|
|
218
220
|
|
|
219
221
|
// Outline (black border, secondary-hover on hover)
|
|
220
222
|
<Badge variant="outline" />
|
|
@@ -293,6 +295,7 @@ All tokens are CSS custom properties, loaded automatically via `@trading-game/de
|
|
|
293
295
|
| `bg-secondary-hover` | `--secondary-hover` | `#EEEEEE` | Outline/secondary hover (light grey) |
|
|
294
296
|
| `bg-semantic-win` | `--semantic-win` | green | Profit / positive state |
|
|
295
297
|
| `bg-semantic-loss` | `--semantic-loss` | red | Loss / negative state |
|
|
298
|
+
| `bg-semantic-credit` | `--semantic-credit` | `#F9840F` amber-orange | Credit / bonus badge background |
|
|
296
299
|
|
|
297
300
|
### Text tokens
|
|
298
301
|
|
|
@@ -306,6 +309,7 @@ All tokens are CSS custom properties, loaded automatically via `@trading-game/de
|
|
|
306
309
|
| `text-primary` | `#2323FF` | Brand blue inline text |
|
|
307
310
|
| `text-semantic-win` | green | Profit / positive text |
|
|
308
311
|
| `text-semantic-loss` | red | Loss / negative text |
|
|
312
|
+
| `text-semantic-credit-text` | `#713813` dark amber | Credit / bonus badge foreground |
|
|
309
313
|
|
|
310
314
|
### Border & focus tokens
|
|
311
315
|
|
|
@@ -577,6 +581,14 @@ Design tokens are managed in Figma and exported as CSS variables. To update:
|
|
|
577
581
|
|
|
578
582
|
## Changelog
|
|
579
583
|
|
|
584
|
+
### v0.12.0
|
|
585
|
+
- **New semantic tokens — credit:** `--semantic-credit` (`#F9840F` amber-orange) and `--semantic-credit-text` (`#713813` dark amber) added to both `src/styles.css` and `app/globals.css`. Tailwind utilities: `bg-semantic-credit`, `text-semantic-credit-text`.
|
|
586
|
+
- **Badge — `fill-credit` variant:** New `fill-credit` variant for credit/bonus labels — `bg-semantic-credit/16` background with `text-semantic-credit-text` foreground. Pair with a `TicketPlus` icon. Badge base class no longer applies `tracking-wide`; letter spacing is default on all badge variants.
|
|
587
|
+
- **New `CreditTicketCard` component:** Exported alongside `TicketCard`. Renders the same ticket shell (notches, tear-line, shimmer stub) but with a variable-height card body and an inline `<Badge variant="fill-credit">` below the value for credit/bonus display. Props: `icon`, `label`, `value`, `currency`, `stubLabel`, `onStubClick`, `stubDisabled`, `creditAmount` (default `"0.00"`), `creditCurrency` (default `"USDT"`), `compact`.
|
|
588
|
+
- **`TicketCard` — `compact` prop:** New boolean prop (default `false`). When `true`, reduces left-content padding from `px-4 gap-4` to `px-2 gap-2` for mobile layouts.
|
|
589
|
+
- **`TicketCard` — welcome-credit props removed:** `welcomeCredit`, `freeCredit` (deprecated alias), `creditUsed`, `creditTotal`, `creditCurrency`, `creditLabel`, `creditFullWidth`, and the `Progress`-based credit bar have been removed. Use `CreditTicketCard` for the credit use case.
|
|
590
|
+
- **`tracking-wide` / `tracking-widest` removed from several components:** Badge base class, `Link` base class, `PaginationLink`, `CommandShortcut`, `ContextMenuShortcut`, `DropdownMenuShortcut`, and `MenubarShortcut` no longer apply letter-spacing overrides. All render with default tracking.
|
|
591
|
+
|
|
580
592
|
### v0.10.1
|
|
581
593
|
- **TicketCard — Wallet icon:** Default icon in the circular badge is now a `Wallet` icon (replaces `CircleDollarSign`).
|
|
582
594
|
- **TicketCard — sentence case labels:** The label above the value (e.g. "Total balance") and the stub label (e.g. "Deposit") no longer apply `uppercase` or `tracking-widest`. Both render in sentence case with default letter spacing.
|
package/dist/index.cjs
CHANGED
|
@@ -158,6 +158,7 @@ __export(index_exports, {
|
|
|
158
158
|
ContextMenuSubContent: () => ContextMenuSubContent,
|
|
159
159
|
ContextMenuSubTrigger: () => ContextMenuSubTrigger,
|
|
160
160
|
ContextMenuTrigger: () => ContextMenuTrigger,
|
|
161
|
+
CreditTicketCard: () => CreditTicketCard,
|
|
161
162
|
Dialog: () => Dialog,
|
|
162
163
|
DialogClose: () => DialogClose,
|
|
163
164
|
DialogContent: () => DialogContent,
|
|
@@ -356,6 +357,7 @@ __export(index_exports, {
|
|
|
356
357
|
TabsTrigger: () => TabsTrigger,
|
|
357
358
|
Textarea: () => Textarea,
|
|
358
359
|
TicketCard: () => TicketCard,
|
|
360
|
+
TicketCardDesktop: () => TicketCardDesktop,
|
|
359
361
|
Toaster: () => Toaster,
|
|
360
362
|
Toggle: () => Toggle,
|
|
361
363
|
ToggleGroup: () => ToggleGroup,
|
|
@@ -934,7 +936,7 @@ var import_class_variance_authority3 = require("class-variance-authority");
|
|
|
934
936
|
var import_radix_ui6 = require("radix-ui");
|
|
935
937
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
936
938
|
var badgeVariants = (0, import_class_variance_authority3.cva)(
|
|
937
|
-
"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent text-xs font-display font-semibold
|
|
939
|
+
"inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent text-xs font-display font-semibold whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [&>svg]:pointer-events-none [&>svg]:size-3",
|
|
938
940
|
{
|
|
939
941
|
variants: {
|
|
940
942
|
variant: {
|
|
@@ -948,6 +950,7 @@ var badgeVariants = (0, import_class_variance_authority3.cva)(
|
|
|
948
950
|
"fill-success": "bg-semantic-win/10 border-transparent text-semantic-win",
|
|
949
951
|
"fill-fail": "bg-semantic-loss/10 border-transparent text-semantic-loss",
|
|
950
952
|
"fill-warning": "bg-semantic-warning/10 border-transparent text-semantic-warning",
|
|
953
|
+
"fill-credit": "bg-semantic-credit/16 border-transparent text-semantic-credit-text !text-xs !font-semibold",
|
|
951
954
|
// Ghost (transparent)
|
|
952
955
|
ghost: "bg-transparent border-transparent text-primary [a&]:hover:bg-secondary-hover [a&]:hover:text-primary",
|
|
953
956
|
"ghost-success": "bg-transparent border-transparent text-semantic-win [a&]:hover:bg-semantic-win/10 [a&]:hover:text-semantic-win",
|
|
@@ -2743,7 +2746,7 @@ function CommandShortcut(_a) {
|
|
|
2743
2746
|
__spreadValues({
|
|
2744
2747
|
"data-slot": "command-shortcut",
|
|
2745
2748
|
className: cn(
|
|
2746
|
-
"ml-auto text-xs
|
|
2749
|
+
"ml-auto text-xs text-on-subtle",
|
|
2747
2750
|
className
|
|
2748
2751
|
)
|
|
2749
2752
|
}, props)
|
|
@@ -2963,7 +2966,7 @@ function ContextMenuShortcut(_a) {
|
|
|
2963
2966
|
__spreadValues({
|
|
2964
2967
|
"data-slot": "context-menu-shortcut",
|
|
2965
2968
|
className: cn(
|
|
2966
|
-
"ml-auto text-xs
|
|
2969
|
+
"ml-auto text-xs text-on-subtle",
|
|
2967
2970
|
className
|
|
2968
2971
|
)
|
|
2969
2972
|
}, props)
|
|
@@ -3274,7 +3277,7 @@ function DropdownMenuShortcut(_a) {
|
|
|
3274
3277
|
__spreadValues({
|
|
3275
3278
|
"data-slot": "dropdown-menu-shortcut",
|
|
3276
3279
|
className: cn(
|
|
3277
|
-
"ml-auto text-xs
|
|
3280
|
+
"ml-auto text-xs text-on-subtle",
|
|
3278
3281
|
className
|
|
3279
3282
|
)
|
|
3280
3283
|
}, props)
|
|
@@ -4130,7 +4133,7 @@ var import_class_variance_authority9 = require("class-variance-authority");
|
|
|
4130
4133
|
var import_radix_ui19 = require("radix-ui");
|
|
4131
4134
|
var import_jsx_runtime35 = require("react/jsx-runtime");
|
|
4132
4135
|
var linkVariants = (0, import_class_variance_authority9.cva)(
|
|
4133
|
-
"inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 active:opacity-60 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:inline font-display font-bold normal-case
|
|
4136
|
+
"inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap transition-all outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 active:opacity-60 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:inline font-display font-bold normal-case text-primary hover:underline decoration-2 underline-offset-4",
|
|
4134
4137
|
{
|
|
4135
4138
|
variants: {
|
|
4136
4139
|
size: {
|
|
@@ -4364,7 +4367,7 @@ function MenubarShortcut(_a) {
|
|
|
4364
4367
|
__spreadValues({
|
|
4365
4368
|
"data-slot": "menubar-shortcut",
|
|
4366
4369
|
className: cn(
|
|
4367
|
-
"ml-auto text-xs
|
|
4370
|
+
"ml-auto text-xs text-on-subtle",
|
|
4368
4371
|
className
|
|
4369
4372
|
)
|
|
4370
4373
|
}, props)
|
|
@@ -4748,7 +4751,7 @@ function PaginationLink(_a) {
|
|
|
4748
4751
|
"data-slot": "pagination-link",
|
|
4749
4752
|
"data-active": isActive,
|
|
4750
4753
|
className: cn(
|
|
4751
|
-
"inline-flex shrink-0 items-center justify-center size-10 rounded-xs text-sm font-display font-bold uppercase
|
|
4754
|
+
"inline-flex shrink-0 items-center justify-center size-10 rounded-xs text-sm font-display font-bold uppercase whitespace-nowrap transition-[color,background-color,border-color] outline-none border",
|
|
4752
4755
|
isActive ? "bg-primary/10 border-primary text-primary" : "bg-transparent border-transparent text-on-prominent hover:bg-secondary-hover",
|
|
4753
4756
|
className
|
|
4754
4757
|
)
|
|
@@ -6606,92 +6609,155 @@ function TabsContent(_a) {
|
|
|
6606
6609
|
var import_lucide_react23 = require("lucide-react");
|
|
6607
6610
|
var import_jsx_runtime57 = require("react/jsx-runtime");
|
|
6608
6611
|
function TicketCard({
|
|
6612
|
+
className,
|
|
6609
6613
|
icon,
|
|
6610
6614
|
label,
|
|
6611
6615
|
value,
|
|
6612
|
-
|
|
6616
|
+
currency,
|
|
6613
6617
|
stubLabel,
|
|
6614
6618
|
onStubClick,
|
|
6615
6619
|
stubDisabled = false,
|
|
6616
|
-
|
|
6620
|
+
compact = false
|
|
6617
6621
|
}) {
|
|
6618
|
-
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
6619
|
-
"div",
|
|
6620
|
-
|
|
6621
|
-
"
|
|
6622
|
-
|
|
6623
|
-
"
|
|
6624
|
-
|
|
6625
|
-
|
|
6626
|
-
|
|
6627
|
-
|
|
6628
|
-
|
|
6629
|
-
|
|
6630
|
-
|
|
6631
|
-
|
|
6632
|
-
|
|
6633
|
-
|
|
6634
|
-
|
|
6635
|
-
|
|
6622
|
+
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 h-20 w-full items-stretch justify-between rounded-sm bg-subtle", children: [
|
|
6623
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: cn("flex flex-1 items-center overflow-hidden", compact ? "gap-2 px-2" : "gap-4 px-4"), children: [
|
|
6624
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-full border-2 border-primary text-primary", children: icon }),
|
|
6625
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex h-11 flex-col justify-center gap-1 whitespace-nowrap", children: [
|
|
6626
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-xs text-on-subtle", children: label }),
|
|
6627
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("p", { className: "leading-none", children: [
|
|
6628
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-[20px] font-bold text-on-prominent", children: value }),
|
|
6629
|
+
currency && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
|
|
6630
|
+
" ",
|
|
6631
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-sm text-on-subtle", children: currency })
|
|
6632
|
+
] })
|
|
6633
|
+
] })
|
|
6634
|
+
] })
|
|
6635
|
+
] }),
|
|
6636
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { "aria-hidden": true, className: "pointer-events-none absolute right-[88px] top-[-12px] z-10 size-6 rounded-full bg-prominent" }),
|
|
6637
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { "aria-hidden": true, className: "pointer-events-none absolute right-[88px] top-[68px] z-10 size-6 rounded-full bg-prominent" }),
|
|
6638
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
6639
|
+
"div",
|
|
6640
|
+
{
|
|
6641
|
+
"aria-hidden": true,
|
|
6642
|
+
className: "pointer-events-none absolute bottom-[12px] top-[12px] z-10 w-1 -translate-x-1/2",
|
|
6643
|
+
style: {
|
|
6644
|
+
right: 96,
|
|
6645
|
+
backgroundImage: "repeating-linear-gradient(to bottom, color-mix(in oklch, var(--border-subtle) 80%, black) 0px, color-mix(in oklch, var(--border-subtle) 80%, black) 3px, transparent 3px, transparent 6px)"
|
|
6646
|
+
}
|
|
6647
|
+
}
|
|
6648
|
+
),
|
|
6649
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
6650
|
+
"button",
|
|
6651
|
+
{
|
|
6652
|
+
type: "button",
|
|
6653
|
+
onClick: onStubClick,
|
|
6654
|
+
disabled: stubDisabled,
|
|
6655
|
+
"aria-label": stubLabel,
|
|
6656
|
+
className: cn(
|
|
6657
|
+
"relative flex h-20 w-[100px] shrink-0 flex-col items-center justify-center gap-1 overflow-hidden rounded-r-sm bg-primary",
|
|
6658
|
+
"transition-colors duration-fast ease-standard",
|
|
6659
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
6660
|
+
stubDisabled ? "cursor-not-allowed opacity-50" : "hover:bg-primary-hover"
|
|
6661
|
+
),
|
|
6662
|
+
children: [
|
|
6663
|
+
!stubDisabled && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
6664
|
+
"span",
|
|
6636
6665
|
{
|
|
6637
6666
|
"aria-hidden": true,
|
|
6638
|
-
className: "pointer-events-none absolute
|
|
6667
|
+
className: "pointer-events-none absolute inset-0 [animation:stub-shimmer_1.5s_linear_infinite]",
|
|
6668
|
+
style: {
|
|
6669
|
+
background: "linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.30) 50%, transparent 100%)"
|
|
6670
|
+
}
|
|
6639
6671
|
}
|
|
6640
6672
|
),
|
|
6641
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
6642
|
-
|
|
6673
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react23.ArrowRight, { className: "size-4 text-on-prominent-static-inverse" }),
|
|
6674
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-sm font-semibold text-on-prominent-static-inverse", children: stubLabel })
|
|
6675
|
+
]
|
|
6676
|
+
}
|
|
6677
|
+
)
|
|
6678
|
+
] }) });
|
|
6679
|
+
}
|
|
6680
|
+
function CreditTicketCard({
|
|
6681
|
+
className,
|
|
6682
|
+
icon,
|
|
6683
|
+
label,
|
|
6684
|
+
value,
|
|
6685
|
+
currency,
|
|
6686
|
+
stubLabel,
|
|
6687
|
+
onStubClick,
|
|
6688
|
+
stubDisabled = false,
|
|
6689
|
+
creditAmount = "0.00",
|
|
6690
|
+
creditCurrency = "USDT",
|
|
6691
|
+
compact = false
|
|
6692
|
+
}) {
|
|
6693
|
+
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: [
|
|
6694
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: cn("flex flex-1 items-center overflow-hidden py-4", compact ? "gap-2 px-2" : "gap-4 px-4"), children: [
|
|
6695
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-full border-2 border-primary text-primary", children: icon }),
|
|
6696
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col gap-2 whitespace-nowrap", children: [
|
|
6697
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "flex flex-col gap-1", children: [
|
|
6698
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("p", { className: "text-xs text-on-subtle", children: label }),
|
|
6699
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("p", { className: "leading-none", children: [
|
|
6700
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-[20px] font-bold text-on-prominent", children: value }),
|
|
6701
|
+
currency && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
|
|
6702
|
+
" ",
|
|
6703
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-sm text-on-subtle", children: currency })
|
|
6704
|
+
] })
|
|
6705
|
+
] })
|
|
6706
|
+
] }),
|
|
6707
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(Badge, { variant: "fill-credit", size: "sm", className: "!gap-1 !font-bold !tracking-normal", children: [
|
|
6708
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react23.TicketPlus, { className: "!size-3.5" }),
|
|
6709
|
+
"Credit: ",
|
|
6710
|
+
creditAmount,
|
|
6711
|
+
" ",
|
|
6712
|
+
creditCurrency
|
|
6713
|
+
] })
|
|
6714
|
+
] })
|
|
6715
|
+
] }),
|
|
6716
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { "aria-hidden": true, className: "pointer-events-none absolute right-[88px] top-[-12px] z-10 size-6 rounded-full bg-prominent" }),
|
|
6717
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { "aria-hidden": true, className: "pointer-events-none absolute right-[88px] bottom-[-12px] z-10 size-6 rounded-full bg-prominent" }),
|
|
6718
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
6719
|
+
"div",
|
|
6720
|
+
{
|
|
6721
|
+
"aria-hidden": true,
|
|
6722
|
+
className: "pointer-events-none absolute bottom-[12px] top-[12px] z-10 w-1 -translate-x-1/2",
|
|
6723
|
+
style: {
|
|
6724
|
+
right: 96,
|
|
6725
|
+
backgroundImage: "repeating-linear-gradient(to bottom, color-mix(in oklch, var(--border-subtle) 80%, black) 0px, color-mix(in oklch, var(--border-subtle) 80%, black) 3px, transparent 3px, transparent 6px)"
|
|
6726
|
+
}
|
|
6727
|
+
}
|
|
6728
|
+
),
|
|
6729
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
6730
|
+
"button",
|
|
6731
|
+
{
|
|
6732
|
+
type: "button",
|
|
6733
|
+
onClick: onStubClick,
|
|
6734
|
+
disabled: stubDisabled,
|
|
6735
|
+
"aria-label": stubLabel,
|
|
6736
|
+
className: cn(
|
|
6737
|
+
"relative flex w-[100px] shrink-0 self-stretch flex-col items-center justify-center gap-1 overflow-hidden rounded-r-sm bg-primary",
|
|
6738
|
+
"transition-colors duration-fast ease-standard",
|
|
6739
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
|
|
6740
|
+
stubDisabled ? "cursor-not-allowed opacity-50" : "hover:bg-primary-hover"
|
|
6741
|
+
),
|
|
6742
|
+
children: [
|
|
6743
|
+
!stubDisabled && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
6744
|
+
"span",
|
|
6643
6745
|
{
|
|
6644
6746
|
"aria-hidden": true,
|
|
6645
|
-
className: "pointer-events-none absolute
|
|
6747
|
+
className: "pointer-events-none absolute inset-0 [animation:stub-shimmer_1.5s_linear_infinite]",
|
|
6748
|
+
style: {
|
|
6749
|
+
background: "linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.30) 50%, transparent 100%)"
|
|
6750
|
+
}
|
|
6646
6751
|
}
|
|
6647
6752
|
),
|
|
6648
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
6649
|
-
|
|
6650
|
-
|
|
6651
|
-
|
|
6652
|
-
|
|
6653
|
-
|
|
6654
|
-
)
|
|
6655
|
-
] }),
|
|
6656
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
6657
|
-
"div",
|
|
6658
|
-
{
|
|
6659
|
-
className: cn(
|
|
6660
|
-
"relative z-[1] inline-flex max-w-[72%] shrink-0 self-stretch sm:max-w-[44%]"
|
|
6661
|
-
),
|
|
6662
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(
|
|
6663
|
-
"button",
|
|
6664
|
-
{
|
|
6665
|
-
type: "button",
|
|
6666
|
-
onClick: stubDisabled ? void 0 : onStubClick,
|
|
6667
|
-
disabled: stubDisabled,
|
|
6668
|
-
className: cn(
|
|
6669
|
-
"relative box-border inline-flex h-full min-h-[3.25rem] min-w-[5.75rem] flex-col items-center justify-center gap-1.5 rounded-r-sm px-4 py-3 transition-colors sm:min-h-0 sm:gap-1.5 sm:px-5",
|
|
6670
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
6671
|
-
stubDisabled ? "bg-primary/30 cursor-not-allowed opacity-50 pointer-events-none" : "bg-primary cursor-pointer hover:bg-primary-hover"
|
|
6672
|
-
),
|
|
6673
|
-
children: [
|
|
6674
|
-
!stubDisabled && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
6675
|
-
"span",
|
|
6676
|
-
{
|
|
6677
|
-
"aria-hidden": true,
|
|
6678
|
-
className: "absolute inset-0 pointer-events-none [animation:stub-shimmer_1.5s_linear_infinite]",
|
|
6679
|
-
style: {
|
|
6680
|
-
background: "linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.30) 50%, transparent 100%)"
|
|
6681
|
-
}
|
|
6682
|
-
}
|
|
6683
|
-
),
|
|
6684
|
-
stubIcon != null ? stubIcon : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react23.ArrowRight, { className: "relative size-5 shrink-0 text-on-prominent-static-inverse" }),
|
|
6685
|
-
stubLabel && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "max-w-full text-balance text-center text-xs font-bold leading-tight tracking-wide text-on-prominent-static-inverse sm:tracking-widest", children: stubLabel })
|
|
6686
|
-
]
|
|
6687
|
-
}
|
|
6688
|
-
)
|
|
6689
|
-
}
|
|
6690
|
-
)
|
|
6691
|
-
]
|
|
6692
|
-
}
|
|
6693
|
-
);
|
|
6753
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_lucide_react23.ArrowRight, { className: "size-4 text-on-prominent-static-inverse" }),
|
|
6754
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "text-sm font-semibold text-on-prominent-static-inverse", children: stubLabel })
|
|
6755
|
+
]
|
|
6756
|
+
}
|
|
6757
|
+
)
|
|
6758
|
+
] }) });
|
|
6694
6759
|
}
|
|
6760
|
+
var TicketCardDesktop = TicketCard;
|
|
6695
6761
|
|
|
6696
6762
|
// components/ui/toggle.tsx
|
|
6697
6763
|
var import_class_variance_authority14 = require("class-variance-authority");
|
|
@@ -6910,6 +6976,7 @@ function ToggleGroupItem(_a) {
|
|
|
6910
6976
|
ContextMenuSubContent,
|
|
6911
6977
|
ContextMenuSubTrigger,
|
|
6912
6978
|
ContextMenuTrigger,
|
|
6979
|
+
CreditTicketCard,
|
|
6913
6980
|
Dialog,
|
|
6914
6981
|
DialogClose,
|
|
6915
6982
|
DialogContent,
|
|
@@ -7108,6 +7175,7 @@ function ToggleGroupItem(_a) {
|
|
|
7108
7175
|
TabsTrigger,
|
|
7109
7176
|
Textarea,
|
|
7110
7177
|
TicketCard,
|
|
7178
|
+
TicketCardDesktop,
|
|
7111
7179
|
Toaster,
|
|
7112
7180
|
Toggle,
|
|
7113
7181
|
ToggleGroup,
|