@playfast/reform-better-hub-ui-primitives 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/dist/components/agent-icon.d.ts +7 -0
- package/dist/components/agent-icon.d.ts.map +1 -0
- package/dist/components/agent-icon.js +5 -0
- package/dist/components/agent-icon.js.map +1 -0
- package/dist/components/autocomplete.d.ts +20 -0
- package/dist/components/autocomplete.d.ts.map +1 -0
- package/dist/components/autocomplete.js +81 -0
- package/dist/components/autocomplete.js.map +1 -0
- package/dist/components/badge.d.ts +13 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +26 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +14 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +32 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/combobox.d.ts +28 -0
- package/dist/components/combobox.d.ts.map +1 -0
- package/dist/components/combobox.js +58 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.d.ts +20 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +34 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/dialog.d.ts +17 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +36 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +19 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +33 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/github-background.d.ts +3 -0
- package/dist/components/github-background.d.ts.map +1 -0
- package/dist/components/github-background.js +99 -0
- package/dist/components/github-background.js.map +1 -0
- package/dist/components/halftone-background.d.ts +3 -0
- package/dist/components/halftone-background.d.ts.map +1 -0
- package/dist/components/halftone-background.js +247 -0
- package/dist/components/halftone-background.js.map +1 -0
- package/dist/components/halftone-config.d.ts +12 -0
- package/dist/components/halftone-config.d.ts.map +1 -0
- package/dist/components/halftone-config.js +12 -0
- package/dist/components/halftone-config.js.map +1 -0
- package/dist/components/input-group.d.ts +21 -0
- package/dist/components/input-group.d.ts.map +1 -0
- package/dist/components/input-group.js +58 -0
- package/dist/components/input-group.js.map +1 -0
- package/dist/components/input.d.ts +5 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +7 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/live-duration.d.ts +9 -0
- package/dist/components/live-duration.d.ts.map +1 -0
- package/dist/components/live-duration.js +64 -0
- package/dist/components/live-duration.js.map +1 -0
- package/dist/components/logo.d.ts +8 -0
- package/dist/components/logo.d.ts.map +1 -0
- package/dist/components/logo.js +9 -0
- package/dist/components/logo.js.map +1 -0
- package/dist/components/popover.d.ts +12 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +30 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/resize-handle.d.ts +12 -0
- package/dist/components/resize-handle.d.ts.map +1 -0
- package/dist/components/resize-handle.js +36 -0
- package/dist/components/resize-handle.js.map +1 -0
- package/dist/components/sheet.d.ts +18 -0
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +42 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/textarea.d.ts +5 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +7 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/time-ago.d.ts +8 -0
- package/dist/components/time-ago.d.ts.map +1 -0
- package/dist/components/time-ago.js +56 -0
- package/dist/components/time-ago.js.map +1 -0
- package/dist/components/tooltip.d.ts +10 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +23 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/foundation/cn.d.ts +3 -0
- package/dist/foundation/cn.d.ts.map +1 -0
- package/dist/foundation/cn.js +5 -0
- package/dist/foundation/cn.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/package.json +39 -27
- package/src/components/agent-icon.tsx +16 -16
- package/src/components/autocomplete.tsx +166 -162
- package/src/components/badge.tsx +46 -45
- package/src/components/button.tsx +56 -63
- package/src/components/combobox.tsx +233 -228
- package/src/components/command.tsx +135 -139
- package/src/components/dialog.tsx +106 -98
- package/src/components/dropdown-menu.tsx +118 -115
- package/src/components/github-background.tsx +214 -216
- package/src/components/halftone-background.tsx +164 -155
- package/src/components/halftone-config.ts +8 -8
- package/src/components/input-group.tsx +149 -147
- package/src/components/input.tsx +17 -17
- package/src/components/live-duration.tsx +70 -64
- package/src/components/logo.tsx +9 -13
- package/src/components/popover.tsx +60 -62
- package/src/components/resize-handle.tsx +73 -75
- package/src/components/sheet.tsx +120 -112
- package/src/components/textarea.tsx +15 -15
- package/src/components/time-ago.tsx +64 -62
- package/src/components/tooltip.tsx +48 -42
- package/src/foundation/styles.css +6 -4
- package/src/index.ts +21 -21
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DateTime, Option } from 'effect';
|
|
3
|
+
import { useState, useEffect } from 'react';
|
|
4
|
+
const MS_PER_SECOND = 1000;
|
|
5
|
+
const SECONDS_PER_HOUR = 3600;
|
|
6
|
+
const SECONDS_PER_MINUTE = 60;
|
|
7
|
+
const TICK_INTERVAL_MS = 1000;
|
|
8
|
+
function formatDuration({ startedAt, completedAt }) {
|
|
9
|
+
if (!startedAt) {
|
|
10
|
+
return '';
|
|
11
|
+
}
|
|
12
|
+
const start = DateTime.unsafeMake(startedAt);
|
|
13
|
+
const end = completedAt ? DateTime.unsafeMake(completedAt) : DateTime.unsafeNow();
|
|
14
|
+
const elapsedMs = DateTime.toEpochMillis(end) - DateTime.toEpochMillis(start);
|
|
15
|
+
const totalSeconds = Math.max(0, Math.floor(elapsedMs / MS_PER_SECOND));
|
|
16
|
+
const hours = Math.floor(totalSeconds / SECONDS_PER_HOUR);
|
|
17
|
+
const minutes = Math.floor((totalSeconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE);
|
|
18
|
+
const seconds = totalSeconds % SECONDS_PER_MINUTE;
|
|
19
|
+
if (hours > 0) {
|
|
20
|
+
return `${hours}h ${minutes}m`;
|
|
21
|
+
}
|
|
22
|
+
if (minutes > 0) {
|
|
23
|
+
return `${minutes}m ${seconds}s`;
|
|
24
|
+
}
|
|
25
|
+
return `${seconds}s`;
|
|
26
|
+
}
|
|
27
|
+
// shared tick: one interval drives all LiveDuration subscribers
|
|
28
|
+
const callbacks = new Set();
|
|
29
|
+
const tickState = {
|
|
30
|
+
intervalId: Option.none(),
|
|
31
|
+
};
|
|
32
|
+
function subscribeLiveTick(callback) {
|
|
33
|
+
callbacks.add(callback);
|
|
34
|
+
if (Option.isNone(tickState.intervalId)) {
|
|
35
|
+
tickState.intervalId = Option.some(
|
|
36
|
+
// oxlint-disable-next-line reform-rules/no-set-timeout-interval -- browser-timer seam: shared render ticker for React, no Effect runtime here
|
|
37
|
+
setInterval(() => {
|
|
38
|
+
callbacks.forEach((cb) => cb());
|
|
39
|
+
}, TICK_INTERVAL_MS));
|
|
40
|
+
}
|
|
41
|
+
return () => {
|
|
42
|
+
callbacks.delete(callback);
|
|
43
|
+
if (callbacks.size === 0 && Option.isSome(tickState.intervalId)) {
|
|
44
|
+
clearInterval(tickState.intervalId.value);
|
|
45
|
+
tickState.intervalId = Option.none();
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export function LiveDuration({ startedAt, completedAt, className, }) {
|
|
50
|
+
const [, setTick] = useState(0);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (!startedAt || completedAt != null) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
setTick(0);
|
|
56
|
+
return subscribeLiveTick(() => setTick((prev) => prev + 1));
|
|
57
|
+
}, [startedAt, completedAt]);
|
|
58
|
+
if (!startedAt) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const formatted = formatDuration({ startedAt, completedAt: completedAt ?? null });
|
|
62
|
+
return (_jsx("span", { className: className, suppressHydrationWarning: true, children: formatted }));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=live-duration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-duration.js","sourceRoot":"","sources":["../../src/components/live-duration.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
interface LogoPropsExternalApi {
|
|
3
|
+
className?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function Logo({ className }: LogoPropsExternalApi): React.JSX.Element;
|
|
6
|
+
export declare function LogoMark({ className }: LogoPropsExternalApi): React.JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=logo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../src/components/logo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAGnC,UAAU,oBAAoB;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAM3E;AAED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE/E"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../foundation/cn.js';
|
|
3
|
+
export function Logo({ className }) {
|
|
4
|
+
return (_jsx("span", { className: cn('font-mono text-sm font-medium tracking-tight', className), children: "BETTER-HUB." }));
|
|
5
|
+
}
|
|
6
|
+
export function LogoMark({ className }) {
|
|
7
|
+
return _jsx("span", { className: cn('font-mono text-sm font-bold tracking-tight', className), children: "b." });
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=logo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.js","sourceRoot":"","sources":["../../src/components/logo.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAMrC,MAAM,UAAU,IAAI,CAAC,EAAE,SAAS,EAAwB;IACtD,OAAO,CACL,eAAM,SAAS,EAAE,EAAE,CAAC,8CAA8C,EAAE,SAAS,CAAC,4BAEvE,CACR,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,EAAE,SAAS,EAAwB;IAC1D,OAAO,eAAM,SAAS,EAAE,EAAE,CAAC,4CAA4C,EAAE,SAAS,CAAC,mBAAW,CAAA;AAChG,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
import type { ComponentProps } from 'react';
|
|
3
|
+
import { Popover as PopoverPrimitive } from 'radix-ui';
|
|
4
|
+
declare function Popover({ ...props }: ComponentProps<typeof PopoverPrimitive.Root>): React.JSX.Element;
|
|
5
|
+
declare function PopoverTrigger({ ...props }: ComponentProps<typeof PopoverPrimitive.Trigger>): React.JSX.Element;
|
|
6
|
+
declare function PopoverContent({ className, align, sideOffset, ...props }: ComponentProps<typeof PopoverPrimitive.Content>): React.JSX.Element;
|
|
7
|
+
declare function PopoverAnchor({ ...props }: ComponentProps<typeof PopoverPrimitive.Anchor>): React.JSX.Element;
|
|
8
|
+
declare function PopoverHeader({ className, ...props }: ComponentProps<'div'>): React.JSX.Element;
|
|
9
|
+
declare function PopoverTitle({ className, ...props }: ComponentProps<'h2'>): React.JSX.Element;
|
|
10
|
+
declare function PopoverDescription({ className, ...props }: ComponentProps<'p'>): React.JSX.Element;
|
|
11
|
+
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverHeader, PopoverTitle, PopoverDescription, };
|
|
12
|
+
//# sourceMappingURL=popover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAItD,iBAAS,OAAO,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE9F;AAED,iBAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAErE;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,KAAgB,EAChB,UAAc,EACd,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkBrE;AAED,iBAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEpE;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQxF;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEtF;AAED,iBAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ3F;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,kBAAkB,GACnB,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Popover as PopoverPrimitive } from 'radix-ui';
|
|
3
|
+
import { cn } from '../foundation/cn.js';
|
|
4
|
+
function Popover({ ...props }) {
|
|
5
|
+
return _jsx(PopoverPrimitive.Root, { "data-slot": "popover", ...props });
|
|
6
|
+
}
|
|
7
|
+
function PopoverTrigger({ ...props }) {
|
|
8
|
+
return _jsx(PopoverPrimitive.Trigger, { "data-slot": "popover-trigger", ...props });
|
|
9
|
+
}
|
|
10
|
+
function PopoverContent({ className, align = 'center', sideOffset = 4, ...props }) {
|
|
11
|
+
return (_jsx(PopoverPrimitive.Portal, { children: _jsx(PopoverPrimitive.Content, { "data-slot": "popover-content", align: align, sideOffset: sideOffset, className: cn(
|
|
12
|
+
// NOTE: `--popover` is not defined in this design system (only --background/--card/…),
|
|
13
|
+
// so `bg-popover` rendered transparent. Use the defined `bg-background`/`text-foreground`
|
|
14
|
+
// (exactly what DropdownMenuContent uses) so a portaled popover is opaque.
|
|
15
|
+
'z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border bg-background p-4 text-foreground shadow-md outline-hidden 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95', className), ...props }) }));
|
|
16
|
+
}
|
|
17
|
+
function PopoverAnchor({ ...props }) {
|
|
18
|
+
return _jsx(PopoverPrimitive.Anchor, { "data-slot": "popover-anchor", ...props });
|
|
19
|
+
}
|
|
20
|
+
function PopoverHeader({ className, ...props }) {
|
|
21
|
+
return (_jsx("div", { "data-slot": "popover-header", className: cn('flex flex-col gap-1 text-sm', className), ...props }));
|
|
22
|
+
}
|
|
23
|
+
function PopoverTitle({ className, ...props }) {
|
|
24
|
+
return _jsx("div", { "data-slot": "popover-title", className: cn('font-medium', className), ...props });
|
|
25
|
+
}
|
|
26
|
+
function PopoverDescription({ className, ...props }) {
|
|
27
|
+
return (_jsx("p", { "data-slot": "popover-description", className: cn('text-muted-foreground', className), ...props }));
|
|
28
|
+
}
|
|
29
|
+
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverHeader, PopoverTitle, PopoverDescription, };
|
|
30
|
+
//# sourceMappingURL=popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAEtD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAErC,SAAS,OAAO,CAAC,EAAE,GAAG,KAAK,EAAgD;IACzE,OAAO,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,CAAA;AACjE,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EACwC;IAChD,OAAO,KAAC,gBAAgB,CAAC,OAAO,iBAAW,iBAAiB,KAAK,KAAK,GAAI,CAAA;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,KAAK,GAAG,QAAQ,EAChB,UAAU,GAAG,CAAC,EACd,GAAG,KAAK,EACwC;IAChD,OAAO,CACL,KAAC,gBAAgB,CAAC,MAAM,cACtB,KAAC,gBAAgB,CAAC,OAAO,iBACb,iBAAiB,EAC3B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE;YACX,uFAAuF;YACvF,0FAA0F;YAC1F,2EAA2E;YAC3E,2dAA2d,EAC3d,SAAS,CACV,KACG,KAAK,GACT,GACsB,CAC3B,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACuC;IAC/C,OAAO,KAAC,gBAAgB,CAAC,MAAM,iBAAW,gBAAgB,KAAK,KAAK,GAAI,CAAA;AAC1E,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAyB;IACnE,OAAO,CACL,2BACY,gBAAgB,EAC1B,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,KACnD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAwB;IACjE,OAAO,2BAAe,eAAe,EAAC,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAA;AAC9F,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAuB;IACtE,OAAO,CACL,yBACY,qBAAqB,EAC/B,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,KAC7C,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,YAAY,EACZ,kBAAkB,GACnB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
interface ResizeHandlePropsExternalApi {
|
|
3
|
+
onResize: (clientPos: number) => void;
|
|
4
|
+
onDragStart?: () => void;
|
|
5
|
+
onDragEnd?: () => void;
|
|
6
|
+
onDoubleClick?: () => void;
|
|
7
|
+
axis?: 'x' | 'y';
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function ResizeHandle({ onResize, onDragStart, onDragEnd, onDoubleClick, axis, className, }: ResizeHandlePropsExternalApi): React.JSX.Element;
|
|
11
|
+
export {};
|
|
12
|
+
//# 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":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAKnC,UAAU,4BAA4B;IACpC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EACX,SAAS,EACT,aAAa,EACb,IAAU,EACV,SAAS,GACV,EAAE,4BAA4B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiElD"}
|
|
@@ -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.js';
|
|
4
|
+
export function ResizeHandle({ onResize, onDragStart, onDragEnd, onDoubleClick, axis = 'x', className, }) {
|
|
5
|
+
const [isDragging, setIsDragging] = useState(false);
|
|
6
|
+
const vertical = axis === 'y';
|
|
7
|
+
const handleMouseDown = useCallback((event) => {
|
|
8
|
+
event.preventDefault();
|
|
9
|
+
setIsDragging(true);
|
|
10
|
+
onDragStart?.();
|
|
11
|
+
}, [onDragStart]);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (!isDragging) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const handleMouseMove = (event) => {
|
|
17
|
+
onResize(vertical ? event.clientY : event.clientX);
|
|
18
|
+
};
|
|
19
|
+
const handleMouseUp = () => {
|
|
20
|
+
setIsDragging(false);
|
|
21
|
+
onDragEnd?.();
|
|
22
|
+
};
|
|
23
|
+
document.addEventListener('mousemove', handleMouseMove);
|
|
24
|
+
document.addEventListener('mouseup', handleMouseUp);
|
|
25
|
+
document.body.style.userSelect = 'none';
|
|
26
|
+
document.body.style.cursor = vertical ? 'row-resize' : 'col-resize';
|
|
27
|
+
return () => {
|
|
28
|
+
document.removeEventListener('mousemove', handleMouseMove);
|
|
29
|
+
document.removeEventListener('mouseup', handleMouseUp);
|
|
30
|
+
document.body.style.userSelect = '';
|
|
31
|
+
document.body.style.cursor = '';
|
|
32
|
+
};
|
|
33
|
+
}, [isDragging, onResize, onDragEnd, vertical]);
|
|
34
|
+
return (_jsxs("div", { onMouseDown: handleMouseDown, onDoubleClick: onDoubleClick, className: cn('relative shrink-0 group/resize z-10', vertical ? 'h-0 cursor-row-resize' : 'w-0 cursor-col-resize', className), children: [_jsx("div", { className: cn('absolute', vertical ? 'inset-x-0 -top-[5px] h-[11px]' : 'inset-y-0 -left-[5px] w-[11px]') }), _jsx("div", { className: cn('absolute transition-all duration-150', vertical ? 'inset-x-0 -top-px h-[2px]' : 'inset-y-0 -left-px w-[2px]', isDragging ? 'bg-foreground/25' : '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":";AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAExD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAWrC,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EACX,SAAS,EACT,aAAa,EACb,IAAI,GAAG,GAAG,EACV,SAAS,GACoB;IAC7B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,QAAQ,GAAG,IAAI,KAAK,GAAG,CAAA;IAE7B,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,KAAsB,EAAE,EAAE;QACzB,KAAK,CAAC,cAAc,EAAE,CAAA;QACtB,aAAa,CAAC,IAAI,CAAC,CAAA;QACnB,WAAW,EAAE,EAAE,CAAA;IACjB,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAM;QACR,CAAC;QAED,MAAM,eAAe,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC5C,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACpD,CAAC,CAAA;QAED,MAAM,aAAa,GAAG,GAAG,EAAE;YACzB,aAAa,CAAC,KAAK,CAAC,CAAA;YACpB,SAAS,EAAE,EAAE,CAAA;QACf,CAAC,CAAA;QAED,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;QACvD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QACnD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAA;QACvC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAA;QAEnE,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAA;YAC1D,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;YACtD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAA;YACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAA;QACjC,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE/C,OAAO,CACL,eACE,WAAW,EAAE,eAAe,EAC5B,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,EAAE,CACX,qCAAqC,EACrC,QAAQ,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,EAC5D,SAAS,CACV,aAED,cACE,SAAS,EAAE,EAAE,CACX,UAAU,EACV,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,gCAAgC,CAC9E,GACD,EACF,cACE,SAAS,EAAE,EAAE,CACX,sCAAsC,EACtC,QAAQ,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,4BAA4B,EACrE,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,oDAAoD,CACvF,GACD,IACE,CACP,CAAA;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 SheetContentPropsExternalApi 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 }: SheetContentPropsExternalApi): 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":"AAAA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAEzD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAGnC,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,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE1E;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEzE;AAED,iBAAS,UAAU,CAAC,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAExE;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW1E;AAED,UAAU,4BAA6B,SAAQ,KAAK,CAAC,cAAc,CACjE,OAAO,eAAe,CAAC,OAAO,CAC/B;IACC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,QAAQ,EACR,IAAc,EACd,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,4BAA4B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiClD;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ5F;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,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQxE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ9E;AAED,OAAO,EACL,KAAK,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,GACb,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
3
|
+
import { XIcon } from 'lucide-react';
|
|
4
|
+
import { cn } from '../foundation/cn.js';
|
|
5
|
+
function Sheet({ ...props }) {
|
|
6
|
+
return _jsx(DialogPrimitive.Root, { "data-slot": "sheet", ...props });
|
|
7
|
+
}
|
|
8
|
+
function SheetTrigger({ ...props }) {
|
|
9
|
+
return _jsx(DialogPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
|
|
10
|
+
}
|
|
11
|
+
function SheetPortal({ ...props }) {
|
|
12
|
+
return _jsx(DialogPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
|
|
13
|
+
}
|
|
14
|
+
function SheetClose({ ...props }) {
|
|
15
|
+
return _jsx(DialogPrimitive.Close, { "data-slot": "sheet-close", ...props });
|
|
16
|
+
}
|
|
17
|
+
function SheetOverlay({ className, ...props }) {
|
|
18
|
+
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 }));
|
|
19
|
+
}
|
|
20
|
+
function SheetContent({ className, children, side = 'right', showCloseButton = true, ...props }) {
|
|
21
|
+
const sideStyles = {
|
|
22
|
+
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',
|
|
23
|
+
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',
|
|
24
|
+
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',
|
|
25
|
+
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',
|
|
26
|
+
};
|
|
27
|
+
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" })] }))] })] }));
|
|
28
|
+
}
|
|
29
|
+
function SheetHeader({ className, ...props }) {
|
|
30
|
+
return (_jsx("div", { "data-slot": "sheet-header", className: cn('flex flex-col gap-2 px-6 py-4 border-b border-border', className), ...props }));
|
|
31
|
+
}
|
|
32
|
+
function SheetFooter({ className, ...props }) {
|
|
33
|
+
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 }));
|
|
34
|
+
}
|
|
35
|
+
function SheetTitle({ className, ...props }) {
|
|
36
|
+
return (_jsx(DialogPrimitive.Title, { "data-slot": "sheet-title", className: cn('text-lg font-semibold text-foreground', className), ...props }));
|
|
37
|
+
}
|
|
38
|
+
function SheetDescription({ className, ...props }) {
|
|
39
|
+
return (_jsx(DialogPrimitive.Description, { "data-slot": "sheet-description", className: cn('text-sm text-muted-foreground', className), ...props }));
|
|
40
|
+
}
|
|
41
|
+
export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, };
|
|
42
|
+
//# 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 @@
|
|
|
1
|
+
{"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../src/components/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AACnC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAI3C,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,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from '../foundation/cn.js';
|
|
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":";AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAErC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA8B;IACnE,OAAO,CACL,gCACY,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,qcAAqc,EACrc,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
interface TimeAgoPropsExternalApi {
|
|
3
|
+
date: string | Date;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function TimeAgo({ date, className }: TimeAgoPropsExternalApi): 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":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAoDnC,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,uBAAuB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAoBvF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { DateTime } from 'effect';
|
|
3
|
+
import { useState, useEffect } from 'react';
|
|
4
|
+
const MS_PER_SECOND = 1000;
|
|
5
|
+
const SECONDS_PER_MINUTE = 60;
|
|
6
|
+
const SECONDS_PER_HOUR = 3600;
|
|
7
|
+
const SECONDS_PER_DAY = 86400;
|
|
8
|
+
const SECONDS_PER_WEEK = 604800;
|
|
9
|
+
const SECONDS_PER_MONTH = 2592000;
|
|
10
|
+
const MONTHS_PER_YEAR = 12;
|
|
11
|
+
const REFRESH_INTERVAL_MS = 60_000;
|
|
12
|
+
function timeAgo(date) {
|
|
13
|
+
const now = DateTime.unsafeNow();
|
|
14
|
+
const then = DateTime.unsafeMake(date);
|
|
15
|
+
const seconds = Math.floor((DateTime.toEpochMillis(now) - DateTime.toEpochMillis(then)) / MS_PER_SECOND);
|
|
16
|
+
if (seconds < SECONDS_PER_MINUTE) {
|
|
17
|
+
return 'just now';
|
|
18
|
+
}
|
|
19
|
+
if (seconds < SECONDS_PER_HOUR) {
|
|
20
|
+
return `${Math.floor(seconds / SECONDS_PER_MINUTE)}m ago`;
|
|
21
|
+
}
|
|
22
|
+
if (seconds < SECONDS_PER_DAY) {
|
|
23
|
+
return `${Math.floor(seconds / SECONDS_PER_HOUR)}h ago`;
|
|
24
|
+
}
|
|
25
|
+
if (seconds < SECONDS_PER_WEEK) {
|
|
26
|
+
return `${Math.floor(seconds / SECONDS_PER_DAY)}d ago`;
|
|
27
|
+
}
|
|
28
|
+
if (seconds < SECONDS_PER_MONTH) {
|
|
29
|
+
return `${Math.floor(seconds / SECONDS_PER_WEEK)}w ago`;
|
|
30
|
+
}
|
|
31
|
+
const months = Math.floor(seconds / SECONDS_PER_MONTH);
|
|
32
|
+
if (months < MONTHS_PER_YEAR) {
|
|
33
|
+
return `${months}mo ago`;
|
|
34
|
+
}
|
|
35
|
+
const thenDate = DateTime.toDate(then);
|
|
36
|
+
const sameYear = thenDate.getFullYear() === DateTime.toDate(now).getFullYear();
|
|
37
|
+
if (sameYear) {
|
|
38
|
+
return thenDate.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
|
|
39
|
+
}
|
|
40
|
+
return thenDate.toLocaleDateString('en-US', {
|
|
41
|
+
month: 'short',
|
|
42
|
+
day: 'numeric',
|
|
43
|
+
year: 'numeric',
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export function TimeAgo({ date, className }) {
|
|
47
|
+
const [text, setText] = useState(() => timeAgo(date));
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
setText(timeAgo(date));
|
|
50
|
+
// oxlint-disable-next-line reform-rules/no-set-timeout-interval -- browser-timer seam: periodic relative-time refresh for React, no Effect runtime here
|
|
51
|
+
const interval = setInterval(() => setText(timeAgo(date)), REFRESH_INTERVAL_MS);
|
|
52
|
+
return () => clearInterval(interval);
|
|
53
|
+
}, [date]);
|
|
54
|
+
return (_jsx("time", { dateTime: typeof date === 'string' ? date : date.toISOString(), title: DateTime.toDate(DateTime.unsafeMake(date)).toLocaleString(), className: className, suppressHydrationWarning: true, children: text }));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=time-ago.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-ago.js","sourceRoot":"","sources":["../../src/components/time-ago.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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":"AAAA,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAGnC,iBAAS,eAAe,CAAC,EACvB,aAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ5E;AAED,iBAAS,OAAO,CAAC,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAExE;AAED,iBAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE3E;AAED,iBAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE1E;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAc,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAY3E;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EACT,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,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
3
|
+
import { cn } from '../foundation/cn.js';
|
|
4
|
+
function TooltipProvider({ delayDuration = 300, ...props }) {
|
|
5
|
+
return (_jsx(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delayDuration: delayDuration, ...props }));
|
|
6
|
+
}
|
|
7
|
+
function Tooltip({ ...props }) {
|
|
8
|
+
return _jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props });
|
|
9
|
+
}
|
|
10
|
+
function TooltipTrigger({ ...props }) {
|
|
11
|
+
return _jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
12
|
+
}
|
|
13
|
+
function TooltipPortal({ ...props }) {
|
|
14
|
+
return _jsx(TooltipPrimitive.Portal, { "data-slot": "tooltip-portal", ...props });
|
|
15
|
+
}
|
|
16
|
+
function TooltipContent({ className, sideOffset = 4, ...props }) {
|
|
17
|
+
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 }));
|
|
18
|
+
}
|
|
19
|
+
function TooltipArrow({ className, ...props }) {
|
|
20
|
+
return (_jsx(TooltipPrimitive.Arrow, { "data-slot": "tooltip-arrow", className: cn('fill-background', className), ...props }));
|
|
21
|
+
}
|
|
22
|
+
export { Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger };
|
|
23
|
+
//# sourceMappingURL=tooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAErC,SAAS,eAAe,CAAC,EACvB,aAAa,GAAG,GAAG,EACnB,GAAG,KAAK,EAC+C;IACvD,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,iBACd,kBAAkB,EAC5B,aAAa,EAAE,aAAa,KACxB,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,EACf,GAAG,KAAK,EAC2C;IACnD,OAAO,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,CAAA;AACjE,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EAC8C;IACtD,OAAO,KAAC,gBAAgB,CAAC,OAAO,iBAAW,iBAAiB,KAAK,KAAK,GAAI,CAAA;AAC5E,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EAC6C;IACrD,OAAO,KAAC,gBAAgB,CAAC,MAAM,iBAAW,gBAAgB,KAAK,KAAK,GAAI,CAAA;AAC1E,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAU,GAAG,CAAC,EACd,GAAG,KAAK,EAC8C;IACtD,OAAO,CACL,KAAC,gBAAgB,CAAC,OAAO,iBACb,iBAAiB,EAC3B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACX,uYAAuY,EACvY,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EACpB,SAAS,EACT,GAAG,KAAK,EAC4C;IACpD,OAAO,CACL,KAAC,gBAAgB,CAAC,KAAK,iBACX,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,KACvC,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -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;AAI5C,eAAO,MAAM,EAAE,GAAI,GAAG,QAAQ,UAAU,EAAE,KAAG,MAA+B,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { clsx } from 'clsx';
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
// oxlint-disable-next-line reform-rules/min-var-name -- `cn` is the canonical shadcn/Tailwind class-merge helper, a public export consumed across the monorepo
|
|
4
|
+
export const cn = (...inputs) => twMerge(clsx(inputs));
|
|
5
|
+
//# 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,+JAA+J;AAC/J,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAoB,EAAU,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export * from './components/agent-icon.js';
|
|
2
|
+
export * from './components/autocomplete.js';
|
|
3
|
+
export * from './components/badge.js';
|
|
4
|
+
export * from './components/button.js';
|
|
5
|
+
export * from './components/combobox.js';
|
|
6
|
+
export * from './components/command.js';
|
|
7
|
+
export * from './components/dialog.js';
|
|
8
|
+
export * from './components/dropdown-menu.js';
|
|
9
|
+
export * from './components/github-background.js';
|
|
10
|
+
export * from './components/halftone-background.js';
|
|
11
|
+
export * from './components/input.js';
|
|
12
|
+
export * from './components/input-group.js';
|
|
13
|
+
export * from './components/live-duration.js';
|
|
14
|
+
export * from './components/logo.js';
|
|
15
|
+
export * from './components/popover.js';
|
|
16
|
+
export * from './components/resize-handle.js';
|
|
17
|
+
export * from './components/sheet.js';
|
|
18
|
+
export * from './components/textarea.js';
|
|
19
|
+
export * from './components/time-ago.js';
|
|
20
|
+
export * from './components/tooltip.js';
|
|
21
|
+
export { cn } from './foundation/cn.js';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AAEpC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export * from './components/agent-icon.js';
|
|
2
|
+
export * from './components/autocomplete.js';
|
|
3
|
+
export * from './components/badge.js';
|
|
4
|
+
export * from './components/button.js';
|
|
5
|
+
export * from './components/combobox.js';
|
|
6
|
+
export * from './components/command.js';
|
|
7
|
+
export * from './components/dialog.js';
|
|
8
|
+
export * from './components/dropdown-menu.js';
|
|
9
|
+
export * from './components/github-background.js';
|
|
10
|
+
export * from './components/halftone-background.js';
|
|
11
|
+
export * from './components/input.js';
|
|
12
|
+
export * from './components/input-group.js';
|
|
13
|
+
export * from './components/live-duration.js';
|
|
14
|
+
export * from './components/logo.js';
|
|
15
|
+
export * from './components/popover.js';
|
|
16
|
+
export * from './components/resize-handle.js';
|
|
17
|
+
export * from './components/sheet.js';
|
|
18
|
+
export * from './components/textarea.js';
|
|
19
|
+
export * from './components/time-ago.js';
|
|
20
|
+
export * from './components/tooltip.js';
|
|
21
|
+
export { cn } from './foundation/cn.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,2BAA2B,CAAA;AACzC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,oBAAoB,CAAA;AAClC,cAAc,0BAA0B,CAAA;AACxC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AAEpC,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA"}
|