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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +115 -0
  2. package/dist/components/agent-icon.d.ts +5 -0
  3. package/dist/components/agent-icon.d.ts.map +1 -0
  4. package/dist/components/agent-icon.js +5 -0
  5. package/dist/components/agent-icon.js.map +1 -0
  6. package/dist/components/badge.d.ts +11 -0
  7. package/dist/components/badge.d.ts.map +1 -0
  8. package/dist/components/badge.js +28 -0
  9. package/dist/components/badge.js.map +1 -0
  10. package/dist/components/button.d.ts +12 -0
  11. package/dist/components/button.d.ts.map +1 -0
  12. package/dist/components/button.js +34 -0
  13. package/dist/components/button.js.map +1 -0
  14. package/dist/components/combobox.d.ts +25 -0
  15. package/dist/components/combobox.d.ts.map +1 -0
  16. package/dist/components/combobox.js +60 -0
  17. package/dist/components/combobox.js.map +1 -0
  18. package/dist/components/command.d.ts +19 -0
  19. package/dist/components/command.d.ts.map +1 -0
  20. package/dist/components/command.js +36 -0
  21. package/dist/components/command.js.map +1 -0
  22. package/dist/components/dialog.d.ts +16 -0
  23. package/dist/components/dialog.d.ts.map +1 -0
  24. package/dist/components/dialog.js +38 -0
  25. package/dist/components/dialog.js.map +1 -0
  26. package/dist/components/dropdown-menu.d.ts +17 -0
  27. package/dist/components/dropdown-menu.d.ts.map +1 -0
  28. package/dist/components/dropdown-menu.js +35 -0
  29. package/dist/components/dropdown-menu.js.map +1 -0
  30. package/dist/components/github-background.d.ts +3 -0
  31. package/dist/components/github-background.d.ts.map +1 -0
  32. package/dist/components/github-background.js +51 -0
  33. package/dist/components/github-background.js.map +1 -0
  34. package/dist/components/halftone-background.d.ts +3 -0
  35. package/dist/components/halftone-background.d.ts.map +1 -0
  36. package/dist/components/halftone-background.js +248 -0
  37. package/dist/components/halftone-background.js.map +1 -0
  38. package/dist/components/input-group.d.ts +19 -0
  39. package/dist/components/input-group.d.ts.map +1 -0
  40. package/dist/components/input-group.js +63 -0
  41. package/dist/components/input-group.js.map +1 -0
  42. package/dist/components/input.d.ts +5 -0
  43. package/dist/components/input.d.ts.map +1 -0
  44. package/dist/components/input.js +7 -0
  45. package/dist/components/input.js.map +1 -0
  46. package/dist/components/live-duration.d.ts +9 -0
  47. package/dist/components/live-duration.d.ts.map +1 -0
  48. package/dist/components/live-duration.js +55 -0
  49. package/dist/components/live-duration.js.map +1 -0
  50. package/dist/components/logo.d.ts +8 -0
  51. package/dist/components/logo.d.ts.map +1 -0
  52. package/dist/components/logo.js +9 -0
  53. package/dist/components/logo.js.map +1 -0
  54. package/dist/components/popover.d.ts +12 -0
  55. package/dist/components/popover.d.ts.map +1 -0
  56. package/dist/components/popover.js +26 -0
  57. package/dist/components/popover.js.map +1 -0
  58. package/dist/components/resize-handle.d.ts +15 -0
  59. package/dist/components/resize-handle.d.ts.map +1 -0
  60. package/dist/components/resize-handle.js +36 -0
  61. package/dist/components/resize-handle.js.map +1 -0
  62. package/dist/components/sheet.d.ts +18 -0
  63. package/dist/components/sheet.d.ts.map +1 -0
  64. package/dist/components/sheet.js +44 -0
  65. package/dist/components/sheet.js.map +1 -0
  66. package/dist/components/textarea.d.ts +5 -0
  67. package/dist/components/textarea.d.ts.map +1 -0
  68. package/dist/components/textarea.js +7 -0
  69. package/dist/components/textarea.js.map +1 -0
  70. package/dist/components/time-ago.d.ts +8 -0
  71. package/dist/components/time-ago.d.ts.map +1 -0
  72. package/dist/components/time-ago.js +40 -0
  73. package/dist/components/time-ago.js.map +1 -0
  74. package/dist/components/tooltip.d.ts +10 -0
  75. package/dist/components/tooltip.d.ts.map +1 -0
  76. package/dist/components/tooltip.js +25 -0
  77. package/dist/components/tooltip.js.map +1 -0
  78. package/dist/foundation/cn.d.ts +7 -0
  79. package/dist/foundation/cn.d.ts.map +1 -0
  80. package/dist/foundation/cn.js +8 -0
  81. package/dist/foundation/cn.js.map +1 -0
  82. package/dist/index.d.ts +21 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +24 -0
  85. package/dist/index.js.map +1 -0
  86. package/package.json +72 -0
