@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
package/README.md CHANGED
@@ -74,15 +74,15 @@ const Example = () => (
74
74
 
75
75
  ## Key Concepts
76
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` |
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
86
 
87
87
  Each overlay follows the Radix compound pattern (`Dialog` + `DialogTrigger` +
88
88
  `DialogContent`, etc.); `variant`/`size` props are driven by
@@ -0,0 +1,7 @@
1
+ import type * as React from 'react';
2
+ interface AgentIconPropsExternalApi {
3
+ className?: string;
4
+ }
5
+ export declare function AgentIcon({ className }: AgentIconPropsExternalApi): React.JSX.Element;
6
+ export {};
7
+ //# 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":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAEnC,UAAU,yBAAyB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,yBAAyB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAerF"}
@@ -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":";AAMA,MAAM,UAAU,SAAS,CAAC,EAAE,SAAS,EAA6B;IAChE,OAAO,CACL,cACE,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAC,KAAK,EACX,MAAM,EAAC,KAAK,EACZ,OAAO,EAAC,WAAW,EACnB,SAAS,EAAE,SAAS,YAEpB,eACE,IAAI,EAAC,cAAc,EACnB,CAAC,EAAC,k6CAAk6C,GACp6C,GACE,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ export interface AutocompleteItemExternalApi {
3
+ readonly value: string;
4
+ readonly label?: string;
5
+ readonly description?: string;
6
+ }
7
+ export interface AutocompletePropsExternalApi {
8
+ readonly value: string;
9
+ readonly onValueChange: (next: string) => void;
10
+ readonly items: ReadonlyArray<AutocompleteItemExternalApi>;
11
+ readonly placeholder?: string;
12
+ readonly 'aria-label': string;
13
+ readonly loading?: boolean;
14
+ readonly loadingText?: string;
15
+ readonly emptyText?: string;
16
+ readonly disabled?: boolean;
17
+ readonly className?: string;
18
+ }
19
+ export declare function Autocomplete({ value: fieldValue, onValueChange, items: suggestions, placeholder, 'aria-label': ariaLabel, loading, loadingText, emptyText, disabled, className, }: AutocompletePropsExternalApi): React.JSX.Element;
20
+ //# sourceMappingURL=autocomplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.d.ts","sourceRoot":"","sources":["../../src/components/autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAA;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAUD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EAAE,UAAU,EACjB,aAAa,EACb,KAAK,EAAE,WAAW,EAClB,WAAW,EACX,YAAY,EAAE,SAAS,EACvB,OAAe,EACf,WAAwB,EACxB,SAAyD,EACzD,QAAgB,EAChB,SAAS,GACV,EAAE,4BAA4B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmJlD"}
@@ -0,0 +1,81 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { String as Str } from 'effect';
4
+ import { CheckIcon, ChevronDownIcon, Loader2Icon } from 'lucide-react';
5
+ import { cn } from '../foundation/cn.js';
6
+ import { Input } from './input.js';
7
+ // blur close is delayed so suggestion mousedown (which blurs the input) still lands
8
+ const BLUR_CLOSE_DELAY_MS = 120;
9
+ const matchesQuery = (suggestion, needle) => [suggestion.value, suggestion.label, suggestion.description].some((text) => text !== undefined && Str.toLowerCase(text).includes(needle));
10
+ export function Autocomplete({ value: fieldValue, onValueChange, items: suggestions, placeholder, 'aria-label': ariaLabel, loading = false, loadingText = 'Loading…', emptyText = 'No matches — the typed value is used as-is.', disabled = false, className, }) {
11
+ const [open, setOpen] = React.useState(false);
12
+ // filter only what was typed since open (empty right after open ⇒ full list)
13
+ const [query, setQuery] = React.useState('');
14
+ const [highlighted, setHighlighted] = React.useState(-1);
15
+ const listId = React.useId();
16
+ const needle = Str.toLowerCase(query);
17
+ const filtered = query === ''
18
+ ? suggestions
19
+ : suggestions.filter((suggestion) => matchesQuery(suggestion, needle));
20
+ const activeIndex = highlighted >= 0 && highlighted < filtered.length ? highlighted : -1;
21
+ const optionId = (index) => `${listId}-option-${index}`;
22
+ React.useEffect(() => {
23
+ if (activeIndex >= 0) {
24
+ document.getElementById(optionId(activeIndex))?.scrollIntoView({ block: 'nearest' });
25
+ }
26
+ // oxlint-disable-next-line react-hooks/exhaustive-deps -- optionId is stable per listId
27
+ }, [activeIndex]);
28
+ const openList = () => {
29
+ setQuery('');
30
+ setHighlighted(-1);
31
+ setOpen(true);
32
+ };
33
+ const pick = (suggestion) => {
34
+ onValueChange(suggestion.value);
35
+ setOpen(false);
36
+ };
37
+ const onKeyDown = (event) => {
38
+ if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
39
+ event.preventDefault();
40
+ if (!open) {
41
+ openList();
42
+ return;
43
+ }
44
+ if (filtered.length > 0) {
45
+ setHighlighted(event.key === 'ArrowDown'
46
+ ? (activeIndex + 1) % filtered.length
47
+ : (activeIndex <= 0 ? filtered.length : activeIndex) - 1);
48
+ }
49
+ return;
50
+ }
51
+ if (event.key === 'Enter') {
52
+ if (open && activeIndex >= 0) {
53
+ event.preventDefault();
54
+ pick(filtered[activeIndex]);
55
+ }
56
+ else {
57
+ setOpen(false);
58
+ }
59
+ return;
60
+ }
61
+ if (event.key === 'Escape' || event.key === 'Tab') {
62
+ setOpen(false);
63
+ }
64
+ };
65
+ const showEmpty = !loading && query !== '' && filtered.length === 0;
66
+ const showList = open && (loading || filtered.length > 0 || showEmpty);
67
+ return (_jsxs("div", { className: cn('relative', className), children: [_jsx(Input, { value: fieldValue, onChange: (event) => {
68
+ onValueChange(event.target.value);
69
+ setQuery(event.target.value);
70
+ setHighlighted(-1);
71
+ setOpen(true);
72
+ }, onFocus: openList,
73
+ // oxlint-disable-next-line reform-rules/no-set-timeout-interval -- DOM blur defer; Effect.sleep can't gate a React event handler
74
+ onBlur: () => globalThis.setTimeout(() => setOpen(false), BLUR_CLOSE_DELAY_MS), onKeyDown: onKeyDown, placeholder: placeholder, disabled: disabled, role: "combobox", "aria-label": ariaLabel, "aria-expanded": showList, "aria-controls": listId, "aria-activedescendant": activeIndex >= 0 ? optionId(activeIndex) : undefined, "aria-autocomplete": "list", autoComplete: "off", spellCheck: false, className: "pr-8" }), _jsx("span", { className: "pointer-events-none absolute right-2.5 top-1/2 -translate-y-1/2 text-muted-foreground", children: loading ? (_jsx(Loader2Icon, { className: "size-4 animate-spin" })) : (_jsx(ChevronDownIcon, { className: "size-4" })) }), showList && (_jsxs("div", { id: listId, role: "listbox", "aria-label": `${ariaLabel} suggestions`, className: "absolute left-0 right-0 top-full z-50 mt-1 flex max-h-60 flex-col overflow-y-auto rounded-md border bg-card p-1 text-card-foreground shadow-md", children: [loading && (_jsxs("span", { className: "flex items-center gap-2 px-2 py-1.5 text-xs text-muted-foreground", children: [_jsx(Loader2Icon, { className: "size-3 animate-spin" }), loadingText] })), filtered.map((suggestion, index) => (_jsxs("button", { id: optionId(index), type: "button", role: "option", "aria-selected": suggestion.value === fieldValue,
75
+ // mousedown fires before blur so the pick lands
76
+ onMouseDown: (event) => {
77
+ event.preventDefault();
78
+ pick(suggestion);
79
+ }, onMouseMove: () => setHighlighted(index), className: cn('flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm', index === activeIndex ? 'bg-accent text-accent-foreground' : 'hover:bg-accent/50'), children: [_jsxs("span", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx("span", { className: "truncate", children: suggestion.label ?? suggestion.value }), suggestion.description && (_jsx("span", { className: "truncate text-xs text-muted-foreground", children: suggestion.description }))] }), suggestion.value === fieldValue ? _jsx(CheckIcon, { className: "size-4 shrink-0" }) : null] }, suggestion.value))), showEmpty && (_jsx("span", { className: "px-2 py-1.5 text-xs text-muted-foreground", children: emptyText }))] }))] }));
80
+ }
81
+ //# sourceMappingURL=autocomplete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete.js","sourceRoot":"","sources":["../../src/components/autocomplete.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ import type { ClassProp } from 'class-variance-authority/types';
4
+ type BadgeVariantsExternalApi = (props?: ({
5
+ variant?: 'default' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link' | undefined;
6
+ } & ClassProp) | undefined) => string;
7
+ declare const badgeVariants: BadgeVariantsExternalApi;
8
+ type BadgePropsExternalApi = React.ComponentProps<'span'> & VariantProps<typeof badgeVariants> & {
9
+ asChild?: boolean;
10
+ };
11
+ declare function Badge({ className, variant, asChild, ...props }: BadgePropsExternalApi): React.JSX.Element;
12
+ export { Badge, badgeVariants };
13
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/components/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAK/D,KAAK,wBAAwB,GAAG,CAC9B,KAAK,CAAC,EACF,CAAC;IACC,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CAC7F,GAAG,SAAS,CAAC,GACd,SAAS,KACV,MAAM,CAAA;AAEX,QAAA,MAAM,aAAa,EAAE,wBAmBpB,CAAA;AAED,KAAK,qBAAqB,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GACvD,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAE5D,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAmB,EACnB,OAAe,EACf,GAAG,KAAK,EACT,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW3C;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { cva } from 'class-variance-authority';
4
+ import { Slot } from 'radix-ui';
5
+ import { cn } from '../foundation/cn.js';
6
+ 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', {
7
+ variants: {
8
+ variant: {
9
+ default: 'bg-primary text-primary-foreground [a&]:hover:bg-primary/90',
10
+ secondary: 'bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90',
11
+ 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',
12
+ outline: 'border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground',
13
+ ghost: '[a&]:hover:bg-accent [a&]:hover:text-accent-foreground',
14
+ link: 'text-primary underline-offset-4 [a&]:hover:underline',
15
+ },
16
+ },
17
+ defaultVariants: {
18
+ variant: 'default',
19
+ },
20
+ });
21
+ function Badge({ className, variant = 'default', asChild = false, ...props }) {
22
+ const Comp = asChild ? Slot.Root : 'span';
23
+ return (_jsx(Comp, { "data-slot": "badge", "data-variant": variant, className: cn(badgeVariants({ variant }), className), ...props }));
24
+ }
25
+ export { Badge, badgeVariants };
26
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/components/badge.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAUrC,MAAM,aAAa,GAA6B,GAAG,CACjD,qaAAqa,EACra;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,6DAA6D;YACtE,SAAS,EAAE,mEAAmE;YAC9E,WAAW,EACT,wJAAwJ;YAC1J,OAAO,EACL,sFAAsF;YACxF,KAAK,EAAE,wDAAwD;YAC/D,IAAI,EAAE,sDAAsD;SAC7D;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAA;AAKD,SAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,OAAO,GAAG,KAAK,EACf,GAAG,KAAK,EACc;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;IAEzC,OAAO,CACL,KAAC,IAAI,iBACO,OAAO,kBACH,OAAO,EACrB,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,KAChD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,14 @@
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
+ type ButtonVariantsExternalApi = (props?: ({
5
+ variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link' | undefined;
6
+ size?: 'default' | 'sm' | 'lg' | 'icon' | undefined;
7
+ } & ClassProp) | undefined) => string;
8
+ declare const buttonVariants: ButtonVariantsExternalApi;
9
+ type ButtonPropsExternalApi = React.ComponentProps<'button'> & VariantProps<typeof buttonVariants> & {
10
+ asChild?: boolean;
11
+ };
12
+ declare function Button({ className, variant, size, asChild, ...props }: ButtonPropsExternalApi): React.JSX.Element;
13
+ export { Button, buttonVariants };
14
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAGnC,KAAK,yBAAyB,GAAG,CAC/B,KAAK,CAAC,EACF,CAAC;IACC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;IAC5F,IAAI,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAA;CACpD,GAAG,SAAS,CAAC,GACd,SAAS,KACV,MAAM,CAAA;AAEX,QAAA,MAAM,cAAc,EAAE,yBAyBrB,CAAA;AAED,KAAK,sBAAsB,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAC1D,YAAY,CAAC,OAAO,cAAc,CAAC,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAEH,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAe,EACf,GAAG,KAAK,EACT,EAAE,sBAAsB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAS5C;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Slot } from '@radix-ui/react-slot';
3
+ import { cva } from 'class-variance-authority';
4
+ import { cn } from '../foundation/cn.js';
5
+ 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]", {
6
+ variants: {
7
+ variant: {
8
+ default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90',
9
+ destructive: 'bg-destructive text-white shadow-xs hover:bg-destructive/90',
10
+ 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',
11
+ secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',
12
+ ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',
13
+ link: 'text-primary underline-offset-4 hover:underline',
14
+ },
15
+ size: {
16
+ default: 'h-9 px-4 py-2 has-[>svg]:px-3',
17
+ sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5',
18
+ lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',
19
+ icon: 'size-9',
20
+ },
21
+ },
22
+ defaultVariants: {
23
+ variant: 'default',
24
+ size: 'default',
25
+ },
26
+ });
27
+ function Button({ className, variant, size, asChild = false, ...props }) {
28
+ const Comp = asChild ? Slot : 'button';
29
+ return (_jsx(Comp, { "data-slot": "button", className: cn(buttonVariants({ variant, size, className })), ...props }));
30
+ }
31
+ export { Button, buttonVariants };
32
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/components/button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAA;AAG9C,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAWrC,MAAM,cAAc,GAA8B,GAAG,CACnD,sVAAsV,EACtV;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,kEAAkE;YAC3E,WAAW,EAAE,6DAA6D;YAC1E,OAAO,EACL,uIAAuI;YACzI,SAAS,EAAE,wEAAwE;YACnF,KAAK,EAAE,sEAAsE;YAC7E,IAAI,EAAE,iDAAiD;SACxD;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,+BAA+B;YACxC,EAAE,EAAE,+CAA+C;YACnD,EAAE,EAAE,sCAAsC;YAC1C,IAAI,EAAE,QAAQ;SACf;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAA;AAOD,SAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAO,GAAG,KAAK,EACf,GAAG,KAAK,EACe;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IACtC,OAAO,CACL,KAAC,IAAI,iBACO,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KACvD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,28 @@
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
+ type ComboboxInputPropsExternalApi = ComboboxPrimitive.Input.Props & {
7
+ showTrigger?: boolean;
8
+ showClear?: boolean;
9
+ };
10
+ declare function ComboboxInput({ className, children, disabled, showTrigger, showClear, ...props }: ComboboxInputPropsExternalApi): React.JSX.Element;
11
+ 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;
12
+ declare function ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props): React.JSX.Element;
13
+ declare function ComboboxItem({ className, children, ...props }: ComboboxPrimitive.Item.Props): React.JSX.Element;
14
+ declare function ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props): React.JSX.Element;
15
+ declare function ComboboxLabel({ className, ...props }: ComboboxPrimitive.GroupLabel.Props): React.JSX.Element;
16
+ declare function ComboboxCollection({ ...props }: ComboboxPrimitive.Collection.Props): React.JSX.Element;
17
+ declare function ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props): React.JSX.Element;
18
+ declare function ComboboxSeparator({ className, ...props }: ComboboxPrimitive.Separator.Props): React.JSX.Element;
19
+ declare function ComboboxChips({ className, ...props }: React.ComponentPropsWithRef<typeof ComboboxPrimitive.Chips> & ComboboxPrimitive.Chips.Props): React.JSX.Element;
20
+ type ComboboxChipPropsExternalApi = ComboboxPrimitive.Chip.Props & {
21
+ showRemove?: boolean;
22
+ };
23
+ declare function ComboboxChip({ className, children, showRemove, ...props }: ComboboxChipPropsExternalApi): React.JSX.Element;
24
+ declare function ComboboxChipsInput({ className, children, ...props }: ComboboxPrimitive.Input.Props): React.JSX.Element;
25
+ type ComboboxAnchorElementExternalApi = HTMLDivElement | null;
26
+ declare function useComboboxAnchor(): React.RefObject<ComboboxAnchorElementExternalApi>;
27
+ export { Combobox, ComboboxInput, ComboboxContent, ComboboxList, ComboboxItem, ComboboxGroup, ComboboxLabel, ComboboxCollection, ComboboxEmpty, ComboboxSeparator, ComboboxChips, ComboboxChip, ComboboxChipsInput, ComboboxTrigger, ComboboxValue, useComboboxAnchor, };
28
+ //# sourceMappingURL=combobox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAO9D,QAAA,MAAM,QAAQ,EAAE,OAAO,iBAAiB,CAAC,IAA6B,CAAA;AAEtE,iBAAS,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAErF;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAcrD;AAeD,KAAK,6BAA6B,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG;IACnE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,CAAA;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,QAAgB,EAChB,WAAkB,EAClB,SAAiB,EACjB,GAAG,KAAK,EACT,EAAE,6BAA6B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsBnD;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,IAAe,EACf,UAAc,EACd,KAAe,EACf,WAAe,EACf,MAAM,EACN,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAC9B,IAAI,CACF,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAClC,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,CAC3D,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuBtB;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW9F;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqBlD;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEhG;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWxD;AAED,iBAAS,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE/F;AAED,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWhG;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQvD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,qBAAqB,CAAC,OAAO,iBAAiB,CAAC,KAAK,CAAC,GAC5D,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWlD;AAED,KAAK,4BAA4B,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,GAAG;IACjE,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,QAAQ,EACR,UAAiB,EACjB,GAAG,KAAK,EACT,EAAE,4BAA4B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsBlD;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQnD;AAED,KAAK,gCAAgC,GAAG,cAAc,GAAG,IAAI,CAAA;AAE7D,iBAAS,iBAAiB,IAAI,KAAK,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAE9E;AAED,OAAO,EACL,QAAQ,EACR,aAAa,EACb,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,GAClB,CAAA"}
@@ -0,0 +1,58 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { Combobox as ComboboxPrimitive } from '@base-ui/react';
4
+ import { CheckIcon, ChevronDownIcon, XIcon } from 'lucide-react';
5
+ import { cn } from '../foundation/cn.js';
6
+ import { Button } from './button.js';
7
+ import { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from './input-group.js';
8
+ const Combobox = ComboboxPrimitive.Root;
9
+ function ComboboxValue({ ...props }) {
10
+ return _jsx(ComboboxPrimitive.Value, { "data-slot": "combobox-value", ...props });
11
+ }
12
+ function ComboboxTrigger({ className, children, ...props }) {
13
+ 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" })] }));
14
+ }
15
+ function ComboboxClear({ className, ...props }) {
16
+ 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" }) }));
17
+ }
18
+ function ComboboxInput({ className, children, disabled = false, showTrigger = true, showClear = false, ...props }) {
19
+ 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] }));
20
+ }
21
+ function ComboboxContent({ className, side = 'bottom', sideOffset = 6, align = 'start', alignOffset = 0, anchor, ...props }) {
22
+ 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 }) }) }));
23
+ }
24
+ function ComboboxList({ className, ...props }) {
25
+ 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 }));
26
+ }
27
+ function ComboboxItem({ className, children, ...props }) {
28
+ 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" }) })] }));
29
+ }
30
+ function ComboboxGroup({ className, ...props }) {
31
+ return _jsx(ComboboxPrimitive.Group, { "data-slot": "combobox-group", className: cn(className), ...props });
32
+ }
33
+ function ComboboxLabel({ className, ...props }) {
34
+ 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 }));
35
+ }
36
+ function ComboboxCollection({ ...props }) {
37
+ return _jsx(ComboboxPrimitive.Collection, { "data-slot": "combobox-collection", ...props });
38
+ }
39
+ function ComboboxEmpty({ className, ...props }) {
40
+ 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 }));
41
+ }
42
+ function ComboboxSeparator({ className, ...props }) {
43
+ return (_jsx(ComboboxPrimitive.Separator, { "data-slot": "combobox-separator", className: cn('-mx-1 my-1 h-px bg-border', className), ...props }));
44
+ }
45
+ function ComboboxChips({ className, ...props }) {
46
+ 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 }));
47
+ }
48
+ function ComboboxChip({ className, children, showRemove = true, ...props }) {
49
+ 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" }) }))] }));
50
+ }
51
+ function ComboboxChipsInput({ className, children, ...props }) {
52
+ return (_jsx(ComboboxPrimitive.Input, { "data-slot": "combobox-chip-input", className: cn('min-w-16 flex-1 outline-none', className), ...props }));
53
+ }
54
+ function useComboboxAnchor() {
55
+ return React.useRef(null);
56
+ }
57
+ export { Combobox, ComboboxInput, ComboboxContent, ComboboxList, ComboboxItem, ComboboxGroup, ComboboxLabel, ComboboxCollection, ComboboxEmpty, ComboboxSeparator, ComboboxChips, ComboboxChip, ComboboxChipsInput, ComboboxTrigger, ComboboxValue, useComboboxAnchor, };
58
+ //# 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,20 @@
1
+ import { Command as CommandPrimitive } from 'cmdk';
2
+ import type * as React from 'react';
3
+ import { Dialog } from './dialog.js';
4
+ declare function Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>): React.JSX.Element;
5
+ type CommandDialogPropsExternalApi = React.ComponentProps<typeof Dialog> & {
6
+ title?: string;
7
+ description?: string;
8
+ className?: string;
9
+ showCloseButton?: boolean;
10
+ };
11
+ declare function CommandDialog({ title, description, children, className, showCloseButton, ...props }: CommandDialogPropsExternalApi): React.JSX.Element;
12
+ declare function CommandInput({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Input>): React.JSX.Element;
13
+ declare function CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>): React.JSX.Element;
14
+ declare function CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>): React.JSX.Element;
15
+ declare function CommandGroup({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Group>): React.JSX.Element;
16
+ declare function CommandSeparator({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Separator>): React.JSX.Element;
17
+ declare function CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>): React.JSX.Element;
18
+ declare function CommandShortcut({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
19
+ export { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator, };
20
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/components/command.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAA;AAElD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,MAAM,EAA+D,MAAM,UAAU,CAAA;AAG9F,iBAAS,OAAO,CAAC,EACf,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWnE;AAED,KAAK,6BAA6B,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,GAAG;IACzE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,iBAAS,aAAa,CAAC,EACrB,KAAyB,EACzB,WAA8C,EAC9C,QAAQ,EACR,SAAS,EACT,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,6BAA6B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiBnD;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,CAczE;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQxE;AAED,iBAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQzE;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,CAWzE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQ7E;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWxE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQjG;AAED,OAAO,EACL,OAAO,EACP,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Command as CommandPrimitive } from 'cmdk';
3
+ import { SearchIcon } from 'lucide-react';
4
+ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog.js';
5
+ import { cn } from '../foundation/cn.js';
6
+ function Command({ className, ...props }) {
7
+ 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 }));
8
+ }
9
+ function CommandDialog({ title = 'Command Palette', description = 'Search for a command to run...', children, className, showCloseButton = true, ...props }) {
10
+ 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 })] }) }));
11
+ }
12
+ function CommandInput({ className, ...props }) {
13
+ 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 })] }));
14
+ }
15
+ function CommandList({ className, ...props }) {
16
+ return (_jsx(CommandPrimitive.List, { "data-slot": "command-list", className: cn('max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto', className), ...props }));
17
+ }
18
+ function CommandEmpty({ ...props }) {
19
+ return (_jsx(CommandPrimitive.Empty, { "data-slot": "command-empty", className: "py-6 text-center text-sm", ...props }));
20
+ }
21
+ function CommandGroup({ className, ...props }) {
22
+ 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 }));
23
+ }
24
+ function CommandSeparator({ className, ...props }) {
25
+ return (_jsx(CommandPrimitive.Separator, { "data-slot": "command-separator", className: cn('bg-border -mx-1 h-px', className), ...props }));
26
+ }
27
+ function CommandItem({ className, ...props }) {
28
+ 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 }));
29
+ }
30
+ function CommandShortcut({ className, ...props }) {
31
+ return (_jsx("span", { "data-slot": "command-shortcut", className: cn('text-muted-foreground ml-auto text-xs tracking-widest', className), ...props }));
32
+ }
33
+ export { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandShortcut, CommandSeparator, };
34
+ //# 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,17 @@
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
+ type DialogContentPropsExternalApi = React.ComponentProps<typeof DialogPrimitive.Content> & {
9
+ showCloseButton?: boolean;
10
+ };
11
+ declare function DialogContent({ className, children, showCloseButton, ...props }: DialogContentPropsExternalApi): React.JSX.Element;
12
+ declare function DialogHeader({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
13
+ declare function DialogFooter({ className, ...props }: React.ComponentProps<'div'>): React.JSX.Element;
14
+ declare function DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>): React.JSX.Element;
15
+ declare function DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): React.JSX.Element;
16
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
17
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../src/components/dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAEzD,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAGnC,iBAAS,MAAM,CAAC,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEvE;AAED,iBAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE1E;AAED,iBAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEzE;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAExE;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW1E;AAED,KAAK,6BAA6B,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IAC1F,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,6BAA6B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsBnD;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,CAQ7F;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQxE;AAED,iBAAS,iBAAiB,CAAC,EACzB,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,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GACd,CAAA"}
@@ -0,0 +1,36 @@
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 Dialog({ ...props }) {
6
+ return _jsx(DialogPrimitive.Root, { "data-slot": "dialog", ...props });
7
+ }
8
+ function DialogTrigger({ ...props }) {
9
+ return _jsx(DialogPrimitive.Trigger, { "data-slot": "dialog-trigger", ...props });
10
+ }
11
+ function DialogPortal({ ...props }) {
12
+ return _jsx(DialogPrimitive.Portal, { "data-slot": "dialog-portal", ...props });
13
+ }
14
+ function DialogClose({ ...props }) {
15
+ return _jsx(DialogPrimitive.Close, { "data-slot": "dialog-close", ...props });
16
+ }
17
+ function DialogOverlay({ className, ...props }) {
18
+ 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 }));
19
+ }
20
+ function DialogContent({ className, children, showCloseButton = true, ...props }) {
21
+ 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" })] }))] })] }));
22
+ }
23
+ function DialogHeader({ className, ...props }) {
24
+ return (_jsx("div", { "data-slot": "dialog-header", className: cn('flex flex-col gap-2 text-center sm:text-left', className), ...props }));
25
+ }
26
+ function DialogFooter({ className, ...props }) {
27
+ return (_jsx("div", { "data-slot": "dialog-footer", className: cn('flex flex-col-reverse gap-2 sm:flex-row sm:justify-end', className), ...props }));
28
+ }
29
+ function DialogTitle({ className, ...props }) {
30
+ return (_jsx(DialogPrimitive.Title, { "data-slot": "dialog-title", className: cn('text-lg leading-none font-semibold', className), ...props }));
31
+ }
32
+ function DialogDescription({ className, ...props }) {
33
+ return (_jsx(DialogPrimitive.Description, { "data-slot": "dialog-description", className: cn('text-muted-foreground text-sm', className), ...props }));
34
+ }
35
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
36
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../../src/components/dialog.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAErC,SAAS,MAAM,CAAC,EACd,GAAG,KAAK,EAC0C;IAClD,OAAO,KAAC,eAAe,CAAC,IAAI,iBAAW,QAAQ,KAAK,KAAK,GAAI,CAAA;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,GAAG,KAAK,EAC6C;IACrD,OAAO,KAAC,eAAe,CAAC,OAAO,iBAAW,gBAAgB,KAAK,KAAK,GAAI,CAAA;AAC1E,CAAC;AAED,SAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EAC4C;IACpD,OAAO,KAAC,eAAe,CAAC,MAAM,iBAAW,eAAe,KAAK,KAAK,GAAI,CAAA;AACxE,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EAC2C;IACnD,OAAO,KAAC,eAAe,CAAC,KAAK,iBAAW,cAAc,KAAK,KAAK,GAAI,CAAA;AACtE,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EAC6C;IACrD,OAAO,CACL,KAAC,eAAe,CAAC,OAAO,iBACZ,gBAAgB,EAC1B,SAAS,EAAE,EAAE,CACX,6LAA6L,EAC7L,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAMD,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,eAAe,GAAG,IAAI,EACtB,GAAG,KAAK,EACsB;IAC9B,OAAO,CACL,MAAC,YAAY,eACX,KAAC,aAAa,KAAG,EACjB,MAAC,eAAe,CAAC,OAAO,iBACZ,gBAAgB,EAC1B,SAAS,EAAE,EAAE,CACX,qZAAqZ,EACrZ,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACR,eAAe,IAAI,CAClB,MAAC,eAAe,CAAC,KAAK,IAAC,SAAS,EAAC,mWAAmW,aAClY,KAAC,KAAK,KAAG,EACT,eAAM,SAAS,EAAC,SAAS,sBAAa,IAChB,CACzB,IACuB,IACb,CAChB,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACxE,OAAO,CACL,2BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,8CAA8C,EAAE,SAAS,CAAC,KACpE,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACxE,OAAO,CACL,2BACY,eAAe,EACzB,SAAS,EAAE,EAAE,CAAC,wDAAwD,EAAE,SAAS,CAAC,KAC9E,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EAC2C;IACnD,OAAO,CACL,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,oCAAoC,EAAE,SAAS,CAAC,KAC1D,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACiD;IACzD,OAAO,CACL,KAAC,eAAe,CAAC,WAAW,iBAChB,oBAAoB,EAC9B,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,SAAS,CAAC,KACrD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EACL,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,aAAa,GACd,CAAA"}
@@ -0,0 +1,19 @@
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
+ type DropdownMenuItemPropsExternalApi = React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
8
+ inset?: boolean;
9
+ };
10
+ declare function DropdownMenuItem({ className, inset, ...props }: DropdownMenuItemPropsExternalApi): React.JSX.Element;
11
+ declare function DropdownMenuCheckboxItem({ className, children, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>): React.JSX.Element;
12
+ type DropdownMenuLabelPropsExternalApi = React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
13
+ inset?: boolean;
14
+ };
15
+ declare function DropdownMenuLabel({ className, inset, ...props }: DropdownMenuLabelPropsExternalApi): React.JSX.Element;
16
+ declare function DropdownMenuSeparator({ className, ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>): React.JSX.Element;
17
+ declare function DropdownMenuShortcut({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
18
+ export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuLabel, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuSeparator, DropdownMenuShortcut, };
19
+ //# 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":"AAAA,OAAO,KAAK,qBAAqB,MAAM,+BAA+B,CAAA;AAEtE,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAGnC,iBAAS,YAAY,CAAC,EACpB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE7E;AAED,iBAAS,mBAAmB,CAAC,EAC3B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQhF;AAED,iBAAS,mBAAmB,CAAC,EAC3B,SAAS,EACT,UAAc,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAchF;AAED,iBAAS,iBAAiB,CAAC,EACzB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE9E;AAED,KAAK,gCAAgC,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,IAAI,CAAC,GAAG;IAChG,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gCAAgC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAYtD;AAED,iBAAS,wBAAwB,CAAC,EAChC,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkBrF;AAED,KAAK,iCAAiC,GAAG,KAAK,CAAC,cAAc,CAC3D,OAAO,qBAAqB,CAAC,KAAK,CACnC,GAAG;IACF,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,iCAAiC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CASvD;AAED,iBAAS,qBAAqB,CAAC,EAC7B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,qBAAqB,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQlF;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAQlD;AAED,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,GACrB,CAAA"}