@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.
Files changed (117) hide show
  1. package/README.md +9 -9
  2. package/dist/components/agent-icon.d.ts +7 -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/autocomplete.d.ts +20 -0
  7. package/dist/components/autocomplete.d.ts.map +1 -0
  8. package/dist/components/autocomplete.js +81 -0
  9. package/dist/components/autocomplete.js.map +1 -0
  10. package/dist/components/badge.d.ts +13 -0
  11. package/dist/components/badge.d.ts.map +1 -0
  12. package/dist/components/badge.js +26 -0
  13. package/dist/components/badge.js.map +1 -0
  14. package/dist/components/button.d.ts +14 -0
  15. package/dist/components/button.d.ts.map +1 -0
  16. package/dist/components/button.js +32 -0
  17. package/dist/components/button.js.map +1 -0
  18. package/dist/components/combobox.d.ts +28 -0
  19. package/dist/components/combobox.d.ts.map +1 -0
  20. package/dist/components/combobox.js +58 -0
  21. package/dist/components/combobox.js.map +1 -0
  22. package/dist/components/command.d.ts +20 -0
  23. package/dist/components/command.d.ts.map +1 -0
  24. package/dist/components/command.js +34 -0
  25. package/dist/components/command.js.map +1 -0
  26. package/dist/components/dialog.d.ts +17 -0
  27. package/dist/components/dialog.d.ts.map +1 -0
  28. package/dist/components/dialog.js +36 -0
  29. package/dist/components/dialog.js.map +1 -0
  30. package/dist/components/dropdown-menu.d.ts +19 -0
  31. package/dist/components/dropdown-menu.d.ts.map +1 -0
  32. package/dist/components/dropdown-menu.js +33 -0
  33. package/dist/components/dropdown-menu.js.map +1 -0
  34. package/dist/components/github-background.d.ts +3 -0
  35. package/dist/components/github-background.d.ts.map +1 -0
  36. package/dist/components/github-background.js +99 -0
  37. package/dist/components/github-background.js.map +1 -0
  38. package/dist/components/halftone-background.d.ts +3 -0
  39. package/dist/components/halftone-background.d.ts.map +1 -0
  40. package/dist/components/halftone-background.js +247 -0
  41. package/dist/components/halftone-background.js.map +1 -0
  42. package/dist/components/halftone-config.d.ts +12 -0
  43. package/dist/components/halftone-config.d.ts.map +1 -0
  44. package/dist/components/halftone-config.js +12 -0
  45. package/dist/components/halftone-config.js.map +1 -0
  46. package/dist/components/input-group.d.ts +21 -0
  47. package/dist/components/input-group.d.ts.map +1 -0
  48. package/dist/components/input-group.js +58 -0
  49. package/dist/components/input-group.js.map +1 -0
  50. package/dist/components/input.d.ts +5 -0
  51. package/dist/components/input.d.ts.map +1 -0
  52. package/dist/components/input.js +7 -0
  53. package/dist/components/input.js.map +1 -0
  54. package/dist/components/live-duration.d.ts +9 -0
  55. package/dist/components/live-duration.d.ts.map +1 -0
  56. package/dist/components/live-duration.js +64 -0
  57. package/dist/components/live-duration.js.map +1 -0
  58. package/dist/components/logo.d.ts +8 -0
  59. package/dist/components/logo.d.ts.map +1 -0
  60. package/dist/components/logo.js +9 -0
  61. package/dist/components/logo.js.map +1 -0
  62. package/dist/components/popover.d.ts +12 -0
  63. package/dist/components/popover.d.ts.map +1 -0
  64. package/dist/components/popover.js +30 -0
  65. package/dist/components/popover.js.map +1 -0
  66. package/dist/components/resize-handle.d.ts +12 -0
  67. package/dist/components/resize-handle.d.ts.map +1 -0
  68. package/dist/components/resize-handle.js +36 -0
  69. package/dist/components/resize-handle.js.map +1 -0
  70. package/dist/components/sheet.d.ts +18 -0
  71. package/dist/components/sheet.d.ts.map +1 -0
  72. package/dist/components/sheet.js +42 -0
  73. package/dist/components/sheet.js.map +1 -0
  74. package/dist/components/textarea.d.ts +5 -0
  75. package/dist/components/textarea.d.ts.map +1 -0
  76. package/dist/components/textarea.js +7 -0
  77. package/dist/components/textarea.js.map +1 -0
  78. package/dist/components/time-ago.d.ts +8 -0
  79. package/dist/components/time-ago.d.ts.map +1 -0
  80. package/dist/components/time-ago.js +56 -0
  81. package/dist/components/time-ago.js.map +1 -0
  82. package/dist/components/tooltip.d.ts +10 -0
  83. package/dist/components/tooltip.d.ts.map +1 -0
  84. package/dist/components/tooltip.js +23 -0
  85. package/dist/components/tooltip.js.map +1 -0
  86. package/dist/foundation/cn.d.ts +3 -0
  87. package/dist/foundation/cn.d.ts.map +1 -0
  88. package/dist/foundation/cn.js +5 -0
  89. package/dist/foundation/cn.js.map +1 -0
  90. package/dist/index.d.ts +22 -0
  91. package/dist/index.d.ts.map +1 -0
  92. package/dist/index.js +22 -0
  93. package/dist/index.js.map +1 -0
  94. package/package.json +39 -27
  95. package/src/components/agent-icon.tsx +16 -16
  96. package/src/components/autocomplete.tsx +166 -162
  97. package/src/components/badge.tsx +46 -45
  98. package/src/components/button.tsx +56 -63
  99. package/src/components/combobox.tsx +233 -228
  100. package/src/components/command.tsx +135 -139
  101. package/src/components/dialog.tsx +106 -98
  102. package/src/components/dropdown-menu.tsx +118 -115
  103. package/src/components/github-background.tsx +214 -216
  104. package/src/components/halftone-background.tsx +164 -155
  105. package/src/components/halftone-config.ts +8 -8
  106. package/src/components/input-group.tsx +149 -147
  107. package/src/components/input.tsx +17 -17
  108. package/src/components/live-duration.tsx +70 -64
  109. package/src/components/logo.tsx +9 -13
  110. package/src/components/popover.tsx +60 -62
  111. package/src/components/resize-handle.tsx +73 -75
  112. package/src/components/sheet.tsx +120 -112
  113. package/src/components/textarea.tsx +15 -15
  114. package/src/components/time-ago.tsx +64 -62
  115. package/src/components/tooltip.tsx +48 -42
  116. package/src/foundation/styles.css +6 -4
  117. 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":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE3C,MAAM,aAAa,GAAG,IAAI,CAAA;AAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAC7B,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAC7B,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAO7B,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,WAAW,EAAkC;IAChF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IAC5C,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;IACjF,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC7E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC,CAAA;IACvE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,gBAAgB,CAAC,CAAA;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,gBAAgB,CAAC,GAAG,kBAAkB,CAAC,CAAA;IAClF,MAAM,OAAO,GAAG,YAAY,GAAG,kBAAkB,CAAA;IACjD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,CAAA;IAChC,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAA;IAClC,CAAC;IACD,OAAO,GAAG,OAAO,GAAG,CAAA;AACtB,CAAC;AAED,gEAAgE;AAChE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;AACvC,MAAM,SAAS,GAAkE;IAC/E,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;CAC1B,CAAA;AAED,SAAS,iBAAiB,CAAC,QAAoB;IAC7C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvB,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI;QAChC,8IAA8I;QAC9I,WAAW,CAAC,GAAG,EAAE;YACf,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACjC,CAAC,EAAE,gBAAgB,CAAC,CACrB,CAAA;IACH,CAAC;IACD,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1B,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAChE,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;YACzC,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;QACtC,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAQD,MAAM,UAAU,YAAY,CAAC,EAC3B,SAAS,EACT,WAAW,EACX,SAAS,GACoB;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAE/B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACtC,OAAM;QACR,CAAC;QACD,OAAO,CAAC,CAAC,CAAC,CAAA;QACV,OAAO,iBAAiB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;IAC7D,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAA;IAE5B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC,CAAA;IAEjF,OAAO,CACL,eAAM,SAAS,EAAE,SAAS,EAAE,wBAAwB,kBACjD,SAAS,GACL,CACR,CAAA;AACH,CAAC"}
@@ -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,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":"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,3 @@
1
+ import { type ClassValue } from 'clsx';
2
+ export declare const cn: (...inputs: ClassValue[]) => string;
3
+ //# 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;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"}
@@ -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"}