package/README.md ADDED
@@ -0,0 +1,115 @@
1
+ <div align="center">
2
+
3
+ # `@playfast/better-hub-ui-primitives`
4
+
5
+ **React UI primitives — buttons, badges, dialogs, inputs, popovers, a command palette, and friends — adapted from better-hub by Better Auth.**
6
+
7
+ </div>
8
+
9
+ ---
10
+
11
+ Plain React components (not Reform `Ui` contracts), so any view — including Reform
12
+ `Ui.make` presentations — can import and compose them directly. Style is shadcn/ui
13
+ "new-york" on Tailwind CSS v4, "Midnight" dark theme, Lucide icons, Radix UI
14
+ primitives.
15
+
16
+ ```tsx
17
+ import '@playfast/reform-better-hub-ui-primitives/styles.css' // design tokens + base
18
+ import { Button, Badge } from '@playfast/reform-better-hub-ui-primitives'
19
+
20
+ const Toolbar = () => (
21
+ <Button variant="outline" size="sm">
22
+ Start environment <Badge>new</Badge>
23
+ </Button>
24
+ )
25
+ ```
26
+
27
+ Docs: [playbook/api.doc.md](./playbook/api.doc.md).
28
+
29
+ > ## Full credit
30
+ >
31
+ > The visual language, design tokens, and component styling here are **adapted from
32
+ > better-hub** by Better Auth: **https://github.com/better-auth/better-hub**
33
+ > (`apps/web/src/components/ui/*`, `apps/web/src/app/globals.css`,
34
+ > `apps/web/src/lib/utils.ts`). **All design credit belongs to Better Auth.**
35
+
36
+ ## Install
37
+
38
+ ```sh
39
+ bun add @playfast/better-hub-ui-primitives
40
+ # peers: react, react-dom (^19)
41
+ ```
42
+
43
+ Tailwind CSS v4 must process this package's class names in the consuming app (the
44
+ source files are scanned automatically by `@tailwindcss/vite`). Import the
45
+ stylesheet once at your app root:
46
+
47
+ ```ts
48
+ import '@playfast/reform-better-hub-ui-primitives/styles.css'
49
+ ```
50
+
51
+ ## Quick Start
52
+
53
+ ```tsx
54
+ import {
55
+ Button,
56
+ Dialog,
57
+ DialogContent,
58
+ DialogTrigger,
59
+ Input,
60
+ cn,
61
+ } from '@playfast/reform-better-hub-ui-primitives'
62
+
63
+ const Example = () => (
64
+ <Dialog>
65
+ <DialogTrigger asChild>
66
+ <Button>Open</Button>
67
+ </DialogTrigger>
68
+ <DialogContent>
69
+ <Input placeholder="Name…" className={cn('w-full')} />
70
+ </DialogContent>
71
+ </Dialog>
72
+ )
73
+ ```
74
+
75
+ ## Key Concepts
76
+
77
+ | Concept | What it is |
78
+ | ---------------------- | --------------------------------------------------------------------------------------------- |
79
+ | Form & action | `Button` (+ `buttonVariants`), `Input`, `Textarea`, `InputGroup`, `Badge` (+ `badgeVariants`) |
80
+ | Overlays | `Dialog`, `Sheet`, `Popover`, `Tooltip`, `DropdownMenu` (Radix-backed, compound parts) |
81
+ | Command palette | `Command` (cmdk) + `Combobox` |
82
+ | Branding & background | `Logo` / `LogoMark`, `AgentIcon`, `GitHubBackground`, `HalftoneBackground` |
83
+ | Live time | `LiveDuration`, `TimeAgo` (self-ticking displays) |
84
+ | Layout | `ResizeHandle` |
85
+ | Class utility | `cn(...)` — `clsx` + `tailwind-merge` |
86
+
87
+ Each overlay follows the Radix compound pattern (`Dialog` + `DialogTrigger` +
88
+ `DialogContent`, etc.); `variant`/`size` props are driven by
89
+ `class-variance-authority`.
90
+
91
+ ## License
92
+
93
+ This package is MIT-licensed. better-hub is also MIT-licensed:
94
+
95
+ ```
96
+ MIT License — Copyright (c) 2026 Better Auth
97
+
98
+ Permission is hereby granted, free of charge, to any person obtaining a copy
99
+ of this software and associated documentation files (the "Software"), to deal
100
+ in the Software without restriction, including without limitation the rights
101
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
102
+ copies of the Software, and to permit persons to whom the Software is
103
+ furnished to do so, subject to the following conditions:
104
+
105
+ The above copyright notice and this permission notice shall be included in all
106
+ copies or substantial portions of the Software.
107
+
108
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
109
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
110
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
111
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
112
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
113
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
114
+ SOFTWARE.
115
+ ```
@@ -0,0 +1,5 @@
1
+ import type * as React from "react";
2
+ export declare function AgentIcon({ className }: {
3
+ className?: string;
4
+ }): React.JSX.Element;
5
+ //# sourceMappingURL=agent-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-icon.d.ts","sourceRoot":"","sources":["../../src/components/agent-icon.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAelF"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export function AgentIcon({ className }) {
3
+ return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 28 28", className: className, children: _jsx("path", { fill: "currentColor", d: "M10.06 18.701a1.628 1.628 0 0 0 2.43-.676l.77-2.34a3.82 3.82 0 0 1 2.416-2.418l2.238-.727a1.6 1.6 0 0 0 .786-.595a1.62 1.62 0 0 0-.849-2.489l-2.215-.72a3.82 3.82 0 0 1-2.42-2.414l-.727-2.237a1.62 1.62 0 0 0-.594-.785a1.655 1.655 0 0 0-1.879 0a1.63 1.63 0 0 0-.6.8L8.68 6.365a3.82 3.82 0 0 1-2.359 2.37l-2.24.726a1.626 1.626 0 0 0 .02 3.073l2.216.72a3.86 3.86 0 0 1 1.816 1.286c.266.343.471.728.606 1.14l.728 2.234c.112.318.32.593.595.787m-3.273-6.873l-2.22-.72s-.085-.038-.085-.108a.14.14 0 0 1 .084-.115L6.8 10.16a5.34 5.34 0 0 0 3.32-3.375l.721-2.219s.043-.084.114-.084s.113.084.113.084l.723 2.223a5.32 5.32 0 0 0 3.377 3.372l2.27.735a.13.13 0 0 1 .078.11a.15.15 0 0 1-.083.113l-2.225.722a5.32 5.32 0 0 0-3.374 3.374l-.715 2.2a.11.11 0 0 1-.115.093c-.104 0-.118-.075-.118-.075l-.723-2.22a5.32 5.32 0 0 0-3.376-3.385m13.017 12.954A1.2 1.2 0 0 0 20.5 25a1.2 1.2 0 0 0 .692-.216a1.2 1.2 0 0 0 .446-.6l.372-1.143a1.61 1.61 0 0 1 1.017-1.02l1.166-.378A1.21 1.21 0 0 0 25 20.505a1.2 1.2 0 0 0-.844-1.146l-1.144-.37a1.61 1.61 0 0 1-1.02-1.018l-.38-1.163a1.2 1.2 0 0 0-2.274.016l-.374 1.146a1.61 1.61 0 0 1-.993 1.017l-1.166.378a1.21 1.21 0 0 0-.807 1.139a1.2 1.2 0 0 0 .823 1.138l1.144.372a1.6 1.6 0 0 1 1.02 1.023l.379 1.163a1.2 1.2 0 0 0 .44.582m-1.371-4.194l-.27-.088l.283-.096a3.12 3.12 0 0 0 1.943-1.974l.088-.27l.089.272a3.11 3.11 0 0 0 1.974 1.975l.293.1l-.271.087a3.12 3.12 0 0 0-1.974 1.977l-.088.27l-.088-.272a3.12 3.12 0 0 0-1.98-1.98" }) }));
4
+ }
5
+ //# sourceMappingURL=agent-icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-icon.js","sourceRoot":"","sources":["../../src/components/agent-icon.tsx"],"names":[],"mappings":";AAKA,MAAM,UAAU,SAAS,CAAC,EAAE,SAAS,EAA0B;IAC9D,OAAO,CACN,cACC,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,KAAK,EACX,MAAM,EAAC,KAAK,EACZ,OAAO,EAAC,WAAW,EACnB,SAAS,EAAE,SAAS,YAEpB,eACC,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,k6CAAk6C,GACn6C,GACG,CACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ import type { ClassProp } from "class-variance-authority/types";
4
+ declare const badgeVariants: (props?: ({
5
+ variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | null | undefined;
6
+ } & ClassProp) | undefined) => string;
7
+ declare function Badge({ className, variant, asChild, ...props }: React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
8
+ asChild?: boolean;
9
+ }): React.JSX.Element;
10
+ export { Badge, badgeVariants };
11
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/components/badge.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAKhE,QAAA,MAAM,aAAa,EAAE,CACpB,KAAK,CAAC,EACH,CAAC;IACD,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACnG,GAAG,SAAS,CAAC,GACd,SAAS,KACR,MAkBJ,CAAC;AAEF,iBAAS,KAAK,CAAC,EACd,SAAS,EACT,OAAmB,EACnB,OAAe,EACf,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW/G;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Adapted from better-hub by Better Auth — https://github.com/better-auth/better-hub
3
+ // (apps/web/src/components/ui/badge.tsx). Full credit to the Better Auth team.
4
+ import * as React from "react";
5
+ import { cva } from "class-variance-authority";
6
+ import { Slot } from "radix-ui";
7
+ import { cn } from "../foundation/cn";
8
+ const badgeVariants = cva("inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3", {
9
+ variants: {
10
+ variant: {
11
+ default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
12
+ secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
13
+ destructive: "bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90",
14
+ outline: "border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
15
+ ghost: "[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
16
+ link: "text-primary underline-offset-4 [a&]:hover:underline",
17
+ },
18
+ },
19
+ defaultVariants: {
20
+ variant: "default",
21
+ },
22
+ });
23
+ function Badge({ className, variant = "default", asChild = false, ...props }) {
24
+ const Comp = asChild ? Slot.Root : "span";
25
+ return (_jsx(Comp, { "data-slot": "badge", "data-variant": variant, className: cn(badgeVariants({ variant }), className), ...props }));
26
+ }
27
+ export { Badge, badgeVariants };
28
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/components/badge.tsx"],"names":[],"mappings":";AAAA,qFAAqF;AACrF,+EAA+E;AAC/E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,MAAM,aAAa,GAML,GAAG,CAChB,qaAAqa,EACra;IACC,QAAQ,EAAE;QACT,OAAO,EAAE;YACR,OAAO,EAAE,6DAA6D;YACtE,SAAS,EAAE,mEAAmE;YAC9E,WAAW,EACV,wJAAwJ;YACzJ,OAAO,EAAE,sFAAsF;YAC/F,KAAK,EAAE,wDAAwD;YAC/D,IAAI,EAAE,sDAAsD;SAC5D;KACD;IACD,eAAe,EAAE;QAChB,OAAO,EAAE,SAAS;KAClB;CACD,CACD,CAAC;AAEF,SAAS,KAAK,CAAC,EACd,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,OAAO,GAAG,KAAK,EACf,GAAG,KAAK,EACmF;IAC3F,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAE1C,OAAO,CACN,KAAC,IAAI,iBACM,OAAO,kBACH,OAAO,EACrB,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAChD,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { VariantProps } from "class-variance-authority";
2
+ import type { ClassProp } from "class-variance-authority/types";
3
+ import type * as React from "react";
4
+ declare const buttonVariants: (props?: ({
5
+ variant?: "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | null | undefined;
6
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
7
+ } & ClassProp) | undefined) => string;
8
+ declare function Button({ className, variant, size, asChild, ...props }: React.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
9
+ asChild?: boolean;
10
+ }): React.JSX.Element;
11
+ export { Button, buttonVariants };
12
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,QAAA,MAAM,cAAc,EAAE,CACrB,KAAK,CAAC,EACH,CAAC;IACD,OAAO,CAAC,EACL,SAAS,GACT,aAAa,GACb,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,GACN,IAAI,GACJ,SAAS,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAC1D,GAAG,SAAS,CAAC,GACd,SAAS,KACR,MAyBJ,CAAC;AAEF,iBAAS,MAAM,CAAC,EACf,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAChC,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CASrB;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // Adapted from better-hub by Better Auth — https://github.com/better-auth/better-hub
3
+ // (apps/web/src/components/ui/button.tsx). Full credit to the Better Auth team.
4
+ import { Slot } from "@radix-ui/react-slot";
5
+ import { cva } from "class-variance-authority";
6
+ import { cn } from "../foundation/cn";
7
+ const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", {
8
+ variants: {
9
+ variant: {
10
+ default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
11
+ destructive: "bg-destructive text-white shadow-xs hover:bg-destructive/90",
12
+ outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
13
+ secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
14
+ ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
15
+ link: "text-primary underline-offset-4 hover:underline",
16
+ },
17
+ size: {
18
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
19
+ sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
20
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
21
+ icon: "size-9",
22
+ },
23
+ },
24
+ defaultVariants: {
25
+ variant: "default",
26
+ size: "default",
27
+ },
28
+ });
29
+ function Button({ className, variant, size, asChild = false, ...props }) {
30
+ const Comp = asChild ? Slot : "button";
31
+ return (_jsx(Comp, { "data-slot": "button", className: cn(buttonVariants({ variant, size, className })), ...props }));
32
+ }
33
+ export { Button, buttonVariants };
34
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":";AAAA,qFAAqF;AACrF,gFAAgF;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAG/C,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,MAAM,cAAc,GAeN,GAAG,CAChB,sVAAsV,EACtV;IACC,QAAQ,EAAE;QACT,OAAO,EAAE;YACR,OAAO,EAAE,kEAAkE;YAC3E,WAAW,EACV,6DAA6D;YAC9D,OAAO,EAAE,uIAAuI;YAChJ,SAAS,EAAE,wEAAwE;YACnF,KAAK,EAAE,sEAAsE;YAC7E,IAAI,EAAE,iDAAiD;SACvD;QACD,IAAI,EAAE;YACL,OAAO,EAAE,+BAA+B;YACxC,EAAE,EAAE,+CAA+C;YACnD,EAAE,EAAE,sCAAsC;YAC1C,IAAI,EAAE,QAAQ;SACd;KACD;IACD,eAAe,EAAE;QAChB,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KACf;CACD,CACD,CAAC;AAEF,SAAS,MAAM,CAAC,EACf,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAO,GAAG,KAAK,EACf,GAAG,KAAK,EAIP;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvC,OAAO,CACN,KAAC,IAAI,iBACM,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KACvD,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+ import { Combobox as ComboboxPrimitive } from '@base-ui/react';
3
+ declare const Combobox: typeof ComboboxPrimitive.Root;
4
+ declare function ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props): React.JSX.Element;
5
+ declare function ComboboxTrigger({ className, children, ...props }: ComboboxPrimitive.Trigger.Props): React.JSX.Element;
6
+ declare function ComboboxInput({ className, children, disabled, showTrigger, showClear, ...props }: ComboboxPrimitive.Input.Props & {
7
+ showTrigger?: boolean;
8
+ showClear?: boolean;
9
+ }): React.JSX.Element;
10
+ declare function ComboboxContent({ className, side, sideOffset, align, alignOffset, anchor, ...props }: ComboboxPrimitive.Popup.Props & Pick<ComboboxPrimitive.Positioner.Props, 'side' | 'align' | 'sideOffset' | 'alignOffset' | 'anchor'>): React.JSX.Element;
11
+ declare function ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props): React.JSX.Element;
12
+ declare function ComboboxItem({ className, children, ...props }: ComboboxPrimitive.Item.Props): React.JSX.Element;
13
+ declare function ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props): React.JSX.Element;
14
+ declare function ComboboxLabel({ className, ...props }: ComboboxPrimitive.GroupLabel.Props): React.JSX.Element;
15
+ declare function ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props): React.JSX.Element;
16
+ declare function ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props): React.JSX.Element;
17
+ declare function ComboboxSeparator({ className, ...props }: ComboboxPrimitive.Separator.Props): React.JSX.Element;
18
+ declare function ComboboxChips({ className, ...props }: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> & ComboboxPrimitive.Chips.Props): React.JSX.Element;
19
+ declare function ComboboxChip({ className, children, showRemove, ...props }: ComboboxPrimitive.Chip.Props & {
20
+ showRemove?: boolean;
21
+ }): React.JSX.Element;
22
+ declare function ComboboxChipsInput({ className, children, ...props }: ComboboxPrimitive.Input.Props): React.JSX.Element;
23
+ declare function useComboboxAnchor(): React.RefObject<HTMLDivElement | null>;
24
+ export { Combobox, ComboboxInput, ComboboxContent, ComboboxList, ComboboxItem, ComboboxGroup, ComboboxLabel, ComboboxCollection, ComboboxEmpty, ComboboxSeparator, ComboboxChips, ComboboxChip, ComboboxChipsInput, ComboboxTrigger, ComboboxValue, useComboboxAnchor, };
25
+ //# sourceMappingURL=combobox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Adapted from better-hub by Better Auth — https://github.com/better-auth/better-hub
3
+ // (apps/web/src/components/ui/combobox.tsx). Full credit to the Better Auth team.
4
+ import * as React from 'react';
5
+ import { Combobox as ComboboxPrimitive } from '@base-ui/react';
6
+ import { CheckIcon, ChevronDownIcon, XIcon } from 'lucide-react';
7
+ import { cn } from '../foundation/cn';
8
+ import { Button } from './button';
9
+ import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, } from './input-group';
10
+ const Combobox = ComboboxPrimitive.Root;
11
+ function ComboboxValue({ ...props }) {
12
+ return _jsx(ComboboxPrimitive.Value, { "data-slot": "combobox-value", ...props });
13
+ }
14
+ function ComboboxTrigger({ className, children, ...props }) {
15
+ return (_jsxs(ComboboxPrimitive.Trigger, { "data-slot": "combobox-trigger", className: cn("[&_svg:not([class*='size-'])]:size-4", className), ...props, children: [children, _jsx(ChevronDownIcon, { "data-slot": "combobox-trigger-icon", className: "pointer-events-none size-4 text-muted-foreground" })] }));
16
+ }
17
+ function ComboboxClear({ className, ...props }) {
18
+ return (_jsx(ComboboxPrimitive.Clear, { "data-slot": "combobox-clear", render: _jsx(InputGroupButton, { variant: "ghost", size: "icon-xs" }), className: cn(className), ...props, children: _jsx(XIcon, { className: "pointer-events-none" }) }));
19
+ }
20
+ function ComboboxInput({ className, children, disabled = false, showTrigger = true, showClear = false, ...props }) {
21
+ return (_jsxs(InputGroup, { className: cn('w-auto', className), children: [_jsx(ComboboxPrimitive.Input, { render: _jsx(InputGroupInput, { disabled: disabled }), ...props }), _jsxs(InputGroupAddon, { align: "inline-end", children: [showTrigger && (_jsx(InputGroupButton, { size: "icon-xs", variant: "ghost", asChild: true, "data-slot": "input-group-button", className: "group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent", disabled: disabled, children: _jsx(ComboboxTrigger, {}) })), showClear && _jsx(ComboboxClear, { disabled: disabled })] }), children] }));
22
+ }
23
+ function ComboboxContent({ className, side = 'bottom', sideOffset = 6, align = 'start', alignOffset = 0, anchor, ...props }) {
24
+ return (_jsx(ComboboxPrimitive.Portal, { children: _jsx(ComboboxPrimitive.Positioner, { side: side, sideOffset: sideOffset, align: align, alignOffset: alignOffset, anchor: anchor, className: "isolate z-50", children: _jsx(ComboboxPrimitive.Popup, { "data-slot": "combobox-content", "data-chips": !!anchor, className: cn("group/combobox-content relative max-h-96 w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-card text-card-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[chips=true]:min-w-(--anchor-width) 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-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-8 *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-none data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props }) }) }));
25
+ }
26
+ function ComboboxList({ className, ...props }) {
27
+ return (_jsx(ComboboxPrimitive.List, { "data-slot": "combobox-list", className: cn('max-h-[min(calc(--spacing(96)---spacing(9)),calc(var(--available-height)---spacing(9)))] scroll-py-1 overflow-y-auto p-1 data-empty:p-0', className), ...props }));
28
+ }
29
+ function ComboboxItem({ className, children, ...props }) {
30
+ return (_jsxs(ComboboxPrimitive.Item, { "data-slot": "combobox-item", className: cn("relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-highlighted:bg-accent data-highlighted:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [children, _jsx(ComboboxPrimitive.ItemIndicator, { "data-slot": "combobox-item-indicator", render: _jsx("span", { className: "pointer-events-none absolute right-2 flex size-4 items-center justify-center" }), children: _jsx(CheckIcon, { className: "pointer-events-none size-4 pointer-coarse:size-5" }) })] }));
31
+ }
32
+ function ComboboxGroup({ className, ...props }) {
33
+ return (_jsx(ComboboxPrimitive.Group, { "data-slot": "combobox-group", className: cn(className), ...props }));
34
+ }
35
+ function ComboboxLabel({ className, ...props }) {
36
+ return (_jsx(ComboboxPrimitive.GroupLabel, { "data-slot": "combobox-label", className: cn('px-2 py-1.5 text-xs text-muted-foreground pointer-coarse:px-3 pointer-coarse:py-2 pointer-coarse:text-sm', className), ...props }));
37
+ }
38
+ function ComboboxCollection({ ...props }) {
39
+ return _jsx(ComboboxPrimitive.Collection, { "data-slot": "combobox-collection", ...props });
40
+ }
41
+ function ComboboxEmpty({ className, ...props }) {
42
+ return (_jsx(ComboboxPrimitive.Empty, { "data-slot": "combobox-empty", className: cn('hidden w-full justify-center py-2 text-center text-sm text-muted-foreground group-data-empty/combobox-content:flex', className), ...props }));
43
+ }
44
+ function ComboboxSeparator({ className, ...props }) {
45
+ return (_jsx(ComboboxPrimitive.Separator, { "data-slot": "combobox-separator", className: cn('-mx-1 my-1 h-px bg-border', className), ...props }));
46
+ }
47
+ function ComboboxChips({ className, ...props }) {
48
+ return (_jsx(ComboboxPrimitive.Chips, { "data-slot": "combobox-chips", className: cn('flex min-h-9 flex-wrap items-center gap-1.5 rounded-md border border-input bg-transparent bg-clip-padding px-2.5 py-1.5 text-sm shadow-xs transition-[color,box-shadow] focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50 has-aria-invalid:border-destructive has-aria-invalid:ring-[3px] has-aria-invalid:ring-destructive/20 has-data-[slot=combobox-chip]:px-1.5 dark:bg-input/30 dark:has-aria-invalid:border-destructive/50 dark:has-aria-invalid:ring-destructive/40', className), ...props }));
49
+ }
50
+ function ComboboxChip({ className, children, showRemove = true, ...props }) {
51
+ return (_jsxs(ComboboxPrimitive.Chip, { "data-slot": "combobox-chip", className: cn('flex h-[calc(--spacing(5.5))] w-fit items-center justify-center gap-1 rounded-sm bg-muted px-1.5 text-xs font-medium whitespace-nowrap text-foreground has-disabled:pointer-events-none has-disabled:cursor-not-allowed has-disabled:opacity-50 has-data-[slot=combobox-chip-remove]:pr-0', className), ...props, children: [children, showRemove && (_jsx(ComboboxPrimitive.ChipRemove, { render: _jsx(Button, { variant: "ghost", size: "icon" }), className: "-ml-1 opacity-50 hover:opacity-100", "data-slot": "combobox-chip-remove", children: _jsx(XIcon, { className: "pointer-events-none" }) }))] }));
52
+ }
53
+ function ComboboxChipsInput({ className, children, ...props }) {
54
+ return (_jsx(ComboboxPrimitive.Input, { "data-slot": "combobox-chip-input", className: cn('min-w-16 flex-1 outline-none', className), ...props }));
55
+ }
56
+ function useComboboxAnchor() {
57
+ return React.useRef(null);
58
+ }
59
+ export { Combobox, ComboboxInput, ComboboxContent, ComboboxList, ComboboxItem, ComboboxGroup, ComboboxLabel, ComboboxCollection, ComboboxEmpty, ComboboxSeparator, ComboboxChips, ComboboxChip, ComboboxChipsInput, ComboboxTrigger, ComboboxValue, useComboboxAnchor, };
60
+ //# sourceMappingURL=combobox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox.js","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Command as CommandPrimitive } from "cmdk";
2
+ import type * as React from "react";
3
+ import { Dialog } from "./dialog";
4
+ declare function Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>): React.JSX.Element;
5
+ declare function CommandDialog({ title, description, children, className, showCloseButton, ...props }: React.ComponentProps<typeof Dialog> & {
6
+ title?: string;
7
+ description?: string;
8
+ className?: string;
9
+ showCloseButton?: boolean;
10
+ }): React.JSX.Element;
11
+ declare function CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>): React.JSX.Element;
12
+ declare function CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>): React.JSX.Element;
13
+ declare function CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>): React.JSX.Element;
14
+ declare function CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>): React.JSX.Element;
15
+ declare function CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>): React.JSX.Element;
16
+ declare function CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>): React.JSX.Element;
17
+ declare function CommandShortcut({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
18
+ export { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator, };
19
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/components/command.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAEnD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EACN,MAAM,EAKN,MAAM,UAAU,CAAC;AAGlB,iBAAS,OAAO,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW1G;AAED,iBAAS,aAAa,CAAC,EACtB,KAAyB,EACzB,WAA8C,EAC9C,QAAQ,EACR,SAAS,EACT,eAAsB,EACtB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiBpB;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiBzE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWnH;AAED,iBAAS,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ1G;AAED,iBAAS,YAAY,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWzE;AAED,iBAAS,gBAAgB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ7E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWnH;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWjG;AAED,OAAO,EACN,OAAO,EACP,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,GAChB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Adapted from better-hub by Better Auth — https://github.com/better-auth/better-hub
3
+ // (apps/web/src/components/ui/command.tsx). Full credit to the Better Auth team.
4
+ import { Command as CommandPrimitive } from "cmdk";
5
+ import { SearchIcon } from "lucide-react";
6
+ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "./dialog";
7
+ import { cn } from "../foundation/cn";
8
+ function Command({ className, ...props }) {
9
+ return (_jsx(CommandPrimitive, { "data-slot": "command", className: cn("bg-background text-foreground flex h-full w-full flex-col overflow-hidden rounded-md", className), ...props }));
10
+ }
11
+ function CommandDialog({ title = "Command Palette", description = "Search for a command to run...", children, className, showCloseButton = true, ...props }) {
12
+ return (_jsx(Dialog, { ...props, children: _jsxs(DialogContent, { className: cn("overflow-hidden p-0", className), showCloseButton: showCloseButton, children: [_jsxs(DialogHeader, { className: "sr-only", children: [_jsx(DialogTitle, { children: title }), _jsx(DialogDescription, { children: description })] }), _jsx(Command, { className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children: children })] }) }));
13
+ }
14
+ function CommandInput({ className, ...props }) {
15
+ return (_jsxs("div", { "data-slot": "command-input-wrapper", className: "flex h-9 items-center gap-2 border-b px-3", children: [_jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }), _jsx(CommandPrimitive.Input, { "data-slot": "command-input", className: cn("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className), ...props })] }));
16
+ }
17
+ function CommandList({ className, ...props }) {
18
+ return (_jsx(CommandPrimitive.List, { "data-slot": "command-list", className: cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className), ...props }));
19
+ }
20
+ function CommandEmpty({ ...props }) {
21
+ return (_jsx(CommandPrimitive.Empty, { "data-slot": "command-empty", className: "py-6 text-center text-sm", ...props }));
22
+ }
23
+ function CommandGroup({ className, ...props }) {
24
+ return (_jsx(CommandPrimitive.Group, { "data-slot": "command-group", className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className), ...props }));
25
+ }
26
+ function CommandSeparator({ className, ...props }) {
27
+ return (_jsx(CommandPrimitive.Separator, { "data-slot": "command-separator", className: cn("bg-border -mx-1 h-px", className), ...props }));
28
+ }
29
+ function CommandItem({ className, ...props }) {
30
+ return (_jsx(CommandPrimitive.Item, { "data-slot": "command-item", className: cn("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props }));
31
+ }
32
+ function CommandShortcut({ className, ...props }) {
33
+ return (_jsx("span", { "data-slot": "command-shortcut", className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className), ...props }));
34
+ }
35
+ export { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator, };
36
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/components/command.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
2
+ import type * as React from "react";
3
+ declare function Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>): React.JSX.Element;
4
+ declare function DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>): React.JSX.Element;
5
+ declare function DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>): React.JSX.Element;
6
+ declare function DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>): React.JSX.Element;
7
+ declare function DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>): React.JSX.Element;
8
+ declare function DialogContent({ className, children, showCloseButton, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
9
+ showCloseButton?: boolean;
10
+ }): React.JSX.Element;
11
+ declare function DialogHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
12
+ declare function DialogFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
13
+ declare function DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>): React.JSX.Element;
14
+ declare function DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): React.JSX.Element;
15
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
16
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../src/components/dialog.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,iBAAS,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAElG;AAED,iBAAS,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE5G;AAED,iBAAS,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE1G;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAExG;AAED,iBAAS,aAAa,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW1E;AAED,iBAAS,aAAa,CAAC,EACtB,SAAS,EACT,QAAQ,EACR,eAAsB,EACtB,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IACzD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsBpB;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ7F;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW7F;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQnH;AAED,iBAAS,iBAAiB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ9E;AAED,OAAO,EACN,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GACb,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Adapted from better-hub by Better Auth — https://github.com/better-auth/better-hub
3
+ // (apps/web/src/components/ui/dialog.tsx). Full credit to the Better Auth team.
4
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
5
+ import { XIcon } from "lucide-react";
6
+ import { cn } from "../foundation/cn";
7
+ function Dialog({ ...props }) {
8
+ return _jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
9
+ }
10
+ function DialogTrigger({ ...props }) {
11
+ return _jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
12
+ }
13
+ function DialogPortal({ ...props }) {
14
+ return _jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
15
+ }
16
+ function DialogClose({ ...props }) {
17
+ return _jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
18
+ }
19
+ function DialogOverlay({ className, ...props }) {
20
+ return (_jsx(DialogPrimitive.Overlay, { "data-slot": "dialog-overlay", className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/25 dark:bg-black/70 backdrop-blur-[2px]", className), ...props }));
21
+ }
22
+ function DialogContent({ className, children, showCloseButton = true, ...props }) {
23
+ return (_jsxs(DialogPortal, { children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { "data-slot": "dialog-content", className: cn("overflow-y-auto bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] max-h-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className), ...props, children: [children, showCloseButton && (_jsxs(DialogPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", children: [_jsx(XIcon, {}), _jsx("span", { className: "sr-only", children: "Close" })] }))] })] }));
24
+ }
25
+ function DialogHeader({ className, ...props }) {
26
+ return (_jsx("div", { "data-slot": "dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className), ...props }));
27
+ }
28
+ function DialogFooter({ className, ...props }) {
29
+ return (_jsx("div", { "data-slot": "dialog-footer", className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className), ...props }));
30
+ }
31
+ function DialogTitle({ className, ...props }) {
32
+ return (_jsx(DialogPrimitive.Title, { "data-slot": "dialog-title", className: cn("text-lg leading-none font-semibold", className), ...props }));
33
+ }
34
+ function DialogDescription({ className, ...props }) {
35
+ return (_jsx(DialogPrimitive.Description, { "data-slot": "dialog-description", className: cn("text-muted-foreground text-sm", className), ...props }));
36
+ }
37
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
38
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/components/dialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
2
+ import type * as React from "react";
3
+ declare function DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>): React.JSX.Element;
4
+ declare function DropdownMenuTrigger({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>): React.JSX.Element;
5
+ declare function DropdownMenuContent({ className, sideOffset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Content>): React.JSX.Element;
6
+ declare function DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>): React.JSX.Element;
7
+ declare function DropdownMenuItem({ className, inset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
8
+ inset?: boolean;
9
+ }): React.JSX.Element;
10
+ declare function DropdownMenuCheckboxItem({ className, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>): React.JSX.Element;
11
+ declare function DropdownMenuLabel({ className, inset, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
12
+ inset?: boolean;
13
+ }): React.JSX.Element;
14
+ declare function DropdownMenuSeparator({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>): React.JSX.Element;
15
+ declare function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
16
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuSeparator, DropdownMenuShortcut, };
17
+ //# sourceMappingURL=dropdown-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.d.ts","sourceRoot":"","sources":["../../src/components/dropdown-menu.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,qBAAqB,MAAM,+BAA+B,CAAC;AAEvE,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,iBAAS,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE9G;AAED,iBAAS,mBAAmB,CAAC,EAC5B,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQhF;AAED,iBAAS,mBAAmB,CAAC,EAC5B,SAAS,EACT,UAAc,EACd,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAchF;AAED,iBAAS,iBAAiB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEpH;AAED,iBAAS,gBAAgB,CAAC,EACzB,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAYpB;AAED,iBAAS,wBAAwB,CAAC,EACjC,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkBrF;AAED,iBAAS,iBAAiB,CAAC,EAC1B,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,KAAK,CAAC,GAAG;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAYpB;AAED,iBAAS,qBAAqB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQlF;AAED,iBAAS,oBAAoB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWtG;AAED,OAAO,EACN,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,GACpB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // Adapted from better-hub by Better Auth — https://github.com/better-auth/better-hub
3
+ // (apps/web/src/components/ui/dropdown-menu.tsx). Full credit to the Better Auth team.
4
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
5
+ import { CheckIcon } from "lucide-react";
6
+ import { cn } from "../foundation/cn";
7
+ function DropdownMenu({ ...props }) {
8
+ return _jsx(DropdownMenuPrimitive.Root, { "data-slot": "dropdown-menu", ...props });
9
+ }
10
+ function DropdownMenuTrigger({ ...props }) {
11
+ return (_jsx(DropdownMenuPrimitive.Trigger, { "data-slot": "dropdown-menu-trigger", ...props, className: cn("rounded-sm", props.className) }));
12
+ }
13
+ function DropdownMenuContent({ className, sideOffset = 4, ...props }) {
14
+ return (_jsx(DropdownMenuPrimitive.Portal, { children: _jsx(DropdownMenuPrimitive.Content, { "data-slot": "dropdown-menu-content", sideOffset: sideOffset, className: cn("bg-background text-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className), ...props }) }));
15
+ }
16
+ function DropdownMenuGroup({ ...props }) {
17
+ return _jsx(DropdownMenuPrimitive.Group, { "data-slot": "dropdown-menu-group", ...props });
18
+ }
19
+ function DropdownMenuItem({ className, inset, ...props }) {
20
+ return (_jsx(DropdownMenuPrimitive.Item, { "data-slot": "dropdown-menu-item", "data-inset": inset, className: cn("focus:bg-accent [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props }));
21
+ }
22
+ function DropdownMenuCheckboxItem({ className, children, ...props }) {
23
+ return (_jsxs(DropdownMenuPrimitive.CheckboxItem, { "data-slot": "dropdown-menu-checkbox-item", className: cn("focus:bg-accent relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [_jsx("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: _jsx(DropdownMenuPrimitive.ItemIndicator, { children: _jsx(CheckIcon, { className: "size-4" }) }) }), children] }));
24
+ }
25
+ function DropdownMenuLabel({ className, inset, ...props }) {
26
+ return (_jsx(DropdownMenuPrimitive.Label, { "data-slot": "dropdown-menu-label", "data-inset": inset, className: cn("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className), ...props }));
27
+ }
28
+ function DropdownMenuSeparator({ className, ...props }) {
29
+ return (_jsx(DropdownMenuPrimitive.Separator, { "data-slot": "dropdown-menu-separator", className: cn("bg-border -mx-1 my-1 h-px", className), ...props }));
30
+ }
31
+ function DropdownMenuShortcut({ className, ...props }) {
32
+ return (_jsx("span", { "data-slot": "dropdown-menu-shortcut", className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className), ...props }));
33
+ }
34
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuSeparator, DropdownMenuShortcut, };
35
+ //# sourceMappingURL=dropdown-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.js","sourceRoot":"","sources":["../../src/components/dropdown-menu.tsx"],"names":[],"mappings":";AAAA,qFAAqF;AACrF,uFAAuF;AAEvF,OAAO,KAAK,qBAAqB,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,SAAS,YAAY,CAAC,EAAE,GAAG,KAAK,EAA2D;IAC1F,OAAO,KAAC,qBAAqB,CAAC,IAAI,iBAAW,eAAe,KAAK,KAAK,GAAI,CAAC;AAC5E,CAAC;AAED,SAAS,mBAAmB,CAAC,EAC5B,GAAG,KAAK,EACoD;IAC5D,OAAO,CACN,KAAC,qBAAqB,CAAC,OAAO,iBACnB,uBAAuB,KAC7B,KAAK,EACT,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,GAC3C,CACF,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,EAC5B,SAAS,EACT,UAAU,GAAG,CAAC,EACd,GAAG,KAAK,EACoD;IAC5D,OAAO,CACN,KAAC,qBAAqB,CAAC,MAAM,cAC5B,KAAC,qBAAqB,CAAC,OAAO,iBACnB,uBAAuB,EACjC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACZ,mjBAAmjB,EACnjB,SAAS,CACT,KACG,KAAK,GACR,GAC4B,CAC/B,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,GAAG,KAAK,EAA4D;IAChG,OAAO,KAAC,qBAAqB,CAAC,KAAK,iBAAW,qBAAqB,KAAK,KAAK,GAAI,CAAC;AACnF,CAAC;AAED,SAAS,gBAAgB,CAAC,EACzB,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EAGR;IACA,OAAO,CACN,KAAC,qBAAqB,CAAC,IAAI,iBAChB,oBAAoB,gBAClB,KAAK,EACjB,SAAS,EAAE,EAAE,CACZ,kVAAkV,EAClV,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,EACjC,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACyD;IACjE,OAAO,CACN,MAAC,qBAAqB,CAAC,YAAY,iBACxB,6BAA6B,EACvC,SAAS,EAAE,EAAE,CACZ,iRAAiR,EACjR,SAAS,CACT,KACG,KAAK,aAET,eAAM,SAAS,EAAC,+EAA+E,YAC9F,KAAC,qBAAqB,CAAC,aAAa,cACnC,KAAC,SAAS,IAAC,SAAS,EAAC,QAAQ,GAAG,GACK,GAChC,EACN,QAAQ,IAC2B,CACrC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EAC1B,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EAGR;IACA,OAAO,CACN,KAAC,qBAAqB,CAAC,KAAK,iBACjB,qBAAqB,gBACnB,KAAK,EACjB,SAAS,EAAE,EAAE,CACZ,mDAAmD,EACnD,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACsD;IAC9D,OAAO,CACN,KAAC,qBAAqB,CAAC,SAAS,iBACrB,yBAAyB,EACnC,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,SAAS,CAAC,KACjD,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAgC;IAClF,OAAO,CACN,4BACW,wBAAwB,EAClC,SAAS,EAAE,EAAE,CACZ,uDAAuD,EACvD,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC;AACH,CAAC;AAED,OAAO,EACN,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,GACpB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type * as React from "react";
2
+ export declare function GitHubBackground(): React.JSX.Element;
3
+ //# sourceMappingURL=github-background.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-background.d.ts","sourceRoot":"","sources":["../../src/components/github-background.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAqBpC,wBAAgB,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CA+PpD"}