@backbay/glia 0.2.0-alpha.6 → 0.2.0-alpha.8

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 (226) hide show
  1. package/dist/audio/index.js +1145 -5
  2. package/dist/audio/index.js.map +1 -1
  3. package/dist/components/index.js +3187 -10
  4. package/dist/components/index.js.map +1 -1
  5. package/dist/core.js +19714 -12
  6. package/dist/core.js.map +1 -1
  7. package/dist/emotion/index.js +1 -1
  8. package/dist/emotion/index.js.map +1 -1
  9. package/dist/hooks/index.js +941 -6
  10. package/dist/hooks/index.js.map +1 -1
  11. package/dist/index.js +31841 -183
  12. package/dist/index.js.map +1 -1
  13. package/dist/primitives/index.js +21111 -57
  14. package/dist/primitives/index.js.map +1 -1
  15. package/dist/protocol/index.js +360 -2
  16. package/dist/protocol/index.js.map +1 -1
  17. package/dist/speakeasy/index.js +2786 -38
  18. package/dist/speakeasy/index.js.map +1 -1
  19. package/dist/styles.css +1 -1
  20. package/dist/theme/index.js +1150 -3
  21. package/dist/theme/index.js.map +1 -1
  22. package/dist/vision/index.js +370 -2
  23. package/dist/vision/index.js.map +1 -1
  24. package/dist/workspace/index.js +16824 -2
  25. package/dist/workspace/index.js.map +1 -1
  26. package/package.json +16 -10
  27. package/dist/AuroraBackground-AP6ZHVFA.js +0 -6
  28. package/dist/AuroraBackground-AP6ZHVFA.js.map +0 -1
  29. package/dist/BentoGrid-CDARICNM.js +0 -6
  30. package/dist/BentoGrid-CDARICNM.js.map +0 -1
  31. package/dist/CommandPalette-JCWJKRBY.js +0 -6
  32. package/dist/CommandPalette-JCWJKRBY.js.map +0 -1
  33. package/dist/Glass-H4X4ZI4P.js +0 -7
  34. package/dist/Glass-H4X4ZI4P.js.map +0 -1
  35. package/dist/GlitchText-KLQ57PPY.js +0 -6
  36. package/dist/GlitchText-KLQ57PPY.js.map +0 -1
  37. package/dist/GlowButton-VGBPMZO7.js +0 -6
  38. package/dist/GlowButton-VGBPMZO7.js.map +0 -1
  39. package/dist/Graph3D-GO7N2EZQ.js +0 -540
  40. package/dist/Graph3D-GO7N2EZQ.js.map +0 -1
  41. package/dist/HUDProgressRing-N6C5NAEV.js +0 -6
  42. package/dist/HUDProgressRing-N6C5NAEV.js.map +0 -1
  43. package/dist/KPIStat-PBQK27ZB.js +0 -6
  44. package/dist/KPIStat-PBQK27ZB.js.map +0 -1
  45. package/dist/NeonToast-W5F7MU3U.js +0 -6
  46. package/dist/NeonToast-W5F7MU3U.js.map +0 -1
  47. package/dist/ParticleField-WK6CNHWU.js +0 -51
  48. package/dist/ParticleField-WK6CNHWU.js.map +0 -1
  49. package/dist/TextGenerateEffect-EUCEIIUJ.js +0 -6
  50. package/dist/TextGenerateEffect-EUCEIIUJ.js.map +0 -1
  51. package/dist/ThreeDCard-VH5I3SSY.js +0 -6
  52. package/dist/ThreeDCard-VH5I3SSY.js.map +0 -1
  53. package/dist/TypingAnimation-GIWOHPIX.js +0 -6
  54. package/dist/TypingAnimation-GIWOHPIX.js.map +0 -1
  55. package/dist/alert-dialog-QOSYBIIE.js +0 -19
  56. package/dist/alert-dialog-QOSYBIIE.js.map +0 -1
  57. package/dist/avatar-N5R37PCU.js +0 -10
  58. package/dist/avatar-N5R37PCU.js.map +0 -1
  59. package/dist/badge-GTVIIGPY.js +0 -8
  60. package/dist/badge-GTVIIGPY.js.map +0 -1
  61. package/dist/button-D7IMSV2D.js +0 -8
  62. package/dist/button-D7IMSV2D.js.map +0 -1
  63. package/dist/chunk-3CMPQOMY.js +0 -69
  64. package/dist/chunk-3CMPQOMY.js.map +0 -1
  65. package/dist/chunk-3OQT6IYR.js +0 -41
  66. package/dist/chunk-3OQT6IYR.js.map +0 -1
  67. package/dist/chunk-43B2WVLS.js +0 -85
  68. package/dist/chunk-43B2WVLS.js.map +0 -1
  69. package/dist/chunk-4SRFO5W3.js +0 -121
  70. package/dist/chunk-4SRFO5W3.js.map +0 -1
  71. package/dist/chunk-5IZELOOU.js +0 -362
  72. package/dist/chunk-5IZELOOU.js.map +0 -1
  73. package/dist/chunk-6DM4ACSS.js +0 -154
  74. package/dist/chunk-6DM4ACSS.js.map +0 -1
  75. package/dist/chunk-6IGT34PC.js +0 -50
  76. package/dist/chunk-6IGT34PC.js.map +0 -1
  77. package/dist/chunk-6RKBCJHN.js +0 -194
  78. package/dist/chunk-6RKBCJHN.js.map +0 -1
  79. package/dist/chunk-6RX2WGCO.js +0 -108
  80. package/dist/chunk-6RX2WGCO.js.map +0 -1
  81. package/dist/chunk-7K4WZM3U.js +0 -189
  82. package/dist/chunk-7K4WZM3U.js.map +0 -1
  83. package/dist/chunk-7MDBHJPT.js +0 -407
  84. package/dist/chunk-7MDBHJPT.js.map +0 -1
  85. package/dist/chunk-7UQD6ROV.js +0 -9
  86. package/dist/chunk-7UQD6ROV.js.map +0 -1
  87. package/dist/chunk-AFNIVLZP.js +0 -1069
  88. package/dist/chunk-AFNIVLZP.js.map +0 -1
  89. package/dist/chunk-ANWYRO6A.js +0 -407
  90. package/dist/chunk-ANWYRO6A.js.map +0 -1
  91. package/dist/chunk-DIXPOHDO.js +0 -71
  92. package/dist/chunk-DIXPOHDO.js.map +0 -1
  93. package/dist/chunk-DWYMKYPI.js +0 -3
  94. package/dist/chunk-DWYMKYPI.js.map +0 -1
  95. package/dist/chunk-E3NVDCZG.js +0 -280
  96. package/dist/chunk-E3NVDCZG.js.map +0 -1
  97. package/dist/chunk-EBM7YBKL.js +0 -399
  98. package/dist/chunk-EBM7YBKL.js.map +0 -1
  99. package/dist/chunk-EPAM7IWW.js +0 -294
  100. package/dist/chunk-EPAM7IWW.js.map +0 -1
  101. package/dist/chunk-EXQ7GYRS.js +0 -134
  102. package/dist/chunk-EXQ7GYRS.js.map +0 -1
  103. package/dist/chunk-F4QTUZ3C.js +0 -136
  104. package/dist/chunk-F4QTUZ3C.js.map +0 -1
  105. package/dist/chunk-FEW533R2.js +0 -105
  106. package/dist/chunk-FEW533R2.js.map +0 -1
  107. package/dist/chunk-FFZLJKC7.js +0 -270
  108. package/dist/chunk-FFZLJKC7.js.map +0 -1
  109. package/dist/chunk-GEAMOBF7.js +0 -8486
  110. package/dist/chunk-GEAMOBF7.js.map +0 -1
  111. package/dist/chunk-GRTRSCTD.js +0 -74
  112. package/dist/chunk-GRTRSCTD.js.map +0 -1
  113. package/dist/chunk-IKGYOGLK.js +0 -16
  114. package/dist/chunk-IKGYOGLK.js.map +0 -1
  115. package/dist/chunk-IQ7WYWVJ.js +0 -73
  116. package/dist/chunk-IQ7WYWVJ.js.map +0 -1
  117. package/dist/chunk-IXIVWQLF.js +0 -543
  118. package/dist/chunk-IXIVWQLF.js.map +0 -1
  119. package/dist/chunk-JCJU57RC.js +0 -115
  120. package/dist/chunk-JCJU57RC.js.map +0 -1
  121. package/dist/chunk-KORSTBU4.js +0 -117
  122. package/dist/chunk-KORSTBU4.js.map +0 -1
  123. package/dist/chunk-KSEZ6UM2.js +0 -235
  124. package/dist/chunk-KSEZ6UM2.js.map +0 -1
  125. package/dist/chunk-MHPF7R3O.js +0 -1376
  126. package/dist/chunk-MHPF7R3O.js.map +0 -1
  127. package/dist/chunk-MPC5IH7E.js +0 -81
  128. package/dist/chunk-MPC5IH7E.js.map +0 -1
  129. package/dist/chunk-MQIU2NYA.js +0 -114
  130. package/dist/chunk-MQIU2NYA.js.map +0 -1
  131. package/dist/chunk-NYMBJOGR.js +0 -2192
  132. package/dist/chunk-NYMBJOGR.js.map +0 -1
  133. package/dist/chunk-OBZD2M3C.js +0 -169
  134. package/dist/chunk-OBZD2M3C.js.map +0 -1
  135. package/dist/chunk-ODM2AG6G.js +0 -176
  136. package/dist/chunk-ODM2AG6G.js.map +0 -1
  137. package/dist/chunk-ONDKF5LP.js +0 -53
  138. package/dist/chunk-ONDKF5LP.js.map +0 -1
  139. package/dist/chunk-P25YCWQB.js +0 -41
  140. package/dist/chunk-P25YCWQB.js.map +0 -1
  141. package/dist/chunk-PFYVNM6H.js +0 -14
  142. package/dist/chunk-PFYVNM6H.js.map +0 -1
  143. package/dist/chunk-PWNNSGFL.js +0 -20
  144. package/dist/chunk-PWNNSGFL.js.map +0 -1
  145. package/dist/chunk-Q2PGZVOT.js +0 -36
  146. package/dist/chunk-Q2PGZVOT.js.map +0 -1
  147. package/dist/chunk-Q2XDMV7U.js +0 -76
  148. package/dist/chunk-Q2XDMV7U.js.map +0 -1
  149. package/dist/chunk-QG7FH2FI.js +0 -45
  150. package/dist/chunk-QG7FH2FI.js.map +0 -1
  151. package/dist/chunk-R7HUOK2D.js +0 -1914
  152. package/dist/chunk-R7HUOK2D.js.map +0 -1
  153. package/dist/chunk-REUYY7G5.js +0 -773
  154. package/dist/chunk-REUYY7G5.js.map +0 -1
  155. package/dist/chunk-RHC2Z2HT.js +0 -199
  156. package/dist/chunk-RHC2Z2HT.js.map +0 -1
  157. package/dist/chunk-RMCVLIFE.js +0 -23
  158. package/dist/chunk-RMCVLIFE.js.map +0 -1
  159. package/dist/chunk-ROZLTXGR.js +0 -234
  160. package/dist/chunk-ROZLTXGR.js.map +0 -1
  161. package/dist/chunk-RSS2C2O3.js +0 -17
  162. package/dist/chunk-RSS2C2O3.js.map +0 -1
  163. package/dist/chunk-SAGCG5SH.js +0 -355
  164. package/dist/chunk-SAGCG5SH.js.map +0 -1
  165. package/dist/chunk-TM6AOUSD.js +0 -40
  166. package/dist/chunk-TM6AOUSD.js.map +0 -1
  167. package/dist/chunk-TPK4BYCO.js +0 -970
  168. package/dist/chunk-TPK4BYCO.js.map +0 -1
  169. package/dist/chunk-UNQIL4K2.js +0 -34
  170. package/dist/chunk-UNQIL4K2.js.map +0 -1
  171. package/dist/chunk-UUG6L75Y.js +0 -47
  172. package/dist/chunk-UUG6L75Y.js.map +0 -1
  173. package/dist/chunk-V2SYMV4W.js +0 -114
  174. package/dist/chunk-V2SYMV4W.js.map +0 -1
  175. package/dist/chunk-V7EN5CTH.js +0 -130
  176. package/dist/chunk-V7EN5CTH.js.map +0 -1
  177. package/dist/chunk-VITKG2HL.js +0 -1125
  178. package/dist/chunk-VITKG2HL.js.map +0 -1
  179. package/dist/chunk-VYEWU5LO.js +0 -2631
  180. package/dist/chunk-VYEWU5LO.js.map +0 -1
  181. package/dist/chunk-W67QAGSH.js +0 -178
  182. package/dist/chunk-W67QAGSH.js.map +0 -1
  183. package/dist/chunk-WWBIN6KV.js +0 -1353
  184. package/dist/chunk-WWBIN6KV.js.map +0 -1
  185. package/dist/chunk-X77Z4PFB.js +0 -224
  186. package/dist/chunk-X77Z4PFB.js.map +0 -1
  187. package/dist/chunk-X7VG7OTT.js +0 -8
  188. package/dist/chunk-X7VG7OTT.js.map +0 -1
  189. package/dist/chunk-XE4K2SGI.js +0 -74
  190. package/dist/chunk-XE4K2SGI.js.map +0 -1
  191. package/dist/chunk-YIUG7IJK.js +0 -628
  192. package/dist/chunk-YIUG7IJK.js.map +0 -1
  193. package/dist/chunk-YNVN3V4Y.js +0 -13
  194. package/dist/chunk-YNVN3V4Y.js.map +0 -1
  195. package/dist/chunk-Z2S54IZX.js +0 -198
  196. package/dist/chunk-Z2S54IZX.js.map +0 -1
  197. package/dist/chunk-ZR6AH25Z.js +0 -17
  198. package/dist/chunk-ZR6AH25Z.js.map +0 -1
  199. package/dist/dialog-SPM3DTTI.js +0 -17
  200. package/dist/dialog-SPM3DTTI.js.map +0 -1
  201. package/dist/dropdown-menu-HMTWKWGK.js +0 -21
  202. package/dist/dropdown-menu-HMTWKWGK.js.map +0 -1
  203. package/dist/input-BH4P4S26.js +0 -6
  204. package/dist/input-BH4P4S26.js.map +0 -1
  205. package/dist/label-5Z4Q6VER.js +0 -8
  206. package/dist/label-5Z4Q6VER.js.map +0 -1
  207. package/dist/popover-IFOUXYLI.js +0 -18
  208. package/dist/popover-IFOUXYLI.js.map +0 -1
  209. package/dist/scroll-area-DJXNW6QX.js +0 -14
  210. package/dist/scroll-area-DJXNW6QX.js.map +0 -1
  211. package/dist/select-FZ277C3G.js +0 -22
  212. package/dist/select-FZ277C3G.js.map +0 -1
  213. package/dist/separator-BTMLN4NB.js +0 -8
  214. package/dist/separator-BTMLN4NB.js.map +0 -1
  215. package/dist/skeleton-DXIWBH4W.js +0 -6
  216. package/dist/skeleton-DXIWBH4W.js.map +0 -1
  217. package/dist/switch-4MCXIZBY.js +0 -13
  218. package/dist/switch-4MCXIZBY.js.map +0 -1
  219. package/dist/tabs-O7AW3APK.js +0 -17
  220. package/dist/tabs-O7AW3APK.js.map +0 -1
  221. package/dist/textarea-IB5WAFDO.js +0 -6
  222. package/dist/textarea-IB5WAFDO.js.map +0 -1
  223. package/dist/toggle-XVPPG6P4.js +0 -10
  224. package/dist/toggle-XVPPG6P4.js.map +0 -1
  225. package/dist/tooltip-JICZTD4F.js +0 -18
  226. package/dist/tooltip-JICZTD4F.js.map +0 -1
