@betfin/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/chunk-3CAXHUAL.js +23 -0
  2. package/dist/chunk-3CAXHUAL.js.map +1 -0
  3. package/dist/chunk-3YCD2QLS.js +113 -0
  4. package/dist/chunk-3YCD2QLS.js.map +1 -0
  5. package/dist/chunk-5CXIFF6J.js +46 -0
  6. package/dist/chunk-5CXIFF6J.js.map +1 -0
  7. package/dist/chunk-EP6DYU4N.js +26 -0
  8. package/dist/chunk-EP6DYU4N.js.map +1 -0
  9. package/dist/chunk-FHYW2QBY.js +21 -0
  10. package/dist/chunk-FHYW2QBY.js.map +1 -0
  11. package/dist/chunk-HRFMTZ55.js +49 -0
  12. package/dist/chunk-HRFMTZ55.js.map +1 -0
  13. package/dist/chunk-ILNHKDYA.js +107 -0
  14. package/dist/chunk-ILNHKDYA.js.map +1 -0
  15. package/dist/chunk-JTVU6ANA.js +37 -0
  16. package/dist/chunk-JTVU6ANA.js.map +1 -0
  17. package/dist/chunk-K7JWN6NH.js +21 -0
  18. package/dist/chunk-K7JWN6NH.js.map +1 -0
  19. package/dist/chunk-QZIKXMHP.js +131 -0
  20. package/dist/chunk-QZIKXMHP.js.map +1 -0
  21. package/dist/chunk-SSC2M625.js +24 -0
  22. package/dist/chunk-SSC2M625.js.map +1 -0
  23. package/dist/chunk-TLULUIYC.js +14 -0
  24. package/dist/chunk-TLULUIYC.js.map +1 -0
  25. package/dist/chunk-VJ6P5FFS.js +90 -0
  26. package/dist/chunk-VJ6P5FFS.js.map +1 -0
  27. package/dist/chunk-Y2TKUANL.js +11 -0
  28. package/dist/chunk-Y2TKUANL.js.map +1 -0
  29. package/dist/components/accordion.d.ts +6 -0
  30. package/dist/components/accordion.js +59 -0
  31. package/dist/components/accordion.js.map +1 -0
  32. package/dist/components/alert-dialog.d.ts +18 -0
  33. package/dist/components/alert-dialog.js +144 -0
  34. package/dist/components/alert-dialog.js.map +1 -0
  35. package/dist/components/app-header.d.ts +19 -0
  36. package/dist/components/app-header.js +17 -0
  37. package/dist/components/app-header.js.map +1 -0
  38. package/dist/components/badge.d.ts +7 -0
  39. package/dist/components/badge.js +47 -0
  40. package/dist/components/badge.js.map +1 -0
  41. package/dist/components/bet-value.d.ts +49 -0
  42. package/dist/components/bet-value.js +12 -0
  43. package/dist/components/bet-value.js.map +1 -0
  44. package/dist/components/breadcrumb.d.ts +10 -0
  45. package/dist/components/breadcrumb.js +65 -0
  46. package/dist/components/breadcrumb.js.map +1 -0
  47. package/dist/components/button.d.ts +8 -0
  48. package/dist/components/button.js +10 -0
  49. package/dist/components/button.js.map +1 -0
  50. package/dist/components/calendar.d.ts +10 -0
  51. package/dist/components/calendar.js +145 -0
  52. package/dist/components/calendar.js.map +1 -0
  53. package/dist/components/carousel.d.ts +28 -0
  54. package/dist/components/carousel.js +153 -0
  55. package/dist/components/carousel.js.map +1 -0
  56. package/dist/components/chart.d.ts +39 -0
  57. package/dist/components/chart.js +219 -0
  58. package/dist/components/chart.js.map +1 -0
  59. package/dist/components/checkbox.d.ts +3 -0
  60. package/dist/components/checkbox.js +26 -0
  61. package/dist/components/checkbox.js.map +1 -0
  62. package/dist/components/collapsible.d.ts +5 -0
  63. package/dist/components/collapsible.js +20 -0
  64. package/dist/components/collapsible.js.map +1 -0
  65. package/dist/components/command.d.ts +19 -0
  66. package/dist/components/command.js +130 -0
  67. package/dist/components/command.js.map +1 -0
  68. package/dist/components/context-menu.d.ts +29 -0
  69. package/dist/components/context-menu.js +186 -0
  70. package/dist/components/context-menu.js.map +1 -0
  71. package/dist/components/dialog.d.ts +17 -0
  72. package/dist/components/dialog.js +28 -0
  73. package/dist/components/dialog.js.map +1 -0
  74. package/dist/components/drawer.d.ts +16 -0
  75. package/dist/components/drawer.js +164 -0
  76. package/dist/components/drawer.js.map +1 -0
  77. package/dist/components/dropdown-menu.d.ts +29 -0
  78. package/dist/components/dropdown-menu.js +207 -0
  79. package/dist/components/dropdown-menu.js.map +1 -0
  80. package/dist/components/input-group.d.ts +18 -0
  81. package/dist/components/input-group.js +22 -0
  82. package/dist/components/input-group.js.map +1 -0
  83. package/dist/components/input.d.ts +3 -0
  84. package/dist/components/input.js +8 -0
  85. package/dist/components/input.js.map +1 -0
  86. package/dist/components/loading.d.ts +9 -0
  87. package/dist/components/loading.js +26 -0
  88. package/dist/components/loading.js.map +1 -0
  89. package/dist/components/member-profile.d.ts +79 -0
  90. package/dist/components/member-profile.js +342 -0
  91. package/dist/components/member-profile.js.map +1 -0
  92. package/dist/components/popover.d.ts +9 -0
  93. package/dist/components/popover.js +52 -0
  94. package/dist/components/popover.js.map +1 -0
  95. package/dist/components/progress.d.ts +7 -0
  96. package/dist/components/progress.js +40 -0
  97. package/dist/components/progress.js.map +1 -0
  98. package/dist/components/radio-group.d.ts +5 -0
  99. package/dist/components/radio-group.js +31 -0
  100. package/dist/components/radio-group.js.map +1 -0
  101. package/dist/components/scroll-area.d.ts +4 -0
  102. package/dist/components/scroll-area.js +42 -0
  103. package/dist/components/scroll-area.js.map +1 -0
  104. package/dist/components/select.d.ts +15 -0
  105. package/dist/components/select.js +136 -0
  106. package/dist/components/select.js.map +1 -0
  107. package/dist/components/separator.d.ts +3 -0
  108. package/dist/components/separator.js +8 -0
  109. package/dist/components/separator.js.map +1 -0
  110. package/dist/components/sheet.d.ts +14 -0
  111. package/dist/components/sheet.js +23 -0
  112. package/dist/components/sheet.js.map +1 -0
  113. package/dist/components/sidebar.d.ts +63 -0
  114. package/dist/components/sidebar.js +536 -0
  115. package/dist/components/sidebar.js.map +1 -0
  116. package/dist/components/skeleton.d.ts +2 -0
  117. package/dist/components/skeleton.js +8 -0
  118. package/dist/components/skeleton.js.map +1 -0
  119. package/dist/components/slider.d.ts +3 -0
  120. package/dist/components/slider.js +45 -0
  121. package/dist/components/slider.js.map +1 -0
  122. package/dist/components/sonner.d.ts +3 -0
  123. package/dist/components/sonner.js +39 -0
  124. package/dist/components/sonner.js.map +1 -0
  125. package/dist/components/switch.d.ts +5 -0
  126. package/dist/components/switch.js +36 -0
  127. package/dist/components/switch.js.map +1 -0
  128. package/dist/components/table.d.ts +12 -0
  129. package/dist/components/table.js +56 -0
  130. package/dist/components/table.js.map +1 -0
  131. package/dist/components/tabs.d.ts +10 -0
  132. package/dist/components/tabs.js +63 -0
  133. package/dist/components/tabs.js.map +1 -0
  134. package/dist/components/textarea.d.ts +3 -0
  135. package/dist/components/textarea.js +8 -0
  136. package/dist/components/textarea.js.map +1 -0
  137. package/dist/components/toggle-group.d.ts +11 -0
  138. package/dist/components/toggle-group.js +80 -0
  139. package/dist/components/toggle-group.js.map +1 -0
  140. package/dist/components/toggle.d.ts +8 -0
  141. package/dist/components/toggle.js +11 -0
  142. package/dist/components/toggle.js.map +1 -0
  143. package/dist/components/tooltip.d.ts +6 -0
  144. package/dist/components/tooltip.js +14 -0
  145. package/dist/components/tooltip.js.map +1 -0
  146. package/dist/hooks/use-mobile.d.ts +1 -0
  147. package/dist/hooks/use-mobile.js +7 -0
  148. package/dist/hooks/use-mobile.js.map +1 -0
  149. package/dist/lib/date.d.ts +14 -0
  150. package/dist/lib/date.js +24 -0
  151. package/dist/lib/date.js.map +1 -0
  152. package/dist/lib/format.d.ts +16 -0
  153. package/dist/lib/format.js +9 -0
  154. package/dist/lib/format.js.map +1 -0
  155. package/dist/lib/utils.d.ts +2 -0
  156. package/dist/lib/utils.js +7 -0
  157. package/dist/lib/utils.js.map +1 -0
  158. package/package.json +71 -0
  159. package/src/styles/globals.css +151 -0
  160. package/src/styles/theme.css +144 -0
