@playfast/reform-better-hub-ui-primitives 0.0.2

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 (86) hide show
  1. package/README.md +115 -0
  2. package/dist/components/agent-icon.d.ts +5 -0
  3. package/dist/components/agent-icon.d.ts.map +1 -0
  4. package/dist/components/agent-icon.js +5 -0
  5. package/dist/components/agent-icon.js.map +1 -0
  6. package/dist/components/badge.d.ts +11 -0
  7. package/dist/components/badge.d.ts.map +1 -0
  8. package/dist/components/badge.js +28 -0
  9. package/dist/components/badge.js.map +1 -0
  10. package/dist/components/button.d.ts +12 -0
  11. package/dist/components/button.d.ts.map +1 -0
  12. package/dist/components/button.js +34 -0
  13. package/dist/components/button.js.map +1 -0
  14. package/dist/components/combobox.d.ts +25 -0
  15. package/dist/components/combobox.d.ts.map +1 -0
  16. package/dist/components/combobox.js +60 -0
  17. package/dist/components/combobox.js.map +1 -0
  18. package/dist/components/command.d.ts +19 -0
  19. package/dist/components/command.d.ts.map +1 -0
  20. package/dist/components/command.js +36 -0
  21. package/dist/components/command.js.map +1 -0
  22. package/dist/components/dialog.d.ts +16 -0
  23. package/dist/components/dialog.d.ts.map +1 -0
  24. package/dist/components/dialog.js +38 -0
  25. package/dist/components/dialog.js.map +1 -0
  26. package/dist/components/dropdown-menu.d.ts +17 -0
  27. package/dist/components/dropdown-menu.d.ts.map +1 -0
  28. package/dist/components/dropdown-menu.js +35 -0
  29. package/dist/components/dropdown-menu.js.map +1 -0
  30. package/dist/components/github-background.d.ts +3 -0
  31. package/dist/components/github-background.d.ts.map +1 -0
  32. package/dist/components/github-background.js +51 -0
  33. package/dist/components/github-background.js.map +1 -0
  34. package/dist/components/halftone-background.d.ts +3 -0
  35. package/dist/components/halftone-background.d.ts.map +1 -0
  36. package/dist/components/halftone-background.js +248 -0
  37. package/dist/components/halftone-background.js.map +1 -0
  38. package/dist/components/input-group.d.ts +19 -0
  39. package/dist/components/input-group.d.ts.map +1 -0
  40. package/dist/components/input-group.js +63 -0
  41. package/dist/components/input-group.js.map +1 -0
  42. package/dist/components/input.d.ts +5 -0
  43. package/dist/components/input.d.ts.map +1 -0
  44. package/dist/components/input.js +7 -0
  45. package/dist/components/input.js.map +1 -0
  46. package/dist/components/live-duration.d.ts +9 -0
  47. package/dist/components/live-duration.d.ts.map +1 -0
  48. package/dist/components/live-duration.js +55 -0
  49. package/dist/components/live-duration.js.map +1 -0
  50. package/dist/components/logo.d.ts +8 -0
  51. package/dist/components/logo.d.ts.map +1 -0
  52. package/dist/components/logo.js +9 -0
  53. package/dist/components/logo.js.map +1 -0
  54. package/dist/components/popover.d.ts +12 -0
  55. package/dist/components/popover.d.ts.map +1 -0
  56. package/dist/components/popover.js +26 -0
  57. package/dist/components/popover.js.map +1 -0
  58. package/dist/components/resize-handle.d.ts +15 -0
  59. package/dist/components/resize-handle.d.ts.map +1 -0
  60. package/dist/components/resize-handle.js +36 -0
  61. package/dist/components/resize-handle.js.map +1 -0
  62. package/dist/components/sheet.d.ts +18 -0
  63. package/dist/components/sheet.d.ts.map +1 -0
  64. package/dist/components/sheet.js +44 -0
  65. package/dist/components/sheet.js.map +1 -0
  66. package/dist/components/textarea.d.ts +5 -0
  67. package/dist/components/textarea.d.ts.map +1 -0
  68. package/dist/components/textarea.js +7 -0
  69. package/dist/components/textarea.js.map +1 -0
  70. package/dist/components/time-ago.d.ts +8 -0
  71. package/dist/components/time-ago.d.ts.map +1 -0
  72. package/dist/components/time-ago.js +40 -0
  73. package/dist/components/time-ago.js.map +1 -0
  74. package/dist/components/tooltip.d.ts +10 -0
  75. package/dist/components/tooltip.d.ts.map +1 -0
  76. package/dist/components/tooltip.js +25 -0
  77. package/dist/components/tooltip.js.map +1 -0
  78. package/dist/foundation/cn.d.ts +7 -0
  79. package/dist/foundation/cn.d.ts.map +1 -0
  80. package/dist/foundation/cn.js +8 -0
  81. package/dist/foundation/cn.js.map +1 -0
  82. package/dist/index.d.ts +21 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +24 -0
  85. package/dist/index.js.map +1 -0
  86. package/package.json +72 -0