@@ -1,115 +0,0 @@
1
- import { Root, Trigger, Portal, Close, Overlay, Content, Title, Description } from './chunk-EBM7YBKL.js';
2
- import { cn } from './chunk-6RX2WGCO.js';
3
- import { XIcon } from 'lucide-react';
4
- import { jsx, jsxs } from 'react/jsx-runtime';
5
-
6
- function Dialog({ ...props }) {
7
- return /* @__PURE__ */ jsx(Root, { "data-slot": "dialog", ...props });
8
- }
9
- function DialogTrigger({ ...props }) {
10
- return /* @__PURE__ */ jsx(Trigger, { "data-slot": "dialog-trigger", ...props });
11
- }
12
- function DialogPortal({ ...props }) {
13
- return /* @__PURE__ */ jsx(Portal, { "data-slot": "dialog-portal", ...props });
14
- }
15
- function DialogClose({ ...props }) {
16
- return /* @__PURE__ */ jsx(Close, { "data-slot": "dialog-close", ...props });
17
- }
18
- function DialogOverlay({
19
- className,
20
- ...props
21
- }) {
22
- return /* @__PURE__ */ jsx(
23
- Overlay,
24
- {
25
- "data-slot": "dialog-overlay",
26
- className: cn(
27
- "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
28
- className
29
- ),
30
- ...props
31
- }
32
- );
33
- }
34
- function DialogContent({
35
- className,
36
- children,
37
- showCloseButton = true,
38
- ...props
39
- }) {
40
- return /* @__PURE__ */ jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
41
- /* @__PURE__ */ jsx(DialogOverlay, {}),
42
- /* @__PURE__ */ jsxs(
43
- Content,
44
- {
45
- "data-slot": "dialog-content",
46
- className: cn(
47
- "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",
48
- className
49
- ),
50
- ...props,
51
- children: [
52
- children,
53
- showCloseButton && /* @__PURE__ */ jsxs(
54
- Close,
55
- {
56
- "data-slot": "dialog-close",
57
- className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
58
- children: [
59
- /* @__PURE__ */ jsx(XIcon, {}),
60
- /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
61
- ]
62
- }
63
- )
64
- ]
65
- }
66
- )
67
- ] });
68
- }
69
- function DialogHeader({ className, ...props }) {
70
- return /* @__PURE__ */ jsx(
71
- "div",
72
- {
73
- "data-slot": "dialog-header",
74
- className: cn("flex flex-col gap-2 text-center sm:text-left", className),
75
- ...props
76
- }
77
- );
78
- }
79
- function DialogFooter({ className, ...props }) {
80
- return /* @__PURE__ */ jsx(
81
- "div",
82
- {
83
- "data-slot": "dialog-footer",
84
- className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
85
- ...props
86
- }
87
- );
88
- }
89
- function DialogTitle({ className, ...props }) {
90
- return /* @__PURE__ */ jsx(
91
- Title,
92
- {
93
- "data-slot": "dialog-title",
94
- className: cn("text-lg leading-none font-semibold", className),
95
- ...props
96
- }
97
- );
98
- }
99
- function DialogDescription({
100
- className,
101
- ...props
102
- }) {
103
- return /* @__PURE__ */ jsx(
104
- Description,
105
- {
106
- "data-slot": "dialog-description",
107
- className: cn("text-muted-foreground text-sm", className),
108
- ...props
109
- }
110
- );
111
- }
112
-
113
- export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger };
114
- //# sourceMappingURL=chunk-JCJU57RC.js.map
115
- //# sourceMappingURL=chunk-JCJU57RC.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/primitives/ui/dialog.tsx"],"names":[],"mappings":"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","file":"chunk-JCJU57RC.js","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n};\n"]}
@@ -1,117 +0,0 @@
1
- import { cn } from './chunk-6RX2WGCO.js';
2
- import React, { createContext, useRef, useState, useContext } from 'react';
3
- import { jsx } from 'react/jsx-runtime';
4
-
5
- var MouseEnterContext = createContext(void 0);
6
- var CardContainer = ({
7
- children,
8
- className,
9
- containerClassName
10
- }) => {
11
- const containerRef = useRef(null);
12
- const [isMouseEntered, setIsMouseEntered] = useState(false);
13
- const handleMouseMove = (e) => {
14
- if (!containerRef.current) return;
15
- const { left, top, width, height } = containerRef.current.getBoundingClientRect();
16
- const x = (e.clientX - left - width / 2) / 25;
17
- const y = (e.clientY - top - height / 2) / 25;
18
- containerRef.current.style.transform = `rotateY(${x}deg) rotateX(${y}deg)`;
19
- };
20
- const handleMouseEnter = () => {
21
- setIsMouseEntered(true);
22
- if (!containerRef.current) return;
23
- };
24
- const handleMouseLeave = () => {
25
- if (!containerRef.current) return;
26
- setIsMouseEntered(false);
27
- containerRef.current.style.transform = `rotateY(0deg) rotateX(0deg)`;
28
- };
29
- return /* @__PURE__ */ jsx(MouseEnterContext.Provider, { value: [isMouseEntered, setIsMouseEntered], children: /* @__PURE__ */ jsx(
30
- "div",
31
- {
32
- className: cn("flex items-center justify-center py-20", containerClassName),
33
- style: {
34
- perspective: "1000px"
35
- },
36
- children: /* @__PURE__ */ jsx(
37
- "div",
38
- {
39
- ref: containerRef,
40
- onMouseEnter: handleMouseEnter,
41
- onMouseMove: handleMouseMove,
42
- onMouseLeave: handleMouseLeave,
43
- className: cn(
44
- "flex items-center justify-center relative transition-all duration-200 ease-linear",
45
- className
46
- ),
47
- style: {
48
- transformStyle: "preserve-3d"
49
- },
50
- children
51
- }
52
- )
53
- }
54
- ) });
55
- };
56
- var CardBody = ({
57
- children,
58
- className
59
- }) => {
60
- return /* @__PURE__ */ jsx(
61
- "div",
62
- {
63
- className: cn(
64
- "h-96 w-96 [transform-style:preserve-3d] [&>*]:[transform-style:preserve-3d]",
65
- "backdrop-blur-sm",
66
- className
67
- ),
68
- children
69
- }
70
- );
71
- };
72
- var CardItem = ({
73
- as: Tag = "div",
74
- children,
75
- className,
76
- translateX = 0,
77
- translateY = 0,
78
- translateZ = 0,
79
- rotateX = 0,
80
- rotateY = 0,
81
- rotateZ = 0,
82
- ...props
83
- }) => {
84
- const ref = useRef(null);
85
- const [isMouseEntered] = useMouseEnter();
86
- React.useEffect(() => {
87
- const handleAnimations = () => {
88
- if (!ref.current) return;
89
- if (isMouseEntered) {
90
- ref.current.style.transform = `translateX(${translateX}px) translateY(${translateY}px) translateZ(${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotateZ(${rotateZ}deg)`;
91
- } else {
92
- ref.current.style.transform = `translateX(0px) translateY(0px) translateZ(0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg)`;
93
- }
94
- };
95
- handleAnimations();
96
- }, [isMouseEntered, translateX, translateY, translateZ, rotateX, rotateY, rotateZ]);
97
- return React.createElement(
98
- Tag,
99
- {
100
- ref,
101
- className: cn("w-fit transition-transform duration-200 ease-linear", className),
102
- ...props
103
- },
104
- children
105
- );
106
- };
107
- var useMouseEnter = () => {
108
- const context = useContext(MouseEnterContext);
109
- if (context === void 0) {
110
- throw new Error("useMouseEnter must be used within a MouseEnterProvider");
111
- }
112
- return context;
113
- };
114
-
115
- export { CardBody, CardContainer, CardItem, useMouseEnter };
116
- //# sourceMappingURL=chunk-KORSTBU4.js.map
117
- //# sourceMappingURL=chunk-KORSTBU4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/primitives/molecules/ThreeDCard/ThreeDCard.tsx"],"names":[],"mappings":";;;;AAKA,IAAM,iBAAA,GAAoB,cAExB,MAAS,CAAA;AAEJ,IAAM,gBAAgB,CAAC;AAAA,EAC5B,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAIM;AACJ,EAAA,MAAM,YAAA,GAAe,OAAuB,IAAI,CAAA;AAChD,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,KAAK,CAAA;AAE1D,EAAA,MAAM,eAAA,GAAkB,CAAC,CAAA,KAAkC;AACzD,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,IAAA,MAAM,EAAE,MAAM,GAAA,EAAK,KAAA,EAAO,QAAO,GAAI,YAAA,CAAa,QAAQ,qBAAA,EAAsB;AAChF,IAAA,MAAM,CAAA,GAAA,CAAK,CAAA,CAAE,OAAA,GAAU,IAAA,GAAO,QAAQ,CAAA,IAAK,EAAA;AAC3C,IAAA,MAAM,CAAA,GAAA,CAAK,CAAA,CAAE,OAAA,GAAU,GAAA,GAAM,SAAS,CAAA,IAAK,EAAA;AAC3C,IAAA,YAAA,CAAa,QAAQ,KAAA,CAAM,SAAA,GAAY,CAAA,QAAA,EAAW,CAAC,gBAAgB,CAAC,CAAA,IAAA,CAAA;AAAA,EACtE,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,iBAAA,CAAkB,IAAI,CAAA;AACtB,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAAA,EAC7B,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AAC3B,IAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,IAAA,YAAA,CAAa,OAAA,CAAQ,MAAM,SAAA,GAAY,CAAA,2BAAA,CAAA;AAAA,EACzC,CAAA;AAEA,EAAA,uBACE,GAAA,CAAC,kBAAkB,QAAA,EAAlB,EAA2B,OAAO,CAAC,cAAA,EAAgB,iBAAiB,CAAA,EACnE,QAAA,kBAAA,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,wCAAA,EAA0C,kBAAkB,CAAA;AAAA,MAC1E,KAAA,EAAO;AAAA,QACL,WAAA,EAAa;AAAA,OACf;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA,EAAK,YAAA;AAAA,UACL,YAAA,EAAc,gBAAA;AAAA,UACd,WAAA,EAAa,eAAA;AAAA,UACb,YAAA,EAAc,gBAAA;AAAA,UACd,SAAA,EAAW,EAAA;AAAA,YACT,mFAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,EAAO;AAAA,YACL,cAAA,EAAgB;AAAA,WAClB;AAAA,UAEC;AAAA;AAAA;AACH;AAAA,GACF,EACF,CAAA;AAEJ;AAEO,IAAM,WAAW,CAAC;AAAA,EACvB,QAAA;AAAA,EACA;AACF,CAAA,KAGM;AACJ,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,6EAAA;AAAA,QACA,kBAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AAEO,IAAM,WAAW,CAAC;AAAA,EACvB,IAAI,GAAA,GAAM,KAAA;AAAA,EACV,QAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA,GAAa,CAAA;AAAA,EACb,UAAA,GAAa,CAAA;AAAA,EACb,UAAA,GAAa,CAAA;AAAA,EACb,OAAA,GAAU,CAAA;AAAA,EACV,OAAA,GAAU,CAAA;AAAA,EACV,OAAA,GAAU,CAAA;AAAA,EACV,GAAG;AACL,CAAA,KAWM;AACJ,EAAA,MAAM,GAAA,GAAM,OAA2B,IAAI,CAAA;AAC3C,EAAA,MAAM,CAAC,cAAc,CAAA,GAAI,aAAA,EAAc;AAEvC,EAAA,KAAA,CAAM,UAAU,MAAM;AACpB,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,IAAI,CAAC,IAAI,OAAA,EAAS;AAClB,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,GAAA,CAAI,OAAA,CAAQ,KAAA,CAAM,SAAA,GAAY,CAAA,WAAA,EAAc,UAAU,CAAA,eAAA,EAAkB,UAAU,CAAA,eAAA,EAAkB,UAAU,CAAA,YAAA,EAAe,OAAO,CAAA,aAAA,EAAgB,OAAO,gBAAgB,OAAO,CAAA,IAAA,CAAA;AAAA,MACpL,CAAA,MAAO;AACL,QAAA,GAAA,CAAI,OAAA,CAAQ,MAAM,SAAA,GAAY,CAAA,yFAAA,CAAA;AAAA,MAChC;AAAA,IACF,CAAA;AACA,IAAA,gBAAA,EAAiB;AAAA,EACnB,CAAA,EAAG,CAAC,cAAA,EAAgB,UAAA,EAAY,YAAY,UAAA,EAAY,OAAA,EAAS,OAAA,EAAS,OAAO,CAAC,CAAA;AAGlF,EAAA,OAAO,KAAA,CAAM,aAAA;AAAA,IACX,GAAA;AAAA,IACA;AAAA,MACE,GAAA;AAAA,MACA,SAAA,EAAW,EAAA,CAAG,qDAAA,EAAuD,SAAS,CAAA;AAAA,MAC9E,GAAG;AAAA,KACL;AAAA,IACA;AAAA,GACF;AACF;AAGO,IAAM,gBAAgB,MAAM;AACjC,EAAA,MAAM,OAAA,GAAU,WAAW,iBAAiB,CAAA;AAC5C,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,EAC1E;AACA,EAAA,OAAO,OAAA;AACT","file":"chunk-KORSTBU4.js","sourcesContent":["\"use client\";\n\nimport { cn } from \"../../../lib/utils\";\nimport React, { createContext, MouseEvent, useContext, useRef, useState } from \"react\";\n\nconst MouseEnterContext = createContext<\n [boolean, React.Dispatch<React.SetStateAction<boolean>>] | undefined\n>(undefined);\n\nexport const CardContainer = ({\n children,\n className,\n containerClassName,\n}: {\n children?: React.ReactNode;\n className?: string;\n containerClassName?: string;\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [isMouseEntered, setIsMouseEntered] = useState(false);\n\n const handleMouseMove = (e: MouseEvent<HTMLDivElement>) => {\n if (!containerRef.current) return;\n const { left, top, width, height } = containerRef.current.getBoundingClientRect();\n const x = (e.clientX - left - width / 2) / 25;\n const y = (e.clientY - top - height / 2) / 25;\n containerRef.current.style.transform = `rotateY(${x}deg) rotateX(${y}deg)`;\n };\n\n const handleMouseEnter = () => {\n setIsMouseEntered(true);\n if (!containerRef.current) return;\n };\n\n const handleMouseLeave = () => {\n if (!containerRef.current) return;\n setIsMouseEntered(false);\n containerRef.current.style.transform = `rotateY(0deg) rotateX(0deg)`;\n };\n\n return (\n <MouseEnterContext.Provider value={[isMouseEntered, setIsMouseEntered]}>\n <div\n className={cn(\"flex items-center justify-center py-20\", containerClassName)}\n style={{\n perspective: \"1000px\",\n }}\n >\n <div\n ref={containerRef}\n onMouseEnter={handleMouseEnter}\n onMouseMove={handleMouseMove}\n onMouseLeave={handleMouseLeave}\n className={cn(\n \"flex items-center justify-center relative transition-all duration-200 ease-linear\",\n className\n )}\n style={{\n transformStyle: \"preserve-3d\",\n }}\n >\n {children}\n </div>\n </div>\n </MouseEnterContext.Provider>\n );\n};\n\nexport const CardBody = ({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) => {\n return (\n <div\n className={cn(\n \"h-96 w-96 [transform-style:preserve-3d] [&>*]:[transform-style:preserve-3d]\",\n \"backdrop-blur-sm\",\n className\n )}\n >\n {children}\n </div>\n );\n};\n\nexport const CardItem = ({\n as: Tag = \"div\",\n children,\n className,\n translateX = 0,\n translateY = 0,\n translateZ = 0,\n rotateX = 0,\n rotateY = 0,\n rotateZ = 0,\n ...props\n}: {\n as?: React.ElementType;\n children: React.ReactNode;\n className?: string;\n translateX?: number | string;\n translateY?: number | string;\n translateZ?: number | string;\n rotateX?: number | string;\n rotateY?: number | string;\n rotateZ?: number | string;\n [key: string]: unknown;\n}) => {\n const ref = useRef<HTMLElement | null>(null);\n const [isMouseEntered] = useMouseEnter();\n\n React.useEffect(() => {\n const handleAnimations = () => {\n if (!ref.current) return;\n if (isMouseEntered) {\n ref.current.style.transform = `translateX(${translateX}px) translateY(${translateY}px) translateZ(${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) rotateZ(${rotateZ}deg)`;\n } else {\n ref.current.style.transform = `translateX(0px) translateY(0px) translateZ(0px) rotateX(0deg) rotateY(0deg) rotateZ(0deg)`;\n }\n };\n handleAnimations();\n }, [isMouseEntered, translateX, translateY, translateZ, rotateX, rotateY, rotateZ]);\n\n // Handle polymorphic component rendering properly\n return React.createElement(\n Tag,\n {\n ref,\n className: cn(\"w-fit transition-transform duration-200 ease-linear\", className),\n ...props,\n },\n children\n );\n};\n\n// Hook to use the context\nexport const useMouseEnter = () => {\n const context = useContext(MouseEnterContext);\n if (context === undefined) {\n throw new Error(\"useMouseEnter must be used within a MouseEnterProvider\");\n }\n return context;\n};\n"]}
@@ -1,235 +0,0 @@
1
- import { createRovingFocusGroupScope, Root, Item } from './chunk-X77Z4PFB.js';
2
- import { useDirection } from './chunk-YNVN3V4Y.js';
3
- import { useId } from './chunk-IKGYOGLK.js';
4
- import { Presence } from './chunk-V7EN5CTH.js';
5
- import { createContextScope } from './chunk-MPC5IH7E.js';
6
- import { useControllableState } from './chunk-DIXPOHDO.js';
7
- import { Primitive, composeEventHandlers } from './chunk-EXQ7GYRS.js';
8
- import { cn } from './chunk-6RX2WGCO.js';
9
- import * as React from 'react';
10
- import { jsx } from 'react/jsx-runtime';
11
-
12
- var TABS_NAME = "Tabs";
13
- var [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [
14
- createRovingFocusGroupScope
15
- ]);
16
- var useRovingFocusGroupScope = createRovingFocusGroupScope();
17
- var [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);
18
- var Tabs = React.forwardRef(
19
- (props, forwardedRef) => {
20
- const {
21
- __scopeTabs,
22
- value: valueProp,
23
- onValueChange,
24
- defaultValue,
25
- orientation = "horizontal",
26
- dir,
27
- activationMode = "automatic",
28
- ...tabsProps
29
- } = props;
30
- const direction = useDirection(dir);
31
- const [value, setValue] = useControllableState({
32
- prop: valueProp,
33
- onChange: onValueChange,
34
- defaultProp: defaultValue ?? "",
35
- caller: TABS_NAME
36
- });
37
- return /* @__PURE__ */ jsx(
38
- TabsProvider,
39
- {
40
- scope: __scopeTabs,
41
- baseId: useId(),
42
- value,
43
- onValueChange: setValue,
44
- orientation,
45
- dir: direction,
46
- activationMode,
47
- children: /* @__PURE__ */ jsx(
48
- Primitive.div,
49
- {
50
- dir: direction,
51
- "data-orientation": orientation,
52
- ...tabsProps,
53
- ref: forwardedRef
54
- }
55
- )
56
- }
57
- );
58
- }
59
- );
60
- Tabs.displayName = TABS_NAME;
61
- var TAB_LIST_NAME = "TabsList";
62
- var TabsList = React.forwardRef(
63
- (props, forwardedRef) => {
64
- const { __scopeTabs, loop = true, ...listProps } = props;
65
- const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);
66
- const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);
67
- return /* @__PURE__ */ jsx(
68
- Root,
69
- {
70
- asChild: true,
71
- ...rovingFocusGroupScope,
72
- orientation: context.orientation,
73
- dir: context.dir,
74
- loop,
75
- children: /* @__PURE__ */ jsx(
76
- Primitive.div,
77
- {
78
- role: "tablist",
79
- "aria-orientation": context.orientation,
80
- ...listProps,
81
- ref: forwardedRef
82
- }
83
- )
84
- }
85
- );
86
- }
87
- );
88
- TabsList.displayName = TAB_LIST_NAME;
89
- var TRIGGER_NAME = "TabsTrigger";
90
- var TabsTrigger = React.forwardRef(
91
- (props, forwardedRef) => {
92
- const { __scopeTabs, value, disabled = false, ...triggerProps } = props;
93
- const context = useTabsContext(TRIGGER_NAME, __scopeTabs);
94
- const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);
95
- const triggerId = makeTriggerId(context.baseId, value);
96
- const contentId = makeContentId(context.baseId, value);
97
- const isSelected = value === context.value;
98
- return /* @__PURE__ */ jsx(
99
- Item,
100
- {
101
- asChild: true,
102
- ...rovingFocusGroupScope,
103
- focusable: !disabled,
104
- active: isSelected,
105
- children: /* @__PURE__ */ jsx(
106
- Primitive.button,
107
- {
108
- type: "button",
109
- role: "tab",
110
- "aria-selected": isSelected,
111
- "aria-controls": contentId,
112
- "data-state": isSelected ? "active" : "inactive",
113
- "data-disabled": disabled ? "" : void 0,
114
- disabled,
115
- id: triggerId,
116
- ...triggerProps,
117
- ref: forwardedRef,
118
- onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {
119
- if (!disabled && event.button === 0 && event.ctrlKey === false) {
120
- context.onValueChange(value);
121
- } else {
122
- event.preventDefault();
123
- }
124
- }),
125
- onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
126
- if ([" ", "Enter"].includes(event.key)) context.onValueChange(value);
127
- }),
128
- onFocus: composeEventHandlers(props.onFocus, () => {
129
- const isAutomaticActivation = context.activationMode !== "manual";
130
- if (!isSelected && !disabled && isAutomaticActivation) {
131
- context.onValueChange(value);
132
- }
133
- })
134
- }
135
- )
136
- }
137
- );
138
- }
139
- );
140
- TabsTrigger.displayName = TRIGGER_NAME;
141
- var CONTENT_NAME = "TabsContent";
142
- var TabsContent = React.forwardRef(
143
- (props, forwardedRef) => {
144
- const { __scopeTabs, value, forceMount, children, ...contentProps } = props;
145
- const context = useTabsContext(CONTENT_NAME, __scopeTabs);
146
- const triggerId = makeTriggerId(context.baseId, value);
147
- const contentId = makeContentId(context.baseId, value);
148
- const isSelected = value === context.value;
149
- const isMountAnimationPreventedRef = React.useRef(isSelected);
150
- React.useEffect(() => {
151
- const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);
152
- return () => cancelAnimationFrame(rAF);
153
- }, []);
154
- return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(
155
- Primitive.div,
156
- {
157
- "data-state": isSelected ? "active" : "inactive",
158
- "data-orientation": context.orientation,
159
- role: "tabpanel",
160
- "aria-labelledby": triggerId,
161
- hidden: !present,
162
- id: contentId,
163
- tabIndex: 0,
164
- ...contentProps,
165
- ref: forwardedRef,
166
- style: {
167
- ...props.style,
168
- animationDuration: isMountAnimationPreventedRef.current ? "0s" : void 0
169
- },
170
- children: present && children
171
- }
172
- ) });
173
- }
174
- );
175
- TabsContent.displayName = CONTENT_NAME;
176
- function makeTriggerId(baseId, value) {
177
- return `${baseId}-trigger-${value}`;
178
- }
179
- function makeContentId(baseId, value) {
180
- return `${baseId}-content-${value}`;
181
- }
182
- var Root2 = Tabs;
183
- var List = TabsList;
184
- var Trigger = TabsTrigger;
185
- var Content = TabsContent;
186
- function Tabs2({ className, ...props }) {
187
- return /* @__PURE__ */ jsx(
188
- Root2,
189
- {
190
- "data-slot": "tabs",
191
- className: cn("flex flex-col gap-2", className),
192
- ...props
193
- }
194
- );
195
- }
196
- function TabsList2({ className, ...props }) {
197
- return /* @__PURE__ */ jsx(
198
- List,
199
- {
200
- "data-slot": "tabs-list",
201
- className: cn(
202
- "bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
203
- className
204
- ),
205
- ...props
206
- }
207
- );
208
- }
209
- function TabsTrigger2({ className, ...props }) {
210
- return /* @__PURE__ */ jsx(
211
- Trigger,
212
- {
213
- "data-slot": "tabs-trigger",
214
- className: cn(
215
- "data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
216
- className
217
- ),
218
- ...props
219
- }
220
- );
221
- }
222
- function TabsContent2({ className, ...props }) {
223
- return /* @__PURE__ */ jsx(
224
- Content,
225
- {
226
- "data-slot": "tabs-content",
227
- className: cn("flex-1 outline-none", className),
228
- ...props
229
- }
230
- );
231
- }
232
-
233
- export { Tabs2 as Tabs, TabsContent2 as TabsContent, TabsList2 as TabsList, TabsTrigger2 as TabsTrigger };
234
- //# sourceMappingURL=chunk-KSEZ6UM2.js.map
235
- //# sourceMappingURL=chunk-KSEZ6UM2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/@radix-ui/react-tabs/src/tabs.tsx","../src/primitives/ui/tabs.tsx"],"names":["Root","Tabs","jsx","TabsList","TabsTrigger","TabsContent"],"mappings":"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","file":"chunk-KSEZ6UM2.js","sourcesContent":["import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps<P> = P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext<TabsContextValue>(TABS_NAME);\n\ntype TabsElement = React.ComponentRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef<TabsElement, TabsProps>(\n (props: ScopedProps<TabsProps>, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? '',\n caller: TABS_NAME,\n });\n\n return (\n <TabsProvider\n scope={__scopeTabs}\n baseId={useId()}\n value={value}\n onValueChange={setValue}\n orientation={orientation}\n dir={direction}\n activationMode={activationMode}\n >\n <Primitive.div\n dir={direction}\n data-orientation={orientation}\n {...tabsProps}\n ref={forwardedRef}\n />\n </TabsProvider>\n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ComponentRef<typeof Primitive.div>;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>(\n (props: ScopedProps<TabsListProps>, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={context.orientation}\n dir={context.dir}\n loop={loop}\n >\n <Primitive.div\n role=\"tablist\"\n aria-orientation={context.orientation}\n {...listProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props: ScopedProps<TabsTriggerProps>, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={isSelected}\n >\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={contentId}\n data-state={isSelected ? 'active' : 'inactive'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n id={triggerId}\n {...triggerProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ComponentRef<typeof Primitive.div>;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props: ScopedProps<TabsContentProps>, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n <Presence present={forceMount || isSelected}>\n {({ present }) => (\n <Primitive.div\n data-state={isSelected ? 'active' : 'inactive'}\n data-orientation={context.orientation}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n hidden={!present}\n id={contentId}\n tabIndex={0}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined,\n }}\n >\n {present && children}\n </Primitive.div>\n )}\n </Presence>\n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Tabs({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {\n return (\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n className={cn(\n \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n );\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n"]}