@almach/ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -0
- package/dist/components/alert.d.ts +33 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +54 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/avatar.d.ts +15 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +33 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +10 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +24 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/button.d.ts +15 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +47 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/calendar.d.ts +4 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +73 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +30 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +54 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.d.ts +21 -0
- package/dist/components/carousel.d.ts.map +1 -0
- package/dist/components/carousel.js +149 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/checkbox.d.ts +7 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +9 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.d.ts +7 -0
- package/dist/components/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible.js +19 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.d.ts +11 -0
- package/dist/components/combobox.d.ts.map +1 -0
- package/dist/components/combobox.js +10 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/command.d.ts +85 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +46 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/dialog.d.ts +36 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +37 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/drawer.d.ts +34 -0
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +36 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +30 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +46 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/group.d.ts +26 -0
- package/dist/components/group.d.ts.map +1 -0
- package/dist/components/group.js +13 -0
- package/dist/components/group.js.map +1 -0
- package/dist/components/input.d.ts +34 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +156 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/label.d.ts +7 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +9 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/layered-card.d.ts +13 -0
- package/dist/components/layered-card.d.ts.map +1 -0
- package/dist/components/layered-card.js +13 -0
- package/dist/components/layered-card.js.map +1 -0
- package/dist/components/modal.d.ts +36 -0
- package/dist/components/modal.d.ts.map +1 -0
- package/dist/components/modal.js +72 -0
- package/dist/components/modal.js.map +1 -0
- package/dist/components/progress.d.ts +5 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +11 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio.d.ts +11 -0
- package/dist/components/radio.d.ts.map +1 -0
- package/dist/components/radio.js +17 -0
- package/dist/components/radio.js.map +1 -0
- package/dist/components/select.d.ts +41 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +49 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +5 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +11 -0
- package/dist/components/separator.js.map +1 -0
- package/dist/components/skeleton.d.ts +6 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +7 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/switch.d.ts +11 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +44 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +36 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +77 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +18 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +63 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/tag-input.d.ts +14 -0
- package/dist/components/tag-input.d.ts.map +1 -0
- package/dist/components/tag-input.js +53 -0
- package/dist/components/tag-input.js.map +1 -0
- package/dist/components/textarea.d.ts +7 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +9 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toast.d.ts +19 -0
- package/dist/components/toast.d.ts.map +1 -0
- package/dist/components/toast.js +51 -0
- package/dist/components/toast.js.map +1 -0
- package/dist/components/toaster.d.ts +2 -0
- package/dist/components/toaster.d.ts.map +1 -0
- package/dist/components/toaster.js +11 -0
- package/dist/components/toaster.js.map +1 -0
- package/dist/components/tooltip.d.ts +9 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +17 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/hooks/use-copy-to-clipboard.d.ts +8 -0
- package/dist/hooks/use-copy-to-clipboard.d.ts.map +1 -0
- package/dist/hooks/use-copy-to-clipboard.js +23 -0
- package/dist/hooks/use-copy-to-clipboard.js.map +1 -0
- package/dist/hooks/use-media-query.d.ts +7 -0
- package/dist/hooks/use-media-query.d.ts.map +1 -0
- package/dist/hooks/use-media-query.js +21 -0
- package/dist/hooks/use-media-query.js.map +1 -0
- package/dist/hooks/use-toast.d.ts +45 -0
- package/dist/hooks/use-toast.d.ts.map +1 -0
- package/dist/hooks/use-toast.js +102 -0
- package/dist/hooks/use-toast.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/package.json +74 -0
- package/src/styles/globals.css +241 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { ChevronLeft, ChevronRight } from "lucide-react";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { cn } from "@almach/utils";
|
|
6
|
+
import { buttonVariants } from "./button";
|
|
7
|
+
const CarouselContext = React.createContext(null);
|
|
8
|
+
const useCarousel = () => {
|
|
9
|
+
const ctx = React.useContext(CarouselContext);
|
|
10
|
+
if (!ctx)
|
|
11
|
+
throw new Error("Must be used inside <Carousel>");
|
|
12
|
+
return ctx;
|
|
13
|
+
};
|
|
14
|
+
function CarouselRoot({ className, children, loop = false, ...props }) {
|
|
15
|
+
const viewportRef = React.useRef(null);
|
|
16
|
+
const [index, setIndex] = React.useState(0);
|
|
17
|
+
const [count, setCount] = React.useState(0);
|
|
18
|
+
React.useEffect(() => {
|
|
19
|
+
const el = viewportRef.current;
|
|
20
|
+
if (!el)
|
|
21
|
+
return;
|
|
22
|
+
const update = () => setCount(el.querySelectorAll("[data-carousel-item]").length);
|
|
23
|
+
update();
|
|
24
|
+
const mo = new MutationObserver(update);
|
|
25
|
+
mo.observe(el, { childList: true, subtree: false });
|
|
26
|
+
return () => mo.disconnect();
|
|
27
|
+
}, []);
|
|
28
|
+
const syncIndex = React.useCallback(() => {
|
|
29
|
+
const el = viewportRef.current;
|
|
30
|
+
if (!el)
|
|
31
|
+
return;
|
|
32
|
+
const items = el.querySelectorAll("[data-carousel-item]");
|
|
33
|
+
let closest = 0;
|
|
34
|
+
let minDist = Infinity;
|
|
35
|
+
items.forEach((item, i) => {
|
|
36
|
+
const dist = Math.abs(item.offsetLeft - el.scrollLeft);
|
|
37
|
+
if (dist < minDist) {
|
|
38
|
+
minDist = dist;
|
|
39
|
+
closest = i;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
setIndex(closest);
|
|
43
|
+
}, []);
|
|
44
|
+
const scrollTo = React.useCallback((i) => {
|
|
45
|
+
const el = viewportRef.current;
|
|
46
|
+
if (!el)
|
|
47
|
+
return;
|
|
48
|
+
const items = el.querySelectorAll("[data-carousel-item]");
|
|
49
|
+
if (!items[i])
|
|
50
|
+
return;
|
|
51
|
+
el.scrollTo({ left: items[i].offsetLeft, behavior: "smooth" });
|
|
52
|
+
setIndex(i);
|
|
53
|
+
}, []);
|
|
54
|
+
const scrollPrev = React.useCallback(() => {
|
|
55
|
+
scrollTo(index === 0 ? (loop ? count - 1 : 0) : index - 1);
|
|
56
|
+
}, [index, count, loop, scrollTo]);
|
|
57
|
+
const scrollNext = React.useCallback(() => {
|
|
58
|
+
scrollTo(index === count - 1 ? (loop ? 0 : count - 1) : index + 1);
|
|
59
|
+
}, [index, count, loop, scrollTo]);
|
|
60
|
+
return (_jsx(CarouselContext.Provider, { value: {
|
|
61
|
+
viewportRef,
|
|
62
|
+
index,
|
|
63
|
+
count,
|
|
64
|
+
scrollTo,
|
|
65
|
+
scrollPrev,
|
|
66
|
+
scrollNext,
|
|
67
|
+
canScrollPrev: loop || index > 0,
|
|
68
|
+
canScrollNext: loop || index < count - 1,
|
|
69
|
+
syncIndex,
|
|
70
|
+
}, children: _jsx("div", { role: "region", "aria-roledescription": "carousel", className: cn("relative", className), ...props, children: children }) }));
|
|
71
|
+
}
|
|
72
|
+
/* ── Content ──────────────────────────────────────────────────────────────── */
|
|
73
|
+
function CarouselContent({ className, ...props }) {
|
|
74
|
+
const { viewportRef, scrollTo, syncIndex } = useCarousel();
|
|
75
|
+
const drag = React.useRef({ active: false, startX: 0, scrollLeft: 0 });
|
|
76
|
+
const onPointerDown = (e) => {
|
|
77
|
+
// Only handle mouse (not touch — touch is handled natively)
|
|
78
|
+
if (e.pointerType === "touch")
|
|
79
|
+
return;
|
|
80
|
+
const el = viewportRef.current;
|
|
81
|
+
if (!el)
|
|
82
|
+
return;
|
|
83
|
+
drag.current = { active: true, startX: e.clientX, scrollLeft: el.scrollLeft };
|
|
84
|
+
el.setPointerCapture(e.pointerId);
|
|
85
|
+
el.style.scrollBehavior = "auto";
|
|
86
|
+
el.style.cursor = "grabbing";
|
|
87
|
+
};
|
|
88
|
+
const onPointerMove = (e) => {
|
|
89
|
+
if (!drag.current.active)
|
|
90
|
+
return;
|
|
91
|
+
const el = viewportRef.current;
|
|
92
|
+
if (!el)
|
|
93
|
+
return;
|
|
94
|
+
el.scrollLeft = drag.current.scrollLeft - (e.clientX - drag.current.startX);
|
|
95
|
+
};
|
|
96
|
+
const onPointerUp = (e) => {
|
|
97
|
+
if (!drag.current.active)
|
|
98
|
+
return;
|
|
99
|
+
drag.current.active = false;
|
|
100
|
+
const el = viewportRef.current;
|
|
101
|
+
if (!el)
|
|
102
|
+
return;
|
|
103
|
+
el.style.scrollBehavior = "";
|
|
104
|
+
el.style.cursor = "";
|
|
105
|
+
// snap to nearest slide
|
|
106
|
+
const items = el.querySelectorAll("[data-carousel-item]");
|
|
107
|
+
let closest = 0;
|
|
108
|
+
let minDist = Infinity;
|
|
109
|
+
items.forEach((item, i) => {
|
|
110
|
+
const dist = Math.abs(item.offsetLeft - el.scrollLeft);
|
|
111
|
+
if (dist < minDist) {
|
|
112
|
+
minDist = dist;
|
|
113
|
+
closest = i;
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
scrollTo(closest);
|
|
117
|
+
};
|
|
118
|
+
return (_jsx("div", { className: "overflow-hidden", children: _jsx("div", { ref: viewportRef, className: cn("flex snap-x snap-mandatory overflow-x-auto scroll-smooth", "[scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden", "cursor-grab select-none", "-ml-4", className), onPointerDown: onPointerDown, onPointerMove: onPointerMove, onPointerUp: onPointerUp, onPointerCancel: onPointerUp, onScroll: syncIndex, ...props }) }));
|
|
119
|
+
}
|
|
120
|
+
/* ── Item ─────────────────────────────────────────────────────────────────── */
|
|
121
|
+
function CarouselItem({ className, ...props }) {
|
|
122
|
+
return (_jsx("div", { "data-carousel-item": true, role: "group", "aria-roledescription": "slide", className: cn("min-w-0 shrink-0 grow-0 basis-full snap-start pl-4", className), ...props }));
|
|
123
|
+
}
|
|
124
|
+
/* ── Previous ─────────────────────────────────────────────────────────────── */
|
|
125
|
+
function CarouselPrevious({ className, ...props }) {
|
|
126
|
+
const { scrollPrev, canScrollPrev } = useCarousel();
|
|
127
|
+
return (_jsx("button", { className: cn(buttonVariants({ variant: "outline", size: "icon-sm" }), "absolute left-2 top-1/2 -translate-y-1/2 h-8 w-8 rounded-full shadow-sm", className), disabled: !canScrollPrev, onClick: scrollPrev, "aria-label": "Previous slide", ...props, children: _jsx(ChevronLeft, { className: "h-4 w-4" }) }));
|
|
128
|
+
}
|
|
129
|
+
/* ── Next ─────────────────────────────────────────────────────────────────── */
|
|
130
|
+
function CarouselNext({ className, ...props }) {
|
|
131
|
+
const { scrollNext, canScrollNext } = useCarousel();
|
|
132
|
+
return (_jsx("button", { className: cn(buttonVariants({ variant: "outline", size: "icon-sm" }), "absolute right-2 top-1/2 -translate-y-1/2 h-8 w-8 rounded-full shadow-sm", className), disabled: !canScrollNext, onClick: scrollNext, "aria-label": "Next slide", ...props, children: _jsx(ChevronRight, { className: "h-4 w-4" }) }));
|
|
133
|
+
}
|
|
134
|
+
/* ── Dots ─────────────────────────────────────────────────────────────────── */
|
|
135
|
+
function CarouselDots({ className }) {
|
|
136
|
+
const { index, count, scrollTo } = useCarousel();
|
|
137
|
+
return (_jsx("div", { className: cn("flex justify-center gap-1.5 pt-3", className), children: Array.from({ length: count }).map((_, i) => (_jsx("button", { onClick: () => scrollTo(i), "aria-label": `Go to slide ${i + 1}`, "aria-current": i === index, className: cn("h-1.5 rounded-full transition-all duration-300", i === index
|
|
138
|
+
? "w-4 bg-foreground"
|
|
139
|
+
: "w-1.5 bg-muted-foreground/30 hover:bg-muted-foreground/60") }, i))) }));
|
|
140
|
+
}
|
|
141
|
+
/* ── Compound export ──────────────────────────────────────────────────────── */
|
|
142
|
+
export const Carousel = Object.assign(CarouselRoot, {
|
|
143
|
+
Content: CarouselContent,
|
|
144
|
+
Item: CarouselItem,
|
|
145
|
+
Previous: CarouselPrevious,
|
|
146
|
+
Next: CarouselNext,
|
|
147
|
+
Dots: CarouselDots,
|
|
148
|
+
});
|
|
149
|
+
//# sourceMappingURL=carousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carousel.js","sourceRoot":"","sources":["../../src/components/carousel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare const Checkbox: React.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React.RefAttributes<HTMLButtonElement>, "ref"> & {
|
|
4
|
+
error?: boolean;
|
|
5
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
6
|
+
export { Checkbox };
|
|
7
|
+
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../../src/components/checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,QAAQ;YAGJ,OAAO;2CAiBf,CAAC;AAGH,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
3
|
+
import { Check } from "lucide-react";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { cn } from "@almach/utils";
|
|
6
|
+
const Checkbox = React.forwardRef(({ className, error, ...props }, ref) => (_jsx(CheckboxPrimitive.Root, { ref: ref, className: cn("checkbox-root active:scale-95", error && "[border-color:hsl(var(--destructive))]", className), "aria-invalid": error, ...props, children: _jsx(CheckboxPrimitive.Indicator, { className: "flex items-center justify-center text-current", children: _jsx(Check, { className: "h-3 w-3", strokeWidth: 2.5 }) }) })));
|
|
7
|
+
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
8
|
+
export { Checkbox };
|
|
9
|
+
//# sourceMappingURL=checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../src/components/checkbox.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAK/B,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1C,KAAC,iBAAiB,CAAC,IAAI,IACtB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,+BAA+B,EAC/B,KAAK,IAAI,wCAAwC,EACjD,SAAS,CACT,kBACa,KAAK,KACf,KAAK,YAET,KAAC,iBAAiB,CAAC,SAAS,IAAC,SAAS,EAAC,+CAA+C,YACrF,KAAC,KAAK,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,GAAG,GAAI,GAClB,GACN,CACzB,CAAC,CAAC;AACH,QAAQ,CAAC,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
export declare const Collapsible: React.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleProps & React.RefAttributes<HTMLDivElement>> & {
|
|
4
|
+
Trigger: React.ForwardRefExoticComponent<Omit<CollapsiblePrimitive.CollapsibleTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
5
|
+
Content: React.ForwardRefExoticComponent<Omit<CollapsiblePrimitive.CollapsibleContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=collapsible.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../../src/components/collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAEpE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA+C/B,eAAO,MAAM,WAAW;;;CAGtB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
3
|
+
import { ChevronDown } from "lucide-react";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { cn } from "@almach/utils";
|
|
6
|
+
/* ── Root ─────────────────────────────────────────────────────────────────── */
|
|
7
|
+
const CollapsibleRoot = CollapsiblePrimitive.Root;
|
|
8
|
+
/* ── Trigger ──────────────────────────────────────────────────────────────── */
|
|
9
|
+
const CollapsibleTrigger = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(CollapsiblePrimitive.Trigger, { ref: ref, className: cn("flex w-full items-center justify-between py-3 text-sm font-medium transition-all", "hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-sm", "[&[data-state=open]>svg]:rotate-180", className), ...props, children: [children, _jsx(ChevronDown, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })] })));
|
|
10
|
+
CollapsibleTrigger.displayName = "Collapsible.Trigger";
|
|
11
|
+
/* ── Content ──────────────────────────────────────────────────────────────── */
|
|
12
|
+
const CollapsibleContent = React.forwardRef(({ className, ...props }, ref) => (_jsx(CollapsiblePrimitive.Content, { ref: ref, className: cn("overflow-hidden text-sm", "data-[state=open]:animate-in data-[state=closed]:animate-out", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", className), ...props })));
|
|
13
|
+
CollapsibleContent.displayName = "Collapsible.Content";
|
|
14
|
+
/* ── Compound export ──────────────────────────────────────────────────────── */
|
|
15
|
+
export const Collapsible = Object.assign(CollapsibleRoot, {
|
|
16
|
+
Trigger: CollapsibleTrigger,
|
|
17
|
+
Content: CollapsibleContent,
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=collapsible.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapsible.js","sourceRoot":"","sources":["../../src/components/collapsible.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnC,iFAAiF;AACjF,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAElD,iFAAiF;AACjF,MAAM,kBAAkB,GAAG,KAAK,CAAC,UAAU,CAGzC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC7C,MAAC,oBAAoB,CAAC,OAAO,IAC5B,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,kFAAkF,EAClF,gIAAgI,EAChI,qCAAqC,EACrC,SAAS,CACT,KACG,KAAK,aAER,QAAQ,EACT,KAAC,WAAW,IAAC,SAAS,EAAC,0EAA0E,GAAG,IACtE,CAC/B,CAAC,CAAC;AACH,kBAAkB,CAAC,WAAW,GAAG,qBAAqB,CAAC;AAEvD,iFAAiF;AACjF,MAAM,kBAAkB,GAAG,KAAK,CAAC,UAAU,CAGzC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACnC,KAAC,oBAAoB,CAAC,OAAO,IAC5B,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,yBAAyB,EACzB,8DAA8D,EAC9D,4DAA4D,EAC5D,SAAS,CACT,KACG,KAAK,GACR,CACF,CAAC,CAAC;AACH,kBAAkB,CAAC,WAAW,GAAG,qBAAqB,CAAC;AAEvD,iFAAiF;AACjF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE;IACzD,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,kBAAkB;CAC3B,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated Use `Select.Searchable` from `@almach/ui` instead.
|
|
3
|
+
* Combobox has been merged into the Select component for a cleaner API.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* import { Select } from "@almach/ui";
|
|
7
|
+
* <Select.Searchable options={options} value={value} onChange={setValue} />
|
|
8
|
+
*/
|
|
9
|
+
export { Select as Combobox } from "./select";
|
|
10
|
+
export type { SelectSearchableOption as ComboboxOption, SelectSearchableProps as ComboboxProps } from "./select";
|
|
11
|
+
//# sourceMappingURL=combobox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC9C,YAAY,EAAE,sBAAsB,IAAI,cAAc,EAAE,qBAAqB,IAAI,aAAa,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated Use `Select.Searchable` from `@almach/ui` instead.
|
|
3
|
+
* Combobox has been merged into the Select component for a cleaner API.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* import { Select } from "@almach/ui";
|
|
7
|
+
* <Select.Searchable options={options} value={value} onChange={setValue} />
|
|
8
|
+
*/
|
|
9
|
+
export { Select as Combobox } from "./select";
|
|
10
|
+
//# sourceMappingURL=combobox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combobox.js","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface CommandDialogProps {
|
|
3
|
+
open?: boolean;
|
|
4
|
+
onOpenChange?: (open: boolean) => void;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}
|
|
7
|
+
declare function CommandDialog({ open, onOpenChange, children }: CommandDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function CommandShortcut({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export declare const Command: React.ForwardRefExoticComponent<Omit<{
|
|
10
|
+
children?: React.ReactNode;
|
|
11
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
12
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
13
|
+
} & {
|
|
14
|
+
asChild?: boolean;
|
|
15
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
16
|
+
label?: string;
|
|
17
|
+
shouldFilter?: boolean;
|
|
18
|
+
filter?: (value: string, search: string, keywords?: string[]) => number;
|
|
19
|
+
defaultValue?: string;
|
|
20
|
+
value?: string;
|
|
21
|
+
onValueChange?: (value: string) => void;
|
|
22
|
+
loop?: boolean;
|
|
23
|
+
disablePointerSelection?: boolean;
|
|
24
|
+
vimBindings?: boolean;
|
|
25
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>> & {
|
|
26
|
+
Dialog: typeof CommandDialog;
|
|
27
|
+
Input: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "key" | keyof React.InputHTMLAttributes<HTMLInputElement>> & {
|
|
28
|
+
ref?: React.Ref<HTMLInputElement>;
|
|
29
|
+
} & {
|
|
30
|
+
asChild?: boolean;
|
|
31
|
+
}, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
|
|
32
|
+
value?: string;
|
|
33
|
+
onValueChange?: (search: string) => void;
|
|
34
|
+
} & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
35
|
+
List: React.ForwardRefExoticComponent<Omit<{
|
|
36
|
+
children?: React.ReactNode;
|
|
37
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
38
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
39
|
+
} & {
|
|
40
|
+
asChild?: boolean;
|
|
41
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
42
|
+
label?: string;
|
|
43
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
44
|
+
Empty: React.ForwardRefExoticComponent<Omit<{
|
|
45
|
+
children?: React.ReactNode;
|
|
46
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
47
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
48
|
+
} & {
|
|
49
|
+
asChild?: boolean;
|
|
50
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
51
|
+
Group: React.ForwardRefExoticComponent<Omit<{
|
|
52
|
+
children?: React.ReactNode;
|
|
53
|
+
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
54
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
55
|
+
} & {
|
|
56
|
+
asChild?: boolean;
|
|
57
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "heading" | "value"> & {
|
|
58
|
+
heading?: React.ReactNode;
|
|
59
|
+
value?: string;
|
|
60
|
+
forceMount?: boolean;
|
|
61
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
62
|
+
Separator: React.ForwardRefExoticComponent<Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
63
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
64
|
+
} & {
|
|
65
|
+
asChild?: boolean;
|
|
66
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
67
|
+
alwaysRender?: boolean;
|
|
68
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
69
|
+
Item: React.ForwardRefExoticComponent<Omit<{
|
|
70
|
+
children?: React.ReactNode;
|
|
71
|
+
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
72
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
73
|
+
} & {
|
|
74
|
+
asChild?: boolean;
|
|
75
|
+
}, "key" | "asChild" | keyof React.HTMLAttributes<HTMLDivElement>>, "onSelect" | "disabled" | "value"> & {
|
|
76
|
+
disabled?: boolean;
|
|
77
|
+
onSelect?: (value: string) => void;
|
|
78
|
+
value?: string;
|
|
79
|
+
keywords?: string[];
|
|
80
|
+
forceMount?: boolean;
|
|
81
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
82
|
+
Shortcut: typeof CommandShortcut;
|
|
83
|
+
};
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/components/command.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAsB/B,UAAU,kBAAkB;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,iBAAS,aAAa,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CAa1E;AAwGD,iBAAS,eAAe,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACR,EAAE,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,2CAUvC;AAGD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASlB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Command as CommandPrimitive } from "cmdk";
|
|
3
|
+
import { Search } from "lucide-react";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { cn } from "@almach/utils";
|
|
6
|
+
import { Dialog } from "./dialog";
|
|
7
|
+
/* ── Base ─────────────────────────────────────────────────────────────────── */
|
|
8
|
+
const CommandRoot = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive, { ref: ref, className: cn("flex h-full w-full flex-col overflow-hidden rounded-xl bg-popover text-popover-foreground", className), ...props })));
|
|
9
|
+
CommandRoot.displayName = "Command";
|
|
10
|
+
function CommandDialog({ open, onOpenChange, children }) {
|
|
11
|
+
return (_jsx(Dialog, { ...(open !== undefined && { open }), ...(onOpenChange !== undefined && { onOpenChange }), children: _jsx(Dialog.Content, { className: "overflow-hidden p-0 shadow-2xl [&>button]:hidden", children: _jsx(CommandRoot, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3", children: children }) }) }));
|
|
12
|
+
}
|
|
13
|
+
/* ── Input ────────────────────────────────────────────────────────────────── */
|
|
14
|
+
const CommandInput = React.forwardRef(({ className, ...props }, ref) => (_jsxs("div", { className: "flex items-center gap-2 border-b px-3", "cmdk-input-wrapper": "", children: [_jsx(Search, { className: "h-4 w-4 shrink-0 text-muted-foreground" }), _jsx(CommandPrimitive.Input, { ref: ref, className: cn("flex h-10 w-full bg-transparent py-3 text-sm outline-none", "placeholder:text-muted-foreground", "disabled:cursor-not-allowed disabled:opacity-50", className), ...props })] })));
|
|
15
|
+
CommandInput.displayName = "Command.Input";
|
|
16
|
+
/* ── List ─────────────────────────────────────────────────────────────────── */
|
|
17
|
+
const CommandList = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.List, { ref: ref, className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className), ...props })));
|
|
18
|
+
CommandList.displayName = "Command.List";
|
|
19
|
+
/* ── Empty ────────────────────────────────────────────────────────────────── */
|
|
20
|
+
const CommandEmpty = React.forwardRef((props, ref) => (_jsx(CommandPrimitive.Empty, { ref: ref, className: "py-6 text-center text-sm text-muted-foreground", ...props })));
|
|
21
|
+
CommandEmpty.displayName = "Command.Empty";
|
|
22
|
+
/* ── Group ────────────────────────────────────────────────────────────────── */
|
|
23
|
+
const CommandGroup = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.Group, { ref: ref, className: cn("overflow-hidden p-1 text-foreground", "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5", "[&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground", className), ...props })));
|
|
24
|
+
CommandGroup.displayName = "Command.Group";
|
|
25
|
+
/* ── Separator ────────────────────────────────────────────────────────────── */
|
|
26
|
+
const CommandSeparator = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.Separator, { ref: ref, className: cn("-mx-1 h-px bg-border", className), ...props })));
|
|
27
|
+
CommandSeparator.displayName = "Command.Separator";
|
|
28
|
+
/* ── Item ─────────────────────────────────────────────────────────────────── */
|
|
29
|
+
const CommandItem = React.forwardRef(({ className, ...props }, ref) => (_jsx(CommandPrimitive.Item, { ref: ref, className: cn("relative flex cursor-pointer select-none items-center gap-2 rounded-lg px-2 py-1.5 text-sm outline-none", "transition-colors", "data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground", "data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50", "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className), ...props })));
|
|
30
|
+
CommandItem.displayName = "Command.Item";
|
|
31
|
+
/* ── Shortcut ─────────────────────────────────────────────────────────────── */
|
|
32
|
+
function CommandShortcut({ className, ...props }) {
|
|
33
|
+
return (_jsx("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props }));
|
|
34
|
+
}
|
|
35
|
+
/* ── Compound export ──────────────────────────────────────────────────────── */
|
|
36
|
+
export const Command = Object.assign(CommandRoot, {
|
|
37
|
+
Dialog: CommandDialog,
|
|
38
|
+
Input: CommandInput,
|
|
39
|
+
List: CommandList,
|
|
40
|
+
Empty: CommandEmpty,
|
|
41
|
+
Group: CommandGroup,
|
|
42
|
+
Separator: CommandSeparator,
|
|
43
|
+
Item: CommandItem,
|
|
44
|
+
Shortcut: CommandShortcut,
|
|
45
|
+
});
|
|
46
|
+
//# 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,36 @@
|
|
|
1
|
+
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
type DialogRootProps = React.ComponentPropsWithoutRef<typeof DialogPrimitive.Root>;
|
|
4
|
+
type DialogTriggerProps = React.ComponentPropsWithoutRef<typeof DialogPrimitive.Trigger>;
|
|
5
|
+
type DialogPortalProps = React.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>;
|
|
6
|
+
interface DialogOverlayProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay> {
|
|
7
|
+
}
|
|
8
|
+
interface DialogContentProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {
|
|
9
|
+
}
|
|
10
|
+
interface DialogHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
11
|
+
}
|
|
12
|
+
interface DialogFooterProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
13
|
+
}
|
|
14
|
+
interface DialogTitleProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title> {
|
|
15
|
+
}
|
|
16
|
+
interface DialogDescriptionProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description> {
|
|
17
|
+
}
|
|
18
|
+
declare function DialogOverlay({ className, ...props }: DialogOverlayProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
declare function DialogHeader({ className, ...props }: DialogHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare function DialogFooter({ className, ...props }: DialogFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare const Dialog: {
|
|
22
|
+
(props: DialogRootProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
displayName: string;
|
|
24
|
+
} & {
|
|
25
|
+
Trigger: React.FC<DialogTriggerProps>;
|
|
26
|
+
Portal: React.FC<DialogPortalProps>;
|
|
27
|
+
Overlay: typeof DialogOverlay;
|
|
28
|
+
Content: React.ForwardRefExoticComponent<DialogContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
29
|
+
Header: typeof DialogHeader;
|
|
30
|
+
Footer: typeof DialogFooter;
|
|
31
|
+
Title: React.ForwardRefExoticComponent<DialogTitleProps & React.RefAttributes<HTMLHeadingElement>>;
|
|
32
|
+
Description: React.ForwardRefExoticComponent<DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>>;
|
|
33
|
+
Close: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
|
|
34
|
+
};
|
|
35
|
+
export { Dialog };
|
|
36
|
+
//# 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,CAAC;AAE1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,KAAK,eAAe,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AACnF,KAAK,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;AACzF,KAAK,iBAAiB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AAEvF,UAAU,kBAAmB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC;CAAI;AACvG,UAAU,kBAAmB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC;CAAI;AACvG,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAI;AAC5E,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAI;AAC5E,UAAU,gBAAiB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC;CAAI;AACnG,UAAU,sBAAuB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC;CAAI;AAG/G,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,2CAYjE;AAkCD,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAO/D;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAO/D;AA8BD,QAAA,MAAM,MAAM;YAHe,eAAe;;;aAIL,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC;YAC9B,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC;;;;;;;;CAS7D,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
3
|
+
import { X } from "lucide-react";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { cn } from "@almach/utils";
|
|
6
|
+
/* ── Sub-components ────────────────────────────────────────────────────── */
|
|
7
|
+
function DialogOverlay({ className, ...props }) {
|
|
8
|
+
return (_jsx(DialogPrimitive.Overlay, { className: cn("fixed inset-0 z-50 bg-black/40 backdrop-blur-sm", "data-[state=open]:animate-in data-[state=closed]:animate-out", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", className), ...props }));
|
|
9
|
+
}
|
|
10
|
+
const DialogContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DialogPrimitive.Portal, { children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { ref: ref, className: cn("fixed left-1/2 top-1/2 z-50 -translate-x-1/2 -translate-y-1/2", "w-[calc(100%-2rem)] max-w-lg", "rounded-2xl bg-background p-6 shadow-xl", "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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]", "data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]", "outline-none", className), ...props, children: [children, _jsxs(DialogPrimitive.Close, { className: "absolute right-4 top-4 flex h-7 w-7 items-center justify-center rounded-lg opacity-50 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring", children: [_jsx(X, { className: "h-4 w-4" }), _jsx("span", { className: "sr-only", children: "Close" })] })] })] })));
|
|
11
|
+
DialogContent.displayName = "Dialog.Content";
|
|
12
|
+
function DialogHeader({ className, ...props }) {
|
|
13
|
+
return (_jsx("div", { className: cn("mb-4 flex flex-col space-y-1.5", className), ...props }));
|
|
14
|
+
}
|
|
15
|
+
function DialogFooter({ className, ...props }) {
|
|
16
|
+
return (_jsx("div", { className: cn("mt-6 flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
const DialogTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Title, { ref: ref, className: cn("text-lg font-semibold leading-none tracking-tight", className), ...props })));
|
|
19
|
+
DialogTitle.displayName = "Dialog.Title";
|
|
20
|
+
const DialogDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Description, { ref: ref, className: cn("text-sm text-muted-foreground leading-relaxed", className), ...props })));
|
|
21
|
+
DialogDescription.displayName = "Dialog.Description";
|
|
22
|
+
/* ── Compound export ───────────────────────────────────────────────────── */
|
|
23
|
+
const DialogRoot = (props) => _jsx(DialogPrimitive.Root, { ...props });
|
|
24
|
+
DialogRoot.displayName = "Dialog";
|
|
25
|
+
const Dialog = Object.assign(DialogRoot, {
|
|
26
|
+
Trigger: DialogPrimitive.Trigger,
|
|
27
|
+
Portal: DialogPrimitive.Portal,
|
|
28
|
+
Overlay: DialogOverlay,
|
|
29
|
+
Content: DialogContent,
|
|
30
|
+
Header: DialogHeader,
|
|
31
|
+
Footer: DialogFooter,
|
|
32
|
+
Title: DialogTitle,
|
|
33
|
+
Description: DialogDescription,
|
|
34
|
+
Close: DialogPrimitive.Close,
|
|
35
|
+
});
|
|
36
|
+
export { Dialog };
|
|
37
|
+
//# 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,34 @@
|
|
|
1
|
+
import { Drawer as DrawerPrimitive } from "vaul";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
type DrawerRootProps = React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Root>;
|
|
4
|
+
interface DrawerOverlayProps extends React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay> {
|
|
5
|
+
}
|
|
6
|
+
interface DrawerContentProps extends React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content> {
|
|
7
|
+
}
|
|
8
|
+
interface DrawerHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
}
|
|
10
|
+
interface DrawerFooterProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
11
|
+
}
|
|
12
|
+
interface DrawerTitleProps extends React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title> {
|
|
13
|
+
}
|
|
14
|
+
interface DrawerDescriptionProps extends React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description> {
|
|
15
|
+
}
|
|
16
|
+
declare function DrawerOverlay({ className, ...props }: DrawerOverlayProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
declare function DrawerHeader({ className, ...props }: DrawerHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
declare function DrawerFooter({ className, ...props }: DrawerFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
declare const Drawer: {
|
|
20
|
+
({ shouldScaleBackground, ...props }: DrawerRootProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
displayName: string;
|
|
22
|
+
} & {
|
|
23
|
+
Trigger: React.ForwardRefExoticComponent<import("@radix-ui/react-dialog").DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
24
|
+
Portal: typeof import("vaul").Portal;
|
|
25
|
+
Overlay: typeof DrawerOverlay;
|
|
26
|
+
Content: React.ForwardRefExoticComponent<DrawerContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
27
|
+
Header: typeof DrawerHeader;
|
|
28
|
+
Footer: typeof DrawerFooter;
|
|
29
|
+
Title: React.ForwardRefExoticComponent<DrawerTitleProps & React.RefAttributes<HTMLHeadingElement>>;
|
|
30
|
+
Description: React.ForwardRefExoticComponent<DrawerDescriptionProps & React.RefAttributes<HTMLParagraphElement>>;
|
|
31
|
+
Close: React.ForwardRefExoticComponent<import("@radix-ui/react-dialog").DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
|
|
32
|
+
};
|
|
33
|
+
export { Drawer };
|
|
34
|
+
//# sourceMappingURL=drawer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../src/components/drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,KAAK,eAAe,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AACnF,UAAU,kBAAmB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC;CAAI;AACvG,UAAU,kBAAmB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC;CAAI;AACvG,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAI;AAC5E,UAAU,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAI;AAC5E,UAAU,gBAAiB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC;CAAI;AACnG,UAAU,sBAAuB,SAAQ,KAAK,CAAC,wBAAwB,CAAC,OAAO,eAAe,CAAC,WAAW,CAAC;CAAI;AAG/G,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,2CAOjE;AA2BD,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAO/D;AAED,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CAO/D;AAgCD,QAAA,MAAM,MAAM;0CALoD,eAAe;;;;;;;;;;;;CAgB9E,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Drawer as DrawerPrimitive } from "vaul";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "@almach/utils";
|
|
5
|
+
/* ── Sub-components ────────────────────────────────────────────────────── */
|
|
6
|
+
function DrawerOverlay({ className, ...props }) {
|
|
7
|
+
return (_jsx(DrawerPrimitive.Overlay, { className: cn("fixed inset-0 z-50 bg-black/40 backdrop-blur-sm", className), ...props }));
|
|
8
|
+
}
|
|
9
|
+
const DrawerContent = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(DrawerPrimitive.Portal, { children: [_jsx(DrawerOverlay, {}), _jsxs(DrawerPrimitive.Content, { ref: ref, className: cn("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[20px]", "bg-background shadow-xl outline-none", className), ...props, children: [_jsx("div", { className: "mx-auto mt-3 h-1.5 w-12 rounded-full bg-muted" }), _jsx("div", { className: "flex-1 overflow-auto px-4 pb-safe", children: children })] })] })));
|
|
10
|
+
DrawerContent.displayName = "Drawer.Content";
|
|
11
|
+
function DrawerHeader({ className, ...props }) {
|
|
12
|
+
return (_jsx("div", { className: cn("pt-4 pb-2 flex flex-col space-y-1.5", className), ...props }));
|
|
13
|
+
}
|
|
14
|
+
function DrawerFooter({ className, ...props }) {
|
|
15
|
+
return (_jsx("div", { className: cn("mt-auto flex flex-col gap-2 pt-4 pb-4", className), ...props }));
|
|
16
|
+
}
|
|
17
|
+
const DrawerTitle = React.forwardRef(({ className, ...props }, ref) => (_jsx(DrawerPrimitive.Title, { ref: ref, className: cn("text-lg font-semibold leading-none tracking-tight", className), ...props })));
|
|
18
|
+
DrawerTitle.displayName = "Drawer.Title";
|
|
19
|
+
const DrawerDescription = React.forwardRef(({ className, ...props }, ref) => (_jsx(DrawerPrimitive.Description, { ref: ref, className: cn("text-sm text-muted-foreground leading-relaxed", className), ...props })));
|
|
20
|
+
DrawerDescription.displayName = "Drawer.Description";
|
|
21
|
+
/* ── Compound export ───────────────────────────────────────────────────── */
|
|
22
|
+
const DrawerRoot = ({ shouldScaleBackground = true, ...props }) => (_jsx(DrawerPrimitive.Root, { shouldScaleBackground: shouldScaleBackground, ...props }));
|
|
23
|
+
DrawerRoot.displayName = "Drawer";
|
|
24
|
+
const Drawer = Object.assign(DrawerRoot, {
|
|
25
|
+
Trigger: DrawerPrimitive.Trigger,
|
|
26
|
+
Portal: DrawerPrimitive.Portal,
|
|
27
|
+
Overlay: DrawerOverlay,
|
|
28
|
+
Content: DrawerContent,
|
|
29
|
+
Header: DrawerHeader,
|
|
30
|
+
Footer: DrawerFooter,
|
|
31
|
+
Title: DrawerTitle,
|
|
32
|
+
Description: DrawerDescription,
|
|
33
|
+
Close: DrawerPrimitive.Close,
|
|
34
|
+
});
|
|
35
|
+
export { Drawer };
|
|
36
|
+
//# sourceMappingURL=drawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer.js","sourceRoot":"","sources":["../../src/components/drawer.tsx"],"names":[],"mappings":"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"}
|