@@ -0,0 +1,15 @@
1
+ import type * as React from "react";
2
+ interface ResizeHandleProps {
3
+ /** Called continuously during drag with clientX pixel position */
4
+ onResize: (clientX: number) => void;
5
+ /** Called when drag starts */
6
+ onDragStart?: () => void;
7
+ /** Called when drag ends */
8
+ onDragEnd?: () => void;
9
+ /** Double click handler (e.g. reset to default) */
10
+ onDoubleClick?: () => void;
11
+ className?: string;
12
+ }
13
+ export declare function ResizeHandle({ onResize, onDragStart, onDragEnd, onDoubleClick, className, }: ResizeHandleProps): React.JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=resize-handle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-handle.d.ts","sourceRoot":"","sources":["../../src/components/resize-handle.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAKpC,UAAU,iBAAiB;IAC1B,kEAAkE;IAClE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,EAC5B,QAAQ,EACR,WAAW,EACX,SAAS,EACT,aAAa,EACb,SAAS,GACT,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA2DvC"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ import { cn } from "../foundation/cn";
4
+ export function ResizeHandle({ onResize, onDragStart, onDragEnd, onDoubleClick, className, }) {
5
+ const [isDragging, setIsDragging] = useState(false);
6
+ const handleMouseDown = useCallback((e) => {
7
+ e.preventDefault();
8
+ setIsDragging(true);
9
+ onDragStart?.();
10
+ }, [onDragStart]);
11
+ useEffect(() => {
12
+ if (!isDragging)
13
+ return;
14
+ const handleMouseMove = (e) => {
15
+ onResize(e.clientX);
16
+ };
17
+ const handleMouseUp = () => {
18
+ setIsDragging(false);
19
+ onDragEnd?.();
20
+ };
21
+ document.addEventListener("mousemove", handleMouseMove);
22
+ document.addEventListener("mouseup", handleMouseUp);
23
+ document.body.style.userSelect = "none";
24
+ document.body.style.cursor = "col-resize";
25
+ return () => {
26
+ document.removeEventListener("mousemove", handleMouseMove);
27
+ document.removeEventListener("mouseup", handleMouseUp);
28
+ document.body.style.userSelect = "";
29
+ document.body.style.cursor = "";
30
+ };
31
+ }, [isDragging, onResize, onDragEnd]);
32
+ return (_jsxs("div", { onMouseDown: handleMouseDown, onDoubleClick: onDoubleClick, className: cn("relative shrink-0 w-0 group/resize cursor-col-resize z-10", className), children: [_jsx("div", { className: "absolute inset-y-0 -left-[5px] w-[11px]" }), _jsx("div", { className: cn("absolute inset-y-0 -left-px w-[2px] transition-all duration-150", isDragging
33
+ ? "bg-foreground/25"
34
+ : "bg-transparent group-hover/resize:bg-foreground/15") })] }));
35
+ }
36
+ //# sourceMappingURL=resize-handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resize-handle.js","sourceRoot":"","sources":["../../src/components/resize-handle.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AActC,MAAM,UAAU,YAAY,CAAC,EAC5B,QAAQ,EACR,WAAW,EACX,SAAS,EACT,aAAa,EACb,SAAS,GACU;IACnB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,eAAe,GAAG,WAAW,CAClC,CAAC,CAAkB,EAAE,EAAE;QACtB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,WAAW,EAAE,EAAE,CAAC;IACjB,CAAC,EACD,CAAC,WAAW,CAAC,CACb,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,eAAe,GAAG,CAAC,CAAa,EAAE,EAAE;YACzC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,aAAa,GAAG,GAAG,EAAE;YAC1B,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,SAAS,EAAE,EAAE,CAAC;QACf,CAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QACxC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;QAE1C,OAAO,GAAG,EAAE;YACX,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;YAC3D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QACjC,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtC,OAAO,CACN,eACC,WAAW,EAAE,eAAe,EAC5B,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,EAAE,CACZ,2DAA2D,EAC3D,SAAS,CACT,aAGD,cAAK,SAAS,EAAC,yCAAyC,GAAG,EAE3D,cACC,SAAS,EAAE,EAAE,CACZ,iEAAiE,EACjE,UAAU;oBACT,CAAC,CAAC,kBAAkB;oBACpB,CAAC,CAAC,oDAAoD,CACvD,GACA,IACG,CACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,18 @@
1
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
2
+ import type * as React from "react";
3
+ declare function Sheet({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>): React.JSX.Element;
4
+ declare function SheetTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>): React.JSX.Element;
5
+ declare function SheetPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>): React.JSX.Element;
6
+ declare function SheetClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>): React.JSX.Element;
7
+ declare function SheetOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>): React.JSX.Element;
8
+ interface SheetContentProps extends React.ComponentProps<typeof DialogPrimitive.Content> {
9
+ side?: "left" | "right" | "top" | "bottom";
10
+ showCloseButton?: boolean;
11
+ }
12
+ declare function SheetContent({ className, children, side, showCloseButton, ...props }: SheetContentProps): React.JSX.Element;
13
+ declare function SheetHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
14
+ declare function SheetFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
15
+ declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>): React.JSX.Element;
16
+ declare function SheetDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): React.JSX.Element;
17
+ export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, };
18
+ //# sourceMappingURL=sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../src/components/sheet.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,iBAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEjG;AAED,iBAAS,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE3G;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEzG;AAED,iBAAS,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEvG;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW1E;AAED,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC;IACvF,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,IAAc,EACd,eAAsB,EACtB,GAAG,KAAK,EACR,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiCvC;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW5F;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW5F;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQlH;AAED,iBAAS,gBAAgB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ9E;AAED,OAAO,EACN,KAAK,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,GACZ,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Adapted from better-hub by Better Auth — https://github.com/better-auth/better-hub
3
+ // (apps/web/src/components/ui/sheet.tsx). Full credit to the Better Auth team.
4
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
5
+ import { XIcon } from "lucide-react";
6
+ import { cn } from "../foundation/cn";
7
+ function Sheet({ ...props }) {
8
+ return _jsx(DialogPrimitive.Root, { "data-slot": "sheet", ...props });
9
+ }
10
+ function SheetTrigger({ ...props }) {
11
+ return _jsx(DialogPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
12
+ }
13
+ function SheetPortal({ ...props }) {
14
+ return _jsx(DialogPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
15
+ }
16
+ function SheetClose({ ...props }) {
17
+ return _jsx(DialogPrimitive.Close, { "data-slot": "sheet-close", ...props });
18
+ }
19
+ function SheetOverlay({ className, ...props }) {
20
+ return (_jsx(DialogPrimitive.Overlay, { "data-slot": "sheet-overlay", className: cn("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/25 dark:bg-black/70 backdrop-blur-[2px]", className), ...props }));
21
+ }
22
+ function SheetContent({ className, children, side = "right", showCloseButton = true, ...props }) {
23
+ const sideStyles = {
24
+ right: "inset-y-0 right-0 h-full w-3/4 sm:max-w-xl data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right",
25
+ left: "inset-y-0 left-0 h-full w-3/4 sm:max-w-xl data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left",
26
+ top: "inset-x-0 top-0 w-full data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
27
+ bottom: "inset-x-0 bottom-0 w-full data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
28
+ };
29
+ return (_jsxs(SheetPortal, { children: [_jsx(SheetOverlay, {}), _jsxs(DialogPrimitive.Content, { "data-slot": "sheet-content", className: cn("fixed z-50 flex flex-col bg-background border-l border-border shadow-lg duration-300", sideStyles[side], className), ...props, children: [_jsx(DialogPrimitive.Title, { className: "hidden sr-only", children: props.title }), children, showCloseButton && (_jsxs(DialogPrimitive.Close, { className: "absolute top-4 right-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary cursor-pointer", children: [_jsx(XIcon, { className: "h-4 w-4" }), _jsx("span", { className: "sr-only", children: "Close" })] }))] })] }));
30
+ }
31
+ function SheetHeader({ className, ...props }) {
32
+ return (_jsx("div", { "data-slot": "sheet-header", className: cn("flex flex-col gap-2 px-6 py-4 border-b border-border", className), ...props }));
33
+ }
34
+ function SheetFooter({ className, ...props }) {
35
+ return (_jsx("div", { "data-slot": "sheet-footer", className: cn("flex flex-col-reverse gap-2 px-6 py-4 border-t border-border sm:flex-row sm:justify-end", className), ...props }));
36
+ }
37
+ function SheetTitle({ className, ...props }) {
38
+ return (_jsx(DialogPrimitive.Title, { "data-slot": "sheet-title", className: cn("text-lg font-semibold text-foreground", className), ...props }));
39
+ }
40
+ function SheetDescription({ className, ...props }) {
41
+ return (_jsx(DialogPrimitive.Description, { "data-slot": "sheet-description", className: cn("text-sm text-muted-foreground", className), ...props }));
42
+ }
43
+ export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, };
44
+ //# sourceMappingURL=sheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../src/components/sheet.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type * as React from "react";
2
+ import type { ComponentProps } from "react";
3
+ declare function Textarea({ className, ...props }: ComponentProps<"textarea">): React.JSX.Element;
4
+ export { Textarea };
5
+ //# sourceMappingURL=textarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../src/components/textarea.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAI5C,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWxF;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from "../foundation/cn";
3
+ function Textarea({ className, ...props }) {
4
+ return (_jsx("textarea", { "data-slot": "textarea", className: cn("flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40", className), ...props }));
5
+ }
6
+ export { Textarea };
7
+ //# sourceMappingURL=textarea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../src/components/textarea.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACpE,OAAO,CACN,gCACW,UAAU,EACpB,SAAS,EAAE,EAAE,CACZ,qcAAqc,EACrc,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type * as React from "react";
2
+ interface TimeAgoProps {
3
+ date: string | Date;
4
+ className?: string;
5
+ }
6
+ export declare function TimeAgo({ date, className }: TimeAgoProps): React.JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=time-ago.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-ago.d.ts","sourceRoot":"","sources":["../../src/components/time-ago.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AA6BpC,UAAU,YAAY;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmB5E"}
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect } from 'react';
3
+ // Inlined from better-hub's "@/lib/utils" (timeAgo) — only the piece used here.
4
+ function timeAgo(date) {
5
+ const now = new Date();
6
+ const then = new Date(date);
7
+ const seconds = Math.floor((now.getTime() - then.getTime()) / 1000);
8
+ if (seconds < 60)
9
+ return 'just now';
10
+ if (seconds < 3600)
11
+ return `${Math.floor(seconds / 60)}m ago`;
12
+ if (seconds < 86400)
13
+ return `${Math.floor(seconds / 3600)}h ago`;
14
+ if (seconds < 604800)
15
+ return `${Math.floor(seconds / 86400)}d ago`;
16
+ if (seconds < 2592000)
17
+ return `${Math.floor(seconds / 604800)}w ago`;
18
+ const months = Math.floor(seconds / 2592000);
19
+ if (months < 12)
20
+ return `${months}mo ago`;
21
+ const sameYear = then.getFullYear() === now.getFullYear();
22
+ if (sameYear) {
23
+ return then.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
24
+ }
25
+ return then.toLocaleDateString('en-US', {
26
+ month: 'short',
27
+ day: 'numeric',
28
+ year: 'numeric',
29
+ });
30
+ }
31
+ export function TimeAgo({ date, className }) {
32
+ const [text, setText] = useState(() => timeAgo(date));
33
+ useEffect(() => {
34
+ setText(timeAgo(date));
35
+ const interval = setInterval(() => setText(timeAgo(date)), 60_000);
36
+ return () => clearInterval(interval);
37
+ }, [date]);
38
+ return (_jsx("time", { dateTime: typeof date === 'string' ? date : date.toISOString(), title: new Date(date).toLocaleString(), className: className, suppressHydrationWarning: true, children: text }));
39
+ }
40
+ //# sourceMappingURL=time-ago.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-ago.js","sourceRoot":"","sources":["../../src/components/time-ago.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,gFAAgF;AAChF,SAAS,OAAO,CAAC,IAAmB;IACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAEpE,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,UAAU,CAAC;IACpC,IAAI,OAAO,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC9D,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACjE,IAAI,OAAO,GAAG,MAAM;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACnE,IAAI,OAAO,GAAG,OAAO;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAErE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC;IAC7C,IAAI,MAAM,GAAG,EAAE;QAAE,OAAO,GAAG,MAAM,QAAQ,CAAC;IAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACvC,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;KACf,CAAC,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAgB;IACxD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnE,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACN,eACC,QAAQ,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAC9D,KAAK,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EACtC,SAAS,EAAE,SAAS,EACpB,wBAAwB,kBAEvB,IAAI,GACC,CACP,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
2
+ import type * as React from "react";
3
+ declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): React.JSX.Element;
4
+ declare function Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>): React.JSX.Element;
5
+ declare function TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>): React.JSX.Element;
6
+ declare function TooltipPortal({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Portal>): React.JSX.Element;
7
+ declare function TooltipContent({ className, sideOffset, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content>): React.JSX.Element;
8
+ declare function TooltipArrow({ className, ...props }: React.ComponentProps<typeof TooltipPrimitive.Arrow>): React.JSX.Element;
9
+ export { Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger };
10
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,iBAAS,eAAe,CAAC,EACxB,aAAmB,EACnB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ5E;AAED,iBAAS,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEpG;AAED,iBAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE9G;AAED,iBAAS,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE5G;AAED,iBAAS,cAAc,CAAC,EACvB,SAAS,EACT,UAAc,EACd,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAY3E;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQzE;AAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Adapted from better-hub by Better Auth — https://github.com/better-auth/better-hub
3
+ // (apps/web/src/components/ui/tooltip.tsx). Full credit to the Better Auth team.
4
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
5
+ import { cn } from "../foundation/cn";
6
+ function TooltipProvider({ delayDuration = 300, ...props }) {
7
+ return (_jsx(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delayDuration: delayDuration, ...props }));
8
+ }
9
+ function Tooltip({ ...props }) {
10
+ return _jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
11
+ }
12
+ function TooltipTrigger({ ...props }) {
13
+ return _jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
14
+ }
15
+ function TooltipPortal({ ...props }) {
16
+ return _jsx(TooltipPrimitive.Portal, { "data-slot": "tooltip-portal", ...props });
17
+ }
18
+ function TooltipContent({ className, sideOffset = 4, ...props }) {
19
+ return (_jsx(TooltipPrimitive.Content, { "data-slot": "tooltip-content", sideOffset: sideOffset, className: cn("bg-background text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 overflow-hidden rounded-md border px-3 py-1.5 text-sm shadow-md", className), ...props }));
20
+ }
21
+ function TooltipArrow({ className, ...props }) {
22
+ return (_jsx(TooltipPrimitive.Arrow, { "data-slot": "tooltip-arrow", className: cn("fill-background", className), ...props }));
23
+ }
24
+ export { Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger };
25
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":";AAAA,qFAAqF;AACrF,iFAAiF;AAEjF,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,SAAS,eAAe,CAAC,EACxB,aAAa,GAAG,GAAG,EACnB,GAAG,KAAK,EACgD;IACxD,OAAO,CACN,KAAC,gBAAgB,CAAC,QAAQ,iBACf,kBAAkB,EAC5B,aAAa,EAAE,aAAa,KACxB,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,GAAG,KAAK,EAAsD;IAChF,OAAO,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,CAAC;AACjE,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,GAAG,KAAK,EAAyD;IAC1F,OAAO,KAAC,gBAAgB,CAAC,OAAO,iBAAW,iBAAiB,KAAK,KAAK,GAAI,CAAC;AAC5E,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,GAAG,KAAK,EAAwD;IACxF,OAAO,KAAC,gBAAgB,CAAC,MAAM,iBAAW,gBAAgB,KAAK,KAAK,GAAI,CAAC;AAC1E,CAAC;AAED,SAAS,cAAc,CAAC,EACvB,SAAS,EACT,UAAU,GAAG,CAAC,EACd,GAAG,KAAK,EAC+C;IACvD,OAAO,CACN,KAAC,gBAAgB,CAAC,OAAO,iBACd,iBAAiB,EAC3B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACZ,uYAAuY,EACvY,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EAC6C;IACrD,OAAO,CACN,KAAC,gBAAgB,CAAC,KAAK,iBACZ,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,KACvC,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type ClassValue } from 'clsx';
2
+ /**
3
+ * Merge class names with Tailwind-aware de-duplication.
4
+ * Adapted from better-hub (apps/web/src/lib/utils.ts). See ../../README.md.
5
+ */
6
+ export declare const cn: (...inputs: ClassValue[]) => string;
7
+ //# sourceMappingURL=cn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cn.d.ts","sourceRoot":"","sources":["../../src/foundation/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAQ,MAAM,MAAM,CAAA;AAG5C;;;GAGG;AACH,eAAO,MAAM,EAAE,GAAI,GAAG,QAAQ,UAAU,EAAE,KAAG,MAA+B,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { clsx } from 'clsx';
2
+ import { twMerge } from 'tailwind-merge';
3
+ /**
4
+ * Merge class names with Tailwind-aware de-duplication.
5
+ * Adapted from better-hub (apps/web/src/lib/utils.ts). See ../../README.md.
6
+ */
7
+ export const cn = (...inputs) => twMerge(clsx(inputs));
8
+ //# sourceMappingURL=cn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cn.js","sourceRoot":"","sources":["../../src/foundation/cn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,IAAI,EAAE,MAAM,MAAM,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAoB,EAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA"}
@@ -0,0 +1,21 @@
1
+ export * from './components/agent-icon';
2
+ export * from './components/badge';
3
+ export * from './components/button';
4
+ export * from './components/combobox';
5
+ export * from './components/command';
6
+ export * from './components/dialog';
7
+ export * from './components/dropdown-menu';
8
+ export * from './components/github-background';
9
+ export * from './components/halftone-background';
10
+ export * from './components/input';
11
+ export * from './components/input-group';
12
+ export * from './components/live-duration';
13
+ export * from './components/logo';
14
+ export * from './components/popover';
15
+ export * from './components/resize-handle';
16
+ export * from './components/sheet';
17
+ export * from './components/textarea';
18
+ export * from './components/time-ago';
19
+ export * from './components/tooltip';
20
+ export { cn } from './foundation/cn';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAIA,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AAErC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ // This package's primitives are adapted from better-hub by Better Auth
2
+ // (https://github.com/better-auth/better-hub) — full credit to the original
3
+ // authors. See README.md for details.
4
+ export * from './components/agent-icon';
5
+ export * from './components/badge';
6
+ export * from './components/button';
7
+ export * from './components/combobox';
8
+ export * from './components/command';
9
+ export * from './components/dialog';
10
+ export * from './components/dropdown-menu';
11
+ export * from './components/github-background';
12
+ export * from './components/halftone-background';
13
+ export * from './components/input';
14
+ export * from './components/input-group';
15
+ export * from './components/live-duration';
16
+ export * from './components/logo';
17
+ export * from './components/popover';
18
+ export * from './components/resize-handle';
19
+ export * from './components/sheet';
20
+ export * from './components/textarea';
21
+ export * from './components/time-ago';
22
+ export * from './components/tooltip';
23
+ export { cn } from './foundation/cn';
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,4EAA4E;AAC5E,sCAAsC;AAEtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AAErC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@playfast/reform-better-hub-ui-primitives",
3
+ "playbook": "./playbook",
4
+ "version": "0.0.2",
5
+ "type": "module",
6
+ "description": "React UI primitives adapted from better-hub by Better Auth (https://github.com/better-auth/better-hub). Full credit to the Better Auth team.",
7
+ "keywords": [
8
+ "reform",
9
+ "effect",
10
+ "react",
11
+ "ui",
12
+ "components",
13
+ "design-system",
14
+ "shadcn",
15
+ "radix",
16
+ "tailwind"
17
+ ],
18
+ "license": "MIT",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/playfast/reform.git",
22
+ "directory": "packages/better-hub-ui-primitives"
23
+ },
24
+ "bugs": {
25
+ "url": "https://github.com/playfast/reform/issues"
26
+ },
27
+ "sideEffects": [
28
+ "**/*.css"
29
+ ],
30
+ "exports": {
31
+ "./package.json": "./package.json",
32
+ ".": "./src/index.tsx",
33
+ "./styles.css": "./src/foundation/styles.css",
34
+ "./*": "./src/*.tsx"
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "README.md"
39
+ ],
40
+ "scripts": {
41
+ "clean": "rm -rf dist .tsbuildinfo",
42
+ "check": "tsc --noEmit",
43
+ "build": "tsc -p tsconfig.build.json",
44
+ "test": "vitest run",
45
+ "test:watch": "vitest",
46
+ "coverage": "vitest run --coverage",
47
+ "lint": "oxlint src",
48
+ "lint:fix": "oxlint --fix src"
49
+ },
50
+ "peerDependencies": {
51
+ "react": "^19.0.0",
52
+ "react-dom": "^19.0.0"
53
+ },
54
+ "dependencies": {
55
+ "@base-ui/react": "^1.3.0",
56
+ "@radix-ui/react-dialog": "^1.1.15",
57
+ "@radix-ui/react-dropdown-menu": "^2.1.16",
58
+ "@radix-ui/react-popover": "^1.1.15",
59
+ "@radix-ui/react-slot": "^1.2.4",
60
+ "@radix-ui/react-tooltip": "^1.2.8",
61
+ "@radix-ui/react-visually-hidden": "^1.2.4",
62
+ "class-variance-authority": "^0.7.1",
63
+ "clsx": "^2.1.1",
64
+ "cmdk": "^1.1.1",
65
+ "lucide-react": "^0.575.0",
66
+ "radix-ui": "^1.4.3",
67
+ "tailwind-merge": "^3.4.1"
68
+ },
69
+ "publishConfig": {
70
+ "access": "public"
71
+ }
72
+ }