@@ -0,0 +1,45 @@
1
+ import {
2
+ cn
3
+ } from "../chunk-Y2TKUANL.js";
4
+
5
+ // src/components/slider.tsx
6
+ import { Slider as SliderPrimitive } from "@base-ui/react/slider";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function Slider({ className, defaultValue, value, min = 0, max = 100, ...props }) {
9
+ const _values = Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max];
10
+ return /* @__PURE__ */ jsx(
11
+ SliderPrimitive.Root,
12
+ {
13
+ className: cn("data-vertical:h-full data-horizontal:w-full", className),
14
+ "data-slot": "slider",
15
+ defaultValue,
16
+ value,
17
+ min,
18
+ max,
19
+ thumbAlignment: "edge",
20
+ ...props,
21
+ children: /* @__PURE__ */ jsxs(SliderPrimitive.Control, { className: "relative flex w-full touch-none select-none items-center data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col data-disabled:opacity-50", children: [
22
+ /* @__PURE__ */ jsx(
23
+ SliderPrimitive.Track,
24
+ {
25
+ "data-slot": "slider-track",
26
+ className: "relative grow select-none overflow-hidden rounded-full bg-muted data-horizontal:h-1 data-vertical:h-full data-horizontal:w-full data-vertical:w-1",
27
+ children: /* @__PURE__ */ jsx(SliderPrimitive.Indicator, { "data-slot": "slider-range", className: "select-none bg-primary data-horizontal:h-full data-vertical:w-full" })
28
+ }
29
+ ),
30
+ Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(
31
+ SliderPrimitive.Thumb,
32
+ {
33
+ "data-slot": "slider-thumb",
34
+ className: "relative block size-3 shrink-0 select-none rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] after:absolute after:-inset-2 hover:ring-3 focus-visible:outline-hidden focus-visible:ring-3 active:ring-3 disabled:pointer-events-none disabled:opacity-50"
35
+ },
36
+ index
37
+ ))
38
+ ] })
39
+ }
40
+ );
41
+ }
42
+ export {
43
+ Slider
44
+ };
45
+ //# sourceMappingURL=slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/slider.tsx"],"sourcesContent":["import { Slider as SliderPrimitive } from '@base-ui/react/slider';\n\nimport { cn } from '@betfin/ui/lib/utils';\n\nfunction Slider({ className, defaultValue, value, min = 0, max = 100, ...props }: SliderPrimitive.Root.Props) {\n\tconst _values = Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max];\n\n\treturn (\n\t\t<SliderPrimitive.Root\n\t\t\tclassName={cn('data-vertical:h-full data-horizontal:w-full', className)}\n\t\t\tdata-slot=\"slider\"\n\t\t\tdefaultValue={defaultValue}\n\t\t\tvalue={value}\n\t\t\tmin={min}\n\t\t\tmax={max}\n\t\t\tthumbAlignment=\"edge\"\n\t\t\t{...props}\n\t\t>\n\t\t\t<SliderPrimitive.Control className=\"relative flex w-full touch-none select-none items-center data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col data-disabled:opacity-50\">\n\t\t\t\t<SliderPrimitive.Track\n\t\t\t\t\tdata-slot=\"slider-track\"\n\t\t\t\t\tclassName=\"relative grow select-none overflow-hidden rounded-full bg-muted data-horizontal:h-1 data-vertical:h-full data-horizontal:w-full data-vertical:w-1\"\n\t\t\t\t>\n\t\t\t\t\t<SliderPrimitive.Indicator data-slot=\"slider-range\" className=\"select-none bg-primary data-horizontal:h-full data-vertical:w-full\" />\n\t\t\t\t</SliderPrimitive.Track>\n\t\t\t\t{Array.from({ length: _values.length }, (_, index) => (\n\t\t\t\t\t<SliderPrimitive.Thumb\n\t\t\t\t\t\tdata-slot=\"slider-thumb\"\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tclassName=\"relative block size-3 shrink-0 select-none rounded-full border border-ring bg-white ring-ring/50 transition-[color,box-shadow] after:absolute after:-inset-2 hover:ring-3 focus-visible:outline-hidden focus-visible:ring-3 active:ring-3 disabled:pointer-events-none disabled:opacity-50\"\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</SliderPrimitive.Control>\n\t\t</SliderPrimitive.Root>\n\t);\n}\n\nexport { Slider };\n"],"mappings":";;;;;AAAA,SAAS,UAAU,uBAAuB;AAkBvC,SAKE,KALF;AAdH,SAAS,OAAO,EAAE,WAAW,cAAc,OAAO,MAAM,GAAG,MAAM,KAAK,GAAG,MAAM,GAA+B;AAC7G,QAAM,UAAU,MAAM,QAAQ,KAAK,IAAI,QAAQ,MAAM,QAAQ,YAAY,IAAI,eAAe,CAAC,KAAK,GAAG;AAErG,SACC;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACA,WAAW,GAAG,+CAA+C,SAAS;AAAA,MACtE,aAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAe;AAAA,MACd,GAAG;AAAA,MAEJ,+BAAC,gBAAgB,SAAhB,EAAwB,WAAU,6KAClC;AAAA;AAAA,UAAC,gBAAgB;AAAA,UAAhB;AAAA,YACA,aAAU;AAAA,YACV,WAAU;AAAA,YAEV,8BAAC,gBAAgB,WAAhB,EAA0B,aAAU,gBAAe,WAAU,sEAAqE;AAAA;AAAA,QACpI;AAAA,QACC,MAAM,KAAK,EAAE,QAAQ,QAAQ,OAAO,GAAG,CAAC,GAAG,UAC3C;AAAA,UAAC,gBAAgB;AAAA,UAAhB;AAAA,YACA,aAAU;AAAA,YAEV,WAAU;AAAA;AAAA,UADL;AAAA,QAEN,CACA;AAAA,SACF;AAAA;AAAA,EACD;AAEF;","names":[]}
@@ -0,0 +1,3 @@
1
+ import { type ToasterProps, toast } from 'sonner';
2
+ declare const Toaster: ({ ...props }: ToasterProps) => import("react").JSX.Element;
3
+ export { Toaster, toast };
@@ -0,0 +1,39 @@
1
+ "use client";
2
+
3
+ // src/components/sonner.tsx
4
+ import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon } from "lucide-react";
5
+ import { Toaster as Sonner, toast } from "sonner";
6
+ import { jsx } from "react/jsx-runtime";
7
+ var Toaster = ({ ...props }) => {
8
+ return /* @__PURE__ */ jsx(
9
+ Sonner,
10
+ {
11
+ theme: "dark",
12
+ className: "toaster group",
13
+ icons: {
14
+ success: /* @__PURE__ */ jsx(CircleCheckIcon, { className: "size-4" }),
15
+ info: /* @__PURE__ */ jsx(InfoIcon, { className: "size-4" }),
16
+ warning: /* @__PURE__ */ jsx(TriangleAlertIcon, { className: "size-4" }),
17
+ error: /* @__PURE__ */ jsx(OctagonXIcon, { className: "size-4" }),
18
+ loading: /* @__PURE__ */ jsx(Loader2Icon, { className: "size-4 animate-spin" })
19
+ },
20
+ style: {
21
+ "--normal-bg": "var(--popover)",
22
+ "--normal-text": "var(--popover-foreground)",
23
+ "--normal-border": "var(--border)",
24
+ "--border-radius": "var(--radius)"
25
+ },
26
+ toastOptions: {
27
+ classNames: {
28
+ toast: "cn-toast"
29
+ }
30
+ },
31
+ ...props
32
+ }
33
+ );
34
+ };
35
+ export {
36
+ Toaster,
37
+ toast
38
+ };
39
+ //# sourceMappingURL=sonner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/sonner.tsx"],"sourcesContent":["'use client';\n\nimport { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon } from 'lucide-react';\nimport { Toaster as Sonner, type ToasterProps, toast } from 'sonner';\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n\treturn (\n\t\t<Sonner\n\t\t\ttheme=\"dark\"\n\t\t\tclassName=\"toaster group\"\n\t\t\ticons={{\n\t\t\t\tsuccess: <CircleCheckIcon className=\"size-4\" />,\n\t\t\t\tinfo: <InfoIcon className=\"size-4\" />,\n\t\t\t\twarning: <TriangleAlertIcon className=\"size-4\" />,\n\t\t\t\terror: <OctagonXIcon className=\"size-4\" />,\n\t\t\t\tloading: <Loader2Icon className=\"size-4 animate-spin\" />,\n\t\t\t}}\n\t\t\tstyle={\n\t\t\t\t{\n\t\t\t\t\t'--normal-bg': 'var(--popover)',\n\t\t\t\t\t'--normal-text': 'var(--popover-foreground)',\n\t\t\t\t\t'--normal-border': 'var(--border)',\n\t\t\t\t\t'--border-radius': 'var(--radius)',\n\t\t\t\t} as React.CSSProperties\n\t\t\t}\n\t\t\ttoastOptions={{\n\t\t\t\tclassNames: {\n\t\t\t\t\ttoast: 'cn-toast',\n\t\t\t\t},\n\t\t\t}}\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n\nexport { Toaster, toast };\n"],"mappings":";;;AAEA,SAAS,iBAAiB,UAAU,aAAa,cAAc,yBAAyB;AACxF,SAAS,WAAW,QAA2B,aAAa;AAQ/C;AANb,IAAM,UAAU,CAAC,EAAE,GAAG,MAAM,MAAoB;AAC/C,SACC;AAAA,IAAC;AAAA;AAAA,MACA,OAAM;AAAA,MACN,WAAU;AAAA,MACV,OAAO;AAAA,QACN,SAAS,oBAAC,mBAAgB,WAAU,UAAS;AAAA,QAC7C,MAAM,oBAAC,YAAS,WAAU,UAAS;AAAA,QACnC,SAAS,oBAAC,qBAAkB,WAAU,UAAS;AAAA,QAC/C,OAAO,oBAAC,gBAAa,WAAU,UAAS;AAAA,QACxC,SAAS,oBAAC,eAAY,WAAU,uBAAsB;AAAA,MACvD;AAAA,MACA,OACC;AAAA,QACC,eAAe;AAAA,QACf,iBAAiB;AAAA,QACjB,mBAAmB;AAAA,QACnB,mBAAmB;AAAA,MACpB;AAAA,MAED,cAAc;AAAA,QACb,YAAY;AAAA,UACX,OAAO;AAAA,QACR;AAAA,MACD;AAAA,MACC,GAAG;AAAA;AAAA,EACL;AAEF;","names":[]}
@@ -0,0 +1,5 @@
1
+ import { Switch as SwitchPrimitive } from '@base-ui/react/switch';
2
+ declare function Switch({ className, size, ...props }: SwitchPrimitive.Root.Props & {
3
+ size?: 'sm' | 'default';
4
+ }): import("react").JSX.Element;
5
+ export { Switch };
@@ -0,0 +1,36 @@
1
+ import {
2
+ cn
3
+ } from "../chunk-Y2TKUANL.js";
4
+
5
+ // src/components/switch.tsx
6
+ import { Switch as SwitchPrimitive } from "@base-ui/react/switch";
7
+ import { jsx } from "react/jsx-runtime";
8
+ function Switch({
9
+ className,
10
+ size = "default",
11
+ ...props
12
+ }) {
13
+ return /* @__PURE__ */ jsx(
14
+ SwitchPrimitive.Root,
15
+ {
16
+ "data-slot": "switch",
17
+ "data-size": size,
18
+ className: cn(
19
+ "peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent outline-none transition-all after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=sm]:h-[14px] data-[size=default]:w-[32px] data-[size=sm]:w-[24px] data-disabled:cursor-not-allowed data-checked:bg-primary data-unchecked:bg-input data-disabled:opacity-50 dark:data-unchecked:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
20
+ className
21
+ ),
22
+ ...props,
23
+ children: /* @__PURE__ */ jsx(
24
+ SwitchPrimitive.Thumb,
25
+ {
26
+ "data-slot": "switch-thumb",
27
+ className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground"
28
+ }
29
+ )
30
+ }
31
+ );
32
+ }
33
+ export {
34
+ Switch
35
+ };
36
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/switch.tsx"],"sourcesContent":["import { Switch as SwitchPrimitive } from '@base-ui/react/switch';\n\nimport { cn } from '@betfin/ui/lib/utils';\n\nfunction Switch({\n\tclassName,\n\tsize = 'default',\n\t...props\n}: SwitchPrimitive.Root.Props & {\n\tsize?: 'sm' | 'default';\n}) {\n\treturn (\n\t\t<SwitchPrimitive.Root\n\t\t\tdata-slot=\"switch\"\n\t\t\tdata-size={size}\n\t\t\tclassName={cn(\n\t\t\t\t'peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent outline-none transition-all after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=default]:h-[18.4px] data-[size=sm]:h-[14px] data-[size=default]:w-[32px] data-[size=sm]:w-[24px] data-disabled:cursor-not-allowed data-checked:bg-primary data-unchecked:bg-input data-disabled:opacity-50 dark:data-unchecked:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<SwitchPrimitive.Thumb\n\t\t\t\tdata-slot=\"switch-thumb\"\n\t\t\t\tclassName=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-checked:bg-primary-foreground dark:data-unchecked:bg-foreground\"\n\t\t\t/>\n\t\t</SwitchPrimitive.Root>\n\t);\n}\n\nexport { Switch };\n"],"mappings":";;;;;AAAA,SAAS,UAAU,uBAAuB;AAqBvC;AAjBH,SAAS,OAAO;AAAA,EACf;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACJ,GAEG;AACF,SACC;AAAA,IAAC,gBAAgB;AAAA,IAAhB;AAAA,MACA,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW;AAAA,QACV;AAAA,QACA;AAAA,MACD;AAAA,MACC,GAAG;AAAA,MAEJ;AAAA,QAAC,gBAAgB;AAAA,QAAhB;AAAA,UACA,aAAU;AAAA,UACV,WAAU;AAAA;AAAA,MACX;AAAA;AAAA,EACD;AAEF;","names":[]}
@@ -0,0 +1,12 @@
1
+ import type * as React from 'react';
2
+ declare function Table({ className, containerClassName, ...props }: React.ComponentProps<'table'> & {
3
+ containerClassName?: string;
4
+ }): React.JSX.Element;
5
+ declare function TableHeader({ className, ...props }: React.ComponentProps<'thead'>): React.JSX.Element;
6
+ declare function TableBody({ className, ...props }: React.ComponentProps<'tbody'>): React.JSX.Element;
7
+ declare function TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>): React.JSX.Element;
8
+ declare function TableRow({ className, ...props }: React.ComponentProps<'tr'>): React.JSX.Element;
9
+ declare function TableHead({ className, ...props }: React.ComponentProps<'th'>): React.JSX.Element;
10
+ declare function TableCell({ className, ...props }: React.ComponentProps<'td'>): React.JSX.Element;
11
+ declare function TableCaption({ className, ...props }: React.ComponentProps<'caption'>): React.JSX.Element;
12
+ export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
@@ -0,0 +1,56 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "../chunk-Y2TKUANL.js";
5
+
6
+ // src/components/table.tsx
7
+ import { jsx } from "react/jsx-runtime";
8
+ function Table({ className, containerClassName, ...props }) {
9
+ return /* @__PURE__ */ jsx("div", { "data-slot": "table-container", className: cn("relative w-full min-w-0 overflow-x-auto", containerClassName), children: /* @__PURE__ */ jsx("table", { "data-slot": "table", className: cn("w-full caption-bottom text-sm", className), ...props }) });
10
+ }
11
+ function TableHeader({ className, ...props }) {
12
+ return /* @__PURE__ */ jsx("thead", { "data-slot": "table-header", className: cn("[&_tr]:border-b", className), ...props });
13
+ }
14
+ function TableBody({ className, ...props }) {
15
+ return /* @__PURE__ */ jsx("tbody", { "data-slot": "table-body", className: cn("[&_tr:last-child]:border-0", className), ...props });
16
+ }
17
+ function TableFooter({ className, ...props }) {
18
+ return /* @__PURE__ */ jsx("tfoot", { "data-slot": "table-footer", className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props });
19
+ }
20
+ function TableRow({ className, ...props }) {
21
+ return /* @__PURE__ */ jsx(
22
+ "tr",
23
+ {
24
+ "data-slot": "table-row",
25
+ className: cn("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted", className),
26
+ ...props
27
+ }
28
+ );
29
+ }
30
+ function TableHead({ className, ...props }) {
31
+ return /* @__PURE__ */ jsx(
32
+ "th",
33
+ {
34
+ "data-slot": "table-head",
35
+ className: cn("h-10 whitespace-nowrap px-2 text-left align-middle font-medium text-foreground [&:has([role=checkbox])]:pr-0", className),
36
+ ...props
37
+ }
38
+ );
39
+ }
40
+ function TableCell({ className, ...props }) {
41
+ return /* @__PURE__ */ jsx("td", { "data-slot": "table-cell", className: cn("whitespace-nowrap p-2 align-middle [&:has([role=checkbox])]:pr-0", className), ...props });
42
+ }
43
+ function TableCaption({ className, ...props }) {
44
+ return /* @__PURE__ */ jsx("caption", { "data-slot": "table-caption", className: cn("mt-4 text-muted-foreground text-sm", className), ...props });
45
+ }
46
+ export {
47
+ Table,
48
+ TableBody,
49
+ TableCaption,
50
+ TableCell,
51
+ TableFooter,
52
+ TableHead,
53
+ TableHeader,
54
+ TableRow
55
+ };
56
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/table.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@betfin/ui/lib/utils';\nimport type * as React from 'react';\n\nfunction Table({ className, containerClassName, ...props }: React.ComponentProps<'table'> & { containerClassName?: string }) {\n\treturn (\n\t\t<div data-slot=\"table-container\" className={cn('relative w-full min-w-0 overflow-x-auto', containerClassName)}>\n\t\t\t<table data-slot=\"table\" className={cn('w-full caption-bottom text-sm', className)} {...props} />\n\t\t</div>\n\t);\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {\n\treturn <thead data-slot=\"table-header\" className={cn('[&_tr]:border-b', className)} {...props} />;\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {\n\treturn <tbody data-slot=\"table-body\" className={cn('[&_tr:last-child]:border-0', className)} {...props} />;\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {\n\treturn <tfoot data-slot=\"table-footer\" className={cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', className)} {...props} />;\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<'tr'>) {\n\treturn (\n\t\t<tr\n\t\t\tdata-slot=\"table-row\"\n\t\t\tclassName={cn('border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<'th'>) {\n\treturn (\n\t\t<th\n\t\t\tdata-slot=\"table-head\"\n\t\t\tclassName={cn('h-10 whitespace-nowrap px-2 text-left align-middle font-medium text-foreground [&:has([role=checkbox])]:pr-0', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<'td'>) {\n\treturn <td data-slot=\"table-cell\" className={cn('whitespace-nowrap p-2 align-middle [&:has([role=checkbox])]:pr-0', className)} {...props} />;\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {\n\treturn <caption data-slot=\"table-caption\" className={cn('mt-4 text-muted-foreground text-sm', className)} {...props} />;\n}\n\nexport { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };\n"],"mappings":";;;;;;AAQG;AAHH,SAAS,MAAM,EAAE,WAAW,oBAAoB,GAAG,MAAM,GAAoE;AAC5H,SACC,oBAAC,SAAI,aAAU,mBAAkB,WAAW,GAAG,2CAA2C,kBAAkB,GAC3G,8BAAC,WAAM,aAAU,SAAQ,WAAW,GAAG,iCAAiC,SAAS,GAAI,GAAG,OAAO,GAChG;AAEF;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC5E,SAAO,oBAAC,WAAM,aAAU,gBAAe,WAAW,GAAG,mBAAmB,SAAS,GAAI,GAAG,OAAO;AAChG;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC1E,SAAO,oBAAC,WAAM,aAAU,cAAa,WAAW,GAAG,8BAA8B,SAAS,GAAI,GAAG,OAAO;AACzG;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAkC;AAC5E,SAAO,oBAAC,WAAM,aAAU,gBAAe,WAAW,GAAG,2DAA2D,SAAS,GAAI,GAAG,OAAO;AACxI;AAEA,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAA+B;AACtE,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,WAAW,GAAG,6GAA6G,SAAS;AAAA,MACnI,GAAG;AAAA;AAAA,EACL;AAEF;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAA+B;AACvE,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,WAAW,GAAG,gHAAgH,SAAS;AAAA,MACtI,GAAG;AAAA;AAAA,EACL;AAEF;AAEA,SAAS,UAAU,EAAE,WAAW,GAAG,MAAM,GAA+B;AACvE,SAAO,oBAAC,QAAG,aAAU,cAAa,WAAW,GAAG,oEAAoE,SAAS,GAAI,GAAG,OAAO;AAC5I;AAEA,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAoC;AAC/E,SAAO,oBAAC,aAAQ,aAAU,iBAAgB,WAAW,GAAG,sCAAsC,SAAS,GAAI,GAAG,OAAO;AACtH;","names":[]}
@@ -0,0 +1,10 @@
1
+ import { Tabs as TabsPrimitive } from '@base-ui/react/tabs';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare function Tabs({ className, orientation, ...props }: TabsPrimitive.Root.Props): import("react").JSX.Element;
4
+ declare const tabsListVariants: (props?: ({
5
+ variant?: "default" | "line" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ declare function TabsList({ className, variant, ...props }: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>): import("react").JSX.Element;
8
+ declare function TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props): import("react").JSX.Element;
9
+ declare function TabsContent({ className, ...props }: TabsPrimitive.Panel.Props): import("react").JSX.Element;
10
+ export { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants };
@@ -0,0 +1,63 @@
1
+ import {
2
+ cn
3
+ } from "../chunk-Y2TKUANL.js";
4
+
5
+ // src/components/tabs.tsx
6
+ import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
7
+ import { cva } from "class-variance-authority";
8
+ import { jsx } from "react/jsx-runtime";
9
+ function Tabs({ className, orientation = "horizontal", ...props }) {
10
+ return /* @__PURE__ */ jsx(
11
+ TabsPrimitive.Root,
12
+ {
13
+ "data-slot": "tabs",
14
+ "data-orientation": orientation,
15
+ className: cn("group/tabs flex gap-2 data-horizontal:flex-col", className),
16
+ ...props
17
+ }
18
+ );
19
+ }
20
+ var tabsListVariants = cva(
21
+ "group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground data-[variant=line]:rounded-none group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col",
22
+ {
23
+ variants: {
24
+ variant: {
25
+ default: "bg-muted",
26
+ line: "gap-1 bg-transparent"
27
+ }
28
+ },
29
+ defaultVariants: {
30
+ variant: "default"
31
+ }
32
+ }
33
+ );
34
+ function TabsList({ className, variant = "default", ...props }) {
35
+ return /* @__PURE__ */ jsx(TabsPrimitive.List, { "data-slot": "tabs-list", "data-variant": variant, className: cn(tabsListVariants({ variant }), className), ...props });
36
+ }
37
+ function TabsTrigger({ className, ...props }) {
38
+ return /* @__PURE__ */ jsx(
39
+ TabsPrimitive.Tab,
40
+ {
41
+ "data-slot": "tabs-trigger",
42
+ className: cn(
43
+ "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-1.5 py-0.5 font-medium text-foreground/60 text-sm transition-all hover:text-foreground focus-visible:border-ring focus-visible:outline-1 focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none dark:text-muted-foreground dark:hover:text-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
44
+ "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent",
45
+ "data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground",
46
+ "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100",
47
+ className
48
+ ),
49
+ ...props
50
+ }
51
+ );
52
+ }
53
+ function TabsContent({ className, ...props }) {
54
+ return /* @__PURE__ */ jsx(TabsPrimitive.Panel, { "data-slot": "tabs-content", className: cn("flex-1 text-sm outline-none", className), ...props });
55
+ }
56
+ export {
57
+ Tabs,
58
+ TabsContent,
59
+ TabsList,
60
+ TabsTrigger,
61
+ tabsListVariants
62
+ };
63
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/tabs.tsx"],"sourcesContent":["import { Tabs as TabsPrimitive } from '@base-ui/react/tabs';\nimport { cn } from '@betfin/ui/lib/utils';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nfunction Tabs({ className, orientation = 'horizontal', ...props }: TabsPrimitive.Root.Props) {\n\treturn (\n\t\t<TabsPrimitive.Root\n\t\t\tdata-slot=\"tabs\"\n\t\t\tdata-orientation={orientation}\n\t\t\tclassName={cn('group/tabs flex gap-2 data-horizontal:flex-col', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst tabsListVariants = cva(\n\t'group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground data-[variant=line]:rounded-none group-data-horizontal/tabs:h-8 group-data-vertical/tabs:h-fit group-data-vertical/tabs:flex-col',\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: 'bg-muted',\n\t\t\t\tline: 'gap-1 bg-transparent',\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: 'default',\n\t\t},\n\t},\n);\n\nfunction TabsList({ className, variant = 'default', ...props }: TabsPrimitive.List.Props & VariantProps<typeof tabsListVariants>) {\n\treturn <TabsPrimitive.List data-slot=\"tabs-list\" data-variant={variant} className={cn(tabsListVariants({ variant }), className)} {...props} />;\n}\n\nfunction TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) {\n\treturn (\n\t\t<TabsPrimitive.Tab\n\t\t\tdata-slot=\"tabs-trigger\"\n\t\t\tclassName={cn(\n\t\t\t\t\"relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-1.5 py-0.5 font-medium text-foreground/60 text-sm transition-all hover:text-foreground focus-visible:border-ring focus-visible:outline-1 focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pr-1 has-data-[icon=inline-start]:pl-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-vertical/tabs:w-full group-data-vertical/tabs:justify-start group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none dark:text-muted-foreground dark:hover:text-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n\t\t\t\t'group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent dark:group-data-[variant=line]/tabs-list:data-active:border-transparent dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent',\n\t\t\t\t'data-active:bg-background data-active:text-foreground dark:data-active:border-input dark:data-active:bg-input/30 dark:data-active:text-foreground',\n\t\t\t\t'after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-horizontal/tabs:after:inset-x-0 group-data-vertical/tabs:after:inset-y-0 group-data-vertical/tabs:after:-right-1 group-data-horizontal/tabs:after:bottom-[-5px] group-data-horizontal/tabs:after:h-0.5 group-data-vertical/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) {\n\treturn <TabsPrimitive.Panel data-slot=\"tabs-content\" className={cn('flex-1 text-sm outline-none', className)} {...props} />;\n}\n\nexport { Tabs, TabsContent, TabsList, TabsTrigger, tabsListVariants };\n"],"mappings":";;;;;AAAA,SAAS,QAAQ,qBAAqB;AAEtC,SAAS,WAA8B;AAIrC;AAFF,SAAS,KAAK,EAAE,WAAW,cAAc,cAAc,GAAG,MAAM,GAA6B;AAC5F,SACC;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACA,aAAU;AAAA,MACV,oBAAkB;AAAA,MAClB,WAAW,GAAG,kDAAkD,SAAS;AAAA,MACxE,GAAG;AAAA;AAAA,EACL;AAEF;AAEA,IAAM,mBAAmB;AAAA,EACxB;AAAA,EACA;AAAA,IACC,UAAU;AAAA,MACT,SAAS;AAAA,QACR,SAAS;AAAA,QACT,MAAM;AAAA,MACP;AAAA,IACD;AAAA,IACA,iBAAiB;AAAA,MAChB,SAAS;AAAA,IACV;AAAA,EACD;AACD;AAEA,SAAS,SAAS,EAAE,WAAW,UAAU,WAAW,GAAG,MAAM,GAAqE;AACjI,SAAO,oBAAC,cAAc,MAAd,EAAmB,aAAU,aAAY,gBAAc,SAAS,WAAW,GAAG,iBAAiB,EAAE,QAAQ,CAAC,GAAG,SAAS,GAAI,GAAG,OAAO;AAC7I;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAA4B;AACtE,SACC;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACA,aAAU;AAAA,MACV,WAAW;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAAA,MACC,GAAG;AAAA;AAAA,EACL;AAEF;AAEA,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAA8B;AACxE,SAAO,oBAAC,cAAc,OAAd,EAAoB,aAAU,gBAAe,WAAW,GAAG,+BAA+B,SAAS,GAAI,GAAG,OAAO;AAC1H;","names":[]}
@@ -0,0 +1,3 @@
1
+ import type * as React from 'react';
2
+ declare function Textarea({ className, ...props }: React.ComponentProps<'textarea'>): React.JSX.Element;
3
+ export { Textarea };
@@ -0,0 +1,8 @@
1
+ import {
2
+ Textarea
3
+ } from "../chunk-SSC2M625.js";
4
+ import "../chunk-Y2TKUANL.js";
5
+ export {
6
+ Textarea
7
+ };
8
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,11 @@
1
+ import { Toggle as TogglePrimitive } from '@base-ui/react/toggle';
2
+ import { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group';
3
+ import { toggleVariants } from '@betfin/ui/components/toggle';
4
+ import type { VariantProps } from 'class-variance-authority';
5
+ import * as React from 'react';
6
+ declare function ToggleGroup({ className, variant, size, spacing, orientation, children, ...props }: ToggleGroupPrimitive.Props & VariantProps<typeof toggleVariants> & {
7
+ spacing?: number;
8
+ orientation?: 'horizontal' | 'vertical';
9
+ }): React.JSX.Element;
10
+ declare function ToggleGroupItem({ className, children, variant, size, ...props }: TogglePrimitive.Props & VariantProps<typeof toggleVariants>): React.JSX.Element;
11
+ export { ToggleGroup, ToggleGroupItem };
@@ -0,0 +1,80 @@
1
+ "use client";
2
+ import {
3
+ toggleVariants
4
+ } from "../chunk-JTVU6ANA.js";
5
+ import {
6
+ cn
7
+ } from "../chunk-Y2TKUANL.js";
8
+
9
+ // src/components/toggle-group.tsx
10
+ import { Toggle as TogglePrimitive } from "@base-ui/react/toggle";
11
+ import { ToggleGroup as ToggleGroupPrimitive } from "@base-ui/react/toggle-group";
12
+ import * as React from "react";
13
+ import { jsx } from "react/jsx-runtime";
14
+ var ToggleGroupContext = React.createContext({
15
+ size: "default",
16
+ variant: "default",
17
+ spacing: 2,
18
+ orientation: "horizontal"
19
+ });
20
+ function ToggleGroup({
21
+ className,
22
+ variant,
23
+ size,
24
+ spacing = 2,
25
+ orientation = "horizontal",
26
+ children,
27
+ ...props
28
+ }) {
29
+ const contextValue = React.useMemo(() => ({ variant, size, spacing, orientation }), [variant, size, spacing, orientation]);
30
+ return /* @__PURE__ */ jsx(
31
+ ToggleGroupPrimitive,
32
+ {
33
+ "data-slot": "toggle-group",
34
+ "data-variant": variant,
35
+ "data-size": size,
36
+ "data-spacing": spacing,
37
+ "data-orientation": orientation,
38
+ style: { "--gap": spacing },
39
+ className: cn(
40
+ "group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-vertical:flex-col data-vertical:items-stretch data-[size=sm]:rounded-[min(var(--radius-md),10px)]",
41
+ className
42
+ ),
43
+ ...props,
44
+ children: /* @__PURE__ */ jsx(ToggleGroupContext.Provider, { value: contextValue, children })
45
+ }
46
+ );
47
+ }
48
+ function ToggleGroupItem({
49
+ className,
50
+ children,
51
+ variant = "default",
52
+ size = "default",
53
+ ...props
54
+ }) {
55
+ const context = React.use(ToggleGroupContext);
56
+ return /* @__PURE__ */ jsx(
57
+ TogglePrimitive,
58
+ {
59
+ "data-slot": "toggle-group-item",
60
+ "data-variant": context.variant || variant,
61
+ "data-size": context.size || size,
62
+ "data-spacing": context.spacing,
63
+ className: cn(
64
+ "shrink-0 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg",
65
+ toggleVariants({
66
+ variant: context.variant || variant,
67
+ size: context.size || size
68
+ }),
69
+ className
70
+ ),
71
+ ...props,
72
+ children
73
+ }
74
+ );
75
+ }
76
+ export {
77
+ ToggleGroup,
78
+ ToggleGroupItem
79
+ };
80
+ //# sourceMappingURL=toggle-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/toggle-group.tsx"],"sourcesContent":["'use client';\n\nimport { Toggle as TogglePrimitive } from '@base-ui/react/toggle';\nimport { ToggleGroup as ToggleGroupPrimitive } from '@base-ui/react/toggle-group';\nimport { toggleVariants } from '@betfin/ui/components/toggle';\nimport { cn } from '@betfin/ui/lib/utils';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nconst ToggleGroupContext = React.createContext<\n\tVariantProps<typeof toggleVariants> & {\n\t\tspacing?: number;\n\t\torientation?: 'horizontal' | 'vertical';\n\t}\n>({\n\tsize: 'default',\n\tvariant: 'default',\n\tspacing: 2,\n\torientation: 'horizontal',\n});\n\nfunction ToggleGroup({\n\tclassName,\n\tvariant,\n\tsize,\n\tspacing = 2,\n\torientation = 'horizontal',\n\tchildren,\n\t...props\n}: ToggleGroupPrimitive.Props &\n\tVariantProps<typeof toggleVariants> & {\n\t\tspacing?: number;\n\t\torientation?: 'horizontal' | 'vertical';\n\t}) {\n\tconst contextValue = React.useMemo(() => ({ variant, size, spacing, orientation }), [variant, size, spacing, orientation]);\n\n\treturn (\n\t\t<ToggleGroupPrimitive\n\t\t\tdata-slot=\"toggle-group\"\n\t\t\tdata-variant={variant}\n\t\t\tdata-size={size}\n\t\t\tdata-spacing={spacing}\n\t\t\tdata-orientation={orientation}\n\t\t\tstyle={{ '--gap': spacing } as React.CSSProperties}\n\t\t\tclassName={cn(\n\t\t\t\t'group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-vertical:flex-col data-vertical:items-stretch data-[size=sm]:rounded-[min(var(--radius-md),10px)]',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t<ToggleGroupContext.Provider value={contextValue}>{children}</ToggleGroupContext.Provider>\n\t\t</ToggleGroupPrimitive>\n\t);\n}\n\nfunction ToggleGroupItem({\n\tclassName,\n\tchildren,\n\tvariant = 'default',\n\tsize = 'default',\n\t...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n\tconst context = React.use(ToggleGroupContext);\n\n\treturn (\n\t\t<TogglePrimitive\n\t\t\tdata-slot=\"toggle-group-item\"\n\t\t\tdata-variant={context.variant || variant}\n\t\t\tdata-size={context.size || size}\n\t\t\tdata-spacing={context.spacing}\n\t\t\tclassName={cn(\n\t\t\t\t'shrink-0 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:rounded-none group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg',\n\t\t\t\ttoggleVariants({\n\t\t\t\t\tvariant: context.variant || variant,\n\t\t\t\t\tsize: context.size || size,\n\t\t\t\t}),\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{children}\n\t\t</TogglePrimitive>\n\t);\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n"],"mappings":";;;;;;;;;AAEA,SAAS,UAAU,uBAAuB;AAC1C,SAAS,eAAe,4BAA4B;AAIpD,YAAY,WAAW;AA2CpB;AAzCH,IAAM,qBAA2B,oBAK/B;AAAA,EACD,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,aAAa;AACd,CAAC;AAED,SAAS,YAAY;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,cAAc;AAAA,EACd;AAAA,EACA,GAAG;AACJ,GAII;AACH,QAAM,eAAqB,cAAQ,OAAO,EAAE,SAAS,MAAM,SAAS,YAAY,IAAI,CAAC,SAAS,MAAM,SAAS,WAAW,CAAC;AAEzH,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,gBAAc;AAAA,MACd,aAAW;AAAA,MACX,gBAAc;AAAA,MACd,oBAAkB;AAAA,MAClB,OAAO,EAAE,SAAS,QAAQ;AAAA,MAC1B,WAAW;AAAA,QACV;AAAA,QACA;AAAA,MACD;AAAA,MACC,GAAG;AAAA,MAEJ,8BAAC,mBAAmB,UAAnB,EAA4B,OAAO,cAAe,UAAS;AAAA;AAAA,EAC7D;AAEF;AAEA,SAAS,gBAAgB;AAAA,EACxB;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV,OAAO;AAAA,EACP,GAAG;AACJ,GAAgE;AAC/D,QAAM,UAAgB,UAAI,kBAAkB;AAE5C,SACC;AAAA,IAAC;AAAA;AAAA,MACA,aAAU;AAAA,MACV,gBAAc,QAAQ,WAAW;AAAA,MACjC,aAAW,QAAQ,QAAQ;AAAA,MAC3B,gBAAc,QAAQ;AAAA,MACtB,WAAW;AAAA,QACV;AAAA,QACA,eAAe;AAAA,UACd,SAAS,QAAQ,WAAW;AAAA,UAC5B,MAAM,QAAQ,QAAQ;AAAA,QACvB,CAAC;AAAA,QACD;AAAA,MACD;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACF;AAEF;","names":[]}
@@ -0,0 +1,8 @@
1
+ import { Toggle as TogglePrimitive } from '@base-ui/react/toggle';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const toggleVariants: (props?: ({
4
+ variant?: "default" | "outline" | null | undefined;
5
+ size?: "default" | "lg" | "sm" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ declare function Toggle({ className, variant, size, ...props }: TogglePrimitive.Props & VariantProps<typeof toggleVariants>): import("react").JSX.Element;
8
+ export { Toggle, toggleVariants };
@@ -0,0 +1,11 @@
1
+ "use client";
2
+ import {
3
+ Toggle,
4
+ toggleVariants
5
+ } from "../chunk-JTVU6ANA.js";
6
+ import "../chunk-Y2TKUANL.js";
7
+ export {
8
+ Toggle,
9
+ toggleVariants
10
+ };
11
+ //# sourceMappingURL=toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,6 @@
1
+ import { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';
2
+ declare function TooltipProvider({ delay, ...props }: TooltipPrimitive.Provider.Props): import("react").JSX.Element;
3
+ declare function Tooltip({ ...props }: TooltipPrimitive.Root.Props): import("react").JSX.Element;
4
+ declare function TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props): import("react").JSX.Element;
5
+ declare function TooltipContent({ className, side, sideOffset, align, alignOffset, children, ...props }: TooltipPrimitive.Popup.Props & Pick<TooltipPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset'>): import("react").JSX.Element;
6
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
@@ -0,0 +1,14 @@
1
+ import {
2
+ Tooltip,
3
+ TooltipContent,
4
+ TooltipProvider,
5
+ TooltipTrigger
6
+ } from "../chunk-HRFMTZ55.js";
7
+ import "../chunk-Y2TKUANL.js";
8
+ export {
9
+ Tooltip,
10
+ TooltipContent,
11
+ TooltipProvider,
12
+ TooltipTrigger
13
+ };
14
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ export declare function useIsMobile(): boolean;
@@ -0,0 +1,7 @@
1
+ import {
2
+ useIsMobile
3
+ } from "../chunk-FHYW2QBY.js";
4
+ export {
5
+ useIsMobile
6
+ };
7
+ //# sourceMappingURL=use-mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,14 @@
1
+ /** "Feb 12" — month + day. */
2
+ export declare const formatDate: (value: Date | number) => string;
3
+ /** "Feb 12, 2028" — month + day + year. Used for lock/unlock dates. */
4
+ export declare const formatDateYear: (value: Date | number) => string;
5
+ /** "Feb 12, 14:30" — month + day + 24h time. */
6
+ export declare const formatDateTime: (value: Date | number) => string;
7
+ /** "Feb 12, 2028, 14:30" — month + day + year + 24h time. */
8
+ export declare const formatDateTimeYear: (value: Date | number) => string;
9
+ /** "12/02/2028 14:30" — numeric day/month/year + 24h time. Used for chart point tooltips. */
10
+ export declare const formatDateTimeNumeric: (value: Date | number) => string;
11
+ /** "14:30" — 24h time only. */
12
+ export declare const formatTime: (value: Date | number) => string;
13
+ /** "12/02" — day/month, numeric. Used for daily/weekly chart axes. */
14
+ export declare const formatDayMonth: (value: Date | number) => string;
@@ -0,0 +1,24 @@
1
+ // src/lib/date.ts
2
+ import { format } from "date-fns";
3
+ var SECONDS_THRESHOLD = 1e12;
4
+ function toDate(value) {
5
+ if (value instanceof Date) return value;
6
+ return new Date(value < SECONDS_THRESHOLD ? value * 1e3 : value);
7
+ }
8
+ var formatDate = (value) => format(toDate(value), "MMM d");
9
+ var formatDateYear = (value) => format(toDate(value), "MMM d, yyyy");
10
+ var formatDateTime = (value) => format(toDate(value), "MMM d, HH:mm");
11
+ var formatDateTimeYear = (value) => format(toDate(value), "MMM d, yyyy, HH:mm");
12
+ var formatDateTimeNumeric = (value) => format(toDate(value), "dd/MM/yyyy HH:mm");
13
+ var formatTime = (value) => format(toDate(value), "HH:mm");
14
+ var formatDayMonth = (value) => format(toDate(value), "dd/MM");
15
+ export {
16
+ formatDate,
17
+ formatDateTime,
18
+ formatDateTimeNumeric,
19
+ formatDateTimeYear,
20
+ formatDateYear,
21
+ formatDayMonth,
22
+ formatTime
23
+ };
24
+ //# sourceMappingURL=date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/date.ts"],"sourcesContent":["import { format } from 'date-fns';\n\n/**\n * Canonical date/time formatting for all apps. Built on date-fns and locked to a\n * 24-hour clock (HH:mm) — never AM/PM. Use these helpers everywhere instead of\n * hand-rolling `toLocaleString`/`toLocaleTimeString` calls.\n *\n * All helpers accept a `Date`, epoch milliseconds, or epoch seconds. Since JS\n * epoch-ms values dwarf any realistic epoch-seconds value, a bare number below\n * the threshold is treated as seconds — matching the on-chain timestamps used\n * across the apps.\n */\nconst SECONDS_THRESHOLD = 1e12; // ~2001 in ms; any real ms timestamp exceeds this.\n\nfunction toDate(value: Date | number): Date {\n\tif (value instanceof Date) return value;\n\treturn new Date(value < SECONDS_THRESHOLD ? value * 1000 : value);\n}\n\n/** \"Feb 12\" — month + day. */\nexport const formatDate = (value: Date | number): string => format(toDate(value), 'MMM d');\n\n/** \"Feb 12, 2028\" — month + day + year. Used for lock/unlock dates. */\nexport const formatDateYear = (value: Date | number): string => format(toDate(value), 'MMM d, yyyy');\n\n/** \"Feb 12, 14:30\" — month + day + 24h time. */\nexport const formatDateTime = (value: Date | number): string => format(toDate(value), 'MMM d, HH:mm');\n\n/** \"Feb 12, 2028, 14:30\" — month + day + year + 24h time. */\nexport const formatDateTimeYear = (value: Date | number): string => format(toDate(value), 'MMM d, yyyy, HH:mm');\n\n/** \"12/02/2028 14:30\" — numeric day/month/year + 24h time. Used for chart point tooltips. */\nexport const formatDateTimeNumeric = (value: Date | number): string => format(toDate(value), 'dd/MM/yyyy HH:mm');\n\n/** \"14:30\" — 24h time only. */\nexport const formatTime = (value: Date | number): string => format(toDate(value), 'HH:mm');\n\n/** \"12/02\" — day/month, numeric. Used for daily/weekly chart axes. */\nexport const formatDayMonth = (value: Date | number): string => format(toDate(value), 'dd/MM');\n"],"mappings":";AAAA,SAAS,cAAc;AAYvB,IAAM,oBAAoB;AAE1B,SAAS,OAAO,OAA4B;AAC3C,MAAI,iBAAiB,KAAM,QAAO;AAClC,SAAO,IAAI,KAAK,QAAQ,oBAAoB,QAAQ,MAAO,KAAK;AACjE;AAGO,IAAM,aAAa,CAAC,UAAiC,OAAO,OAAO,KAAK,GAAG,OAAO;AAGlF,IAAM,iBAAiB,CAAC,UAAiC,OAAO,OAAO,KAAK,GAAG,aAAa;AAG5F,IAAM,iBAAiB,CAAC,UAAiC,OAAO,OAAO,KAAK,GAAG,cAAc;AAG7F,IAAM,qBAAqB,CAAC,UAAiC,OAAO,OAAO,KAAK,GAAG,oBAAoB;AAGvG,IAAM,wBAAwB,CAAC,UAAiC,OAAO,OAAO,KAAK,GAAG,kBAAkB;AAGxG,IAAM,aAAa,CAAC,UAAiC,OAAO,OAAO,KAAK,GAAG,OAAO;AAGlF,IAAM,iBAAiB,CAAC,UAAiC,OAAO,OAAO,KAAK,GAAG,OAAO;","names":[]}
@@ -0,0 +1,16 @@
1
+ export interface FormatBetOptions {
2
+ /** Decimal places in the compact form (default 2). */
3
+ precision?: number;
4
+ /** Use compact K/M/B notation (default true). Set false for a grouped full number. */
5
+ compact?: boolean;
6
+ /** Token decimals used to convert a bigint to a number (default 18). */
7
+ decimals?: number;
8
+ }
9
+ /** Convert a raw on-chain bigint (18-decimals by default) or a number to a plain number. */
10
+ export declare function toBetNumber(value: number | bigint, decimals?: number): number;
11
+ /**
12
+ * Format a BET amount for display. Accepts a number or a raw on-chain bigint.
13
+ * Compact by default: 12_500 → "12.5K", 4_200_000 → "4.2M", 2.2e10 → "22.16B".
14
+ * Use this everywhere instead of re-writing K/M/B formatters.
15
+ */
16
+ export declare function formatBet(value: number | bigint, opts?: FormatBetOptions): string;
@@ -0,0 +1,9 @@
1
+ import {
2
+ formatBet,
3
+ toBetNumber
4
+ } from "../chunk-K7JWN6NH.js";
5
+ export {
6
+ formatBet,
7
+ toBetNumber
8
+ };
9
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+ import { type ClassValue } from 'clsx';
2
+ export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,7 @@
1
+ import {
2
+ cn
3
+ } from "../chunk-Y2TKUANL.js";
4
+ export {
5
+ cn
6
+ };
7
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}