@px-ui/ui 0.1.3 → 1.0.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/avatar-BAkmIOVe.d.ts +41 -0
- package/dist/avatar-BAkmIOVe.d.ts.map +1 -0
- package/dist/avatar-DDdL9xDH.js +119 -0
- package/dist/avatar-DDdL9xDH.js.map +1 -0
- package/dist/button-BiiFfKiR.d.ts +19 -0
- package/dist/button-BiiFfKiR.d.ts.map +1 -0
- package/dist/button-hBUFMmsZ.js +47 -0
- package/dist/button-hBUFMmsZ.js.map +1 -0
- package/dist/combobox-CnpyzZ7B.js +334 -0
- package/dist/combobox-CnpyzZ7B.js.map +1 -0
- package/dist/combobox-JXY6PiDq.d.ts +109 -0
- package/dist/combobox-JXY6PiDq.d.ts.map +1 -0
- package/dist/components/accordion.d.ts +25 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +56 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +59 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +99 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +29 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +47 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +13 -0
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/aspect-ratio.js +16 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar-group.d.ts +30 -0
- package/dist/components/avatar-group.d.ts.map +1 -0
- package/dist/components/avatar-group.js +69 -0
- package/dist/components/avatar-group.js.map +1 -0
- package/dist/components/avatar.d.ts +2 -0
- package/dist/components/avatar.js +5 -0
- package/dist/components/badge.d.ts +18 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +31 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumb.d.ts +38 -0
- package/dist/components/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb.js +75 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button-group.d.ts +29 -0
- package/dist/components/button-group.d.ts.map +1 -0
- package/dist/components/button-group.js +44 -0
- package/dist/components/button-group.js.map +1 -0
- package/dist/components/button.d.ts +2 -0
- package/dist/components/button.js +4 -0
- package/dist/components/calendar.d.ts +32 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +119 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +38 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +59 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.d.ts +57 -0
- package/dist/components/carousel.d.ts.map +1 -0
- package/dist/components/carousel.js +136 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/chart.d.ts +79 -0
- package/dist/components/chart.d.ts.map +1 -0
- package/dist/components/chart.js +148 -0
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.d.ts +11 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +24 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.d.ts +25 -0
- package/dist/components/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible.js +28 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/combobox.d.ts +3 -0
- package/dist/components/combobox.js +13 -0
- package/dist/components/command.d.ts +78 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +125 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/context-menu.d.ts +87 -0
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu.js +137 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/currency-select-field.d.ts +105 -0
- package/dist/components/currency-select-field.d.ts.map +1 -0
- package/dist/components/currency-select-field.js +266 -0
- package/dist/components/currency-select-field.js.map +1 -0
- package/dist/components/dialog.d.ts +61 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +5 -0
- package/dist/components/direction.d.ts +2 -0
- package/dist/components/direction.js +3 -0
- package/dist/components/drawer.d.ts +45 -0
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +86 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +2 -0
- package/dist/components/dropdown-menu.js +4 -0
- package/dist/components/empty.d.ts +36 -0
- package/dist/components/empty.d.ts.map +1 -0
- package/dist/components/empty.js +62 -0
- package/dist/components/empty.js.map +1 -0
- package/dist/components/field.d.ts +72 -0
- package/dist/components/field.d.ts.map +1 -0
- package/dist/components/field.js +122 -0
- package/dist/components/field.js.map +1 -0
- package/dist/components/file-upload-field.d.ts +58 -0
- package/dist/components/file-upload-field.d.ts.map +1 -0
- package/dist/components/file-upload-field.js +90 -0
- package/dist/components/file-upload-field.js.map +1 -0
- package/dist/components/file-upload.d.ts +4 -0
- package/dist/components/file-upload.js +6 -0
- package/dist/components/hover-card.d.ts +21 -0
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +40 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input-group.d.ts +46 -0
- package/dist/components/input-group.d.ts.map +1 -0
- package/dist/components/input-group.js +9 -0
- package/dist/components/input-otp.d.ts +24 -0
- package/dist/components/input-otp.d.ts.map +1 -0
- package/dist/components/input-otp.js +40 -0
- package/dist/components/input-otp.js.map +1 -0
- package/dist/components/input.d.ts +2 -0
- package/dist/components/input.js +4 -0
- package/dist/components/item.d.ts +62 -0
- package/dist/components/item.d.ts.map +1 -0
- package/dist/components/item.js +124 -0
- package/dist/components/item.js.map +1 -0
- package/dist/components/kbd.d.ts +14 -0
- package/dist/components/kbd.d.ts.map +1 -0
- package/dist/components/kbd.js +22 -0
- package/dist/components/kbd.js.map +1 -0
- package/dist/components/label.d.ts +2 -0
- package/dist/components/label.js +6 -0
- package/dist/components/menubar.d.ts +89 -0
- package/dist/components/menubar.d.ts.map +1 -0
- package/dist/components/menubar.js +140 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/native-select.d.ts +23 -0
- package/dist/components/native-select.d.ts.map +1 -0
- package/dist/components/native-select.js +41 -0
- package/dist/components/native-select.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +48 -0
- package/dist/components/navigation-menu.d.ts.map +1 -0
- package/dist/components/navigation-menu.js +85 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/pagination.d.ts +46 -0
- package/dist/components/pagination.d.ts.map +1 -0
- package/dist/components/pagination.js +89 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/phone-input.d.ts +28 -0
- package/dist/components/phone-input.d.ts.map +1 -0
- package/dist/components/phone-input.js +60 -0
- package/dist/components/phone-input.js.map +1 -0
- package/dist/components/popover.d.ts +34 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +4 -0
- package/dist/components/progress.d.ts +29 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +48 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +16 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +29 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/resizable.d.ts +21 -0
- package/dist/components/resizable.d.ts.map +1 -0
- package/dist/components/resizable.js +32 -0
- package/dist/components/resizable.js.map +1 -0
- package/dist/components/scroll-area.d.ts +17 -0
- package/dist/components/scroll-area.d.ts.map +1 -0
- package/dist/components/scroll-area.js +39 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.d.ts +56 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +102 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +2 -0
- package/dist/components/separator.js +4 -0
- package/dist/components/sheet.d.ts +43 -0
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +7 -0
- package/dist/components/sidebar.d.ts +162 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar.js +390 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton.d.ts +10 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +4 -0
- package/dist/components/slider.d.ts +15 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +36 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/spinner.d.ts +11 -0
- package/dist/components/spinner.d.ts.map +1 -0
- package/dist/components/spinner.js +4 -0
- package/dist/components/switch.d.ts +14 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +21 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +39 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +71 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +31 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +55 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +11 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +4 -0
- package/dist/components/toast.d.ts +2 -0
- package/dist/components/toast.js +6 -0
- package/dist/components/toggle-group.d.ts +29 -0
- package/dist/components/toggle-group.d.ts.map +1 -0
- package/dist/components/toggle-group.js +55 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.d.ts +2 -0
- package/dist/components/toggle.js +6 -0
- package/dist/components/tooltip.d.ts +2 -0
- package/dist/components/tooltip.js +4 -0
- package/dist/dialog-CTqRrytc.js +103 -0
- package/dist/dialog-CTqRrytc.js.map +1 -0
- package/dist/direction-BKSh6e6q.js +3 -0
- package/dist/dropdown-menu-BEARLcDj.d.ts +91 -0
- package/dist/dropdown-menu-BEARLcDj.d.ts.map +1 -0
- package/dist/dropdown-menu-CcumvwhM.js +139 -0
- package/dist/dropdown-menu-CcumvwhM.js.map +1 -0
- package/dist/file-upload-D8hgfjvA.d.ts +145 -0
- package/dist/file-upload-D8hgfjvA.d.ts.map +1 -0
- package/dist/file-upload-DeCIv13t.js +434 -0
- package/dist/file-upload-DeCIv13t.js.map +1 -0
- package/dist/hooks/use-async-options.d.ts +2 -0
- package/dist/hooks/use-async-options.js +3 -0
- package/dist/hooks/use-debounce.d.ts +5 -0
- package/dist/hooks/use-debounce.d.ts.map +1 -0
- package/dist/hooks/use-debounce.js +3 -0
- package/dist/hooks/use-file-upload.d.ts +2 -0
- package/dist/hooks/use-file-upload.js +3 -0
- package/dist/hooks/use-infinite-scroll.d.ts +21 -0
- package/dist/hooks/use-infinite-scroll.d.ts.map +1 -0
- package/dist/hooks/use-infinite-scroll.js +4 -0
- package/dist/hooks/use-intersection-observer.d.ts +2 -0
- package/dist/hooks/use-intersection-observer.js +3 -0
- package/dist/hooks/use-mobile.d.ts +5 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +3 -0
- package/dist/input-8jqdnUZl.js +18 -0
- package/dist/input-8jqdnUZl.js.map +1 -0
- package/dist/input-DwxhsFRP.d.ts +12 -0
- package/dist/input-DwxhsFRP.d.ts.map +1 -0
- package/dist/input-group-DqEkmpXW.js +81 -0
- package/dist/input-group-DqEkmpXW.js.map +1 -0
- package/dist/label-AaH9ZYCZ.js +16 -0
- package/dist/label-AaH9ZYCZ.js.map +1 -0
- package/dist/label-D5SCGMZl.d.ts +11 -0
- package/dist/label-D5SCGMZl.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +7 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +3 -0
- package/dist/popover-C9D43EuT.js +57 -0
- package/dist/popover-C9D43EuT.js.map +1 -0
- package/dist/providers/px-ui-provider.d.ts +36 -0
- package/dist/providers/px-ui-provider.d.ts.map +1 -0
- package/dist/providers/px-ui-provider.js +26 -0
- package/dist/providers/px-ui-provider.js.map +1 -0
- package/dist/separator-BS3ilczC.js +17 -0
- package/dist/separator-BS3ilczC.js.map +1 -0
- package/dist/separator-ct9ZvuTk.d.ts +12 -0
- package/dist/separator-ct9ZvuTk.d.ts.map +1 -0
- package/dist/sheet-CLjNDrfL.js +91 -0
- package/dist/sheet-CLjNDrfL.js.map +1 -0
- package/dist/skeleton-BcIxI5Wq.js +15 -0
- package/dist/skeleton-BcIxI5Wq.js.map +1 -0
- package/dist/spinner-Bo0sUZEg.js +17 -0
- package/dist/spinner-Bo0sUZEg.js.map +1 -0
- package/dist/styles.css +196 -0
- package/dist/textarea-Cq0o323P.js +16 -0
- package/dist/textarea-Cq0o323P.js.map +1 -0
- package/dist/toast-COWAQbIk.js +211 -0
- package/dist/toast-COWAQbIk.js.map +1 -0
- package/dist/toast-CXkP5Jwp.d.ts +74 -0
- package/dist/toast-CXkP5Jwp.d.ts.map +1 -0
- package/dist/toggle-BXBPgIQh.d.ts +19 -0
- package/dist/toggle-BXBPgIQh.d.ts.map +1 -0
- package/dist/toggle-DhJ_qwgw.js +38 -0
- package/dist/toggle-DhJ_qwgw.js.map +1 -0
- package/dist/tooltip-BWjVzK67.d.ts +26 -0
- package/dist/tooltip-BWjVzK67.d.ts.map +1 -0
- package/dist/tooltip-DkPxCJIL.js +43 -0
- package/dist/tooltip-DkPxCJIL.js.map +1 -0
- package/dist/use-async-options-DHR8q5qX.d.ts +45 -0
- package/dist/use-async-options-DHR8q5qX.d.ts.map +1 -0
- package/dist/use-async-options-wZ9LJ2BJ.js +46 -0
- package/dist/use-async-options-wZ9LJ2BJ.js.map +1 -0
- package/dist/use-debounce-_qaEZqtt.js +24 -0
- package/dist/use-debounce-_qaEZqtt.js.map +1 -0
- package/dist/{index.js → use-file-upload-Dxrej28u.js} +3 -204
- package/dist/use-file-upload-Dxrej28u.js.map +1 -0
- package/dist/use-file-upload-yy-xLBtn.d.ts +133 -0
- package/dist/use-file-upload-yy-xLBtn.d.ts.map +1 -0
- package/dist/use-infinite-scroll-CpbhGGT5.js +38 -0
- package/dist/use-infinite-scroll-CpbhGGT5.js.map +1 -0
- package/dist/use-intersection-observer-C2xDq2SW.d.ts +11 -0
- package/dist/use-intersection-observer-C2xDq2SW.d.ts.map +1 -0
- package/dist/use-intersection-observer-CZfnep4z.js +33 -0
- package/dist/use-intersection-observer-CZfnep4z.js.map +1 -0
- package/dist/use-mobile-l5ebOdQl.js +21 -0
- package/dist/use-mobile-l5ebOdQl.js.map +1 -0
- package/dist/utils-mWJR2N24.js +28 -0
- package/dist/utils-mWJR2N24.js.map +1 -0
- package/package.json +290 -26
- package/dist/index.css +0 -133
- package/dist/index.d.ts +0 -229
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { t as cn } from "../utils-mWJR2N24.js";
|
|
2
|
+
import { r as TooltipProvider } from "../tooltip-DkPxCJIL.js";
|
|
3
|
+
import { i as AvatarImage, r as AvatarFallback, t as Avatar } from "../avatar-DDdL9xDH.js";
|
|
4
|
+
import { n as PopoverContent, o as PopoverTrigger, t as Popover } from "../popover-C9D43EuT.js";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import "react";
|
|
7
|
+
|
|
8
|
+
//#region src/components/avatar-group.tsx
|
|
9
|
+
function AvatarGroup({ avatars, max, className, ...props }) {
|
|
10
|
+
const overflow = typeof max === "number" && avatars.length > max;
|
|
11
|
+
const visible = overflow ? avatars.slice(0, max) : avatars;
|
|
12
|
+
const hidden = overflow ? avatars.slice(max) : [];
|
|
13
|
+
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs("div", {
|
|
14
|
+
"data-slot": "avatar-group",
|
|
15
|
+
className: cn("group/avatar-group *:data-[slot=avatar]:ring-background flex -space-x-2 *:data-[slot=avatar]:ring-2", className),
|
|
16
|
+
...props,
|
|
17
|
+
children: [visible.map((avatar, i) => /* @__PURE__ */ jsx(AvatarGroupItem, { ...avatar }, i)), hidden.length > 0 && /* @__PURE__ */ jsxs(Popover, { children: [/* @__PURE__ */ jsx(PopoverTrigger, {
|
|
18
|
+
openOnHover: true,
|
|
19
|
+
render: /* @__PURE__ */ jsx(AvatarGroupCount, { children: `+${hidden.length}` })
|
|
20
|
+
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
21
|
+
className: "w-64 p-2",
|
|
22
|
+
align: "end",
|
|
23
|
+
side: "bottom",
|
|
24
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
25
|
+
className: "max-h-64 space-y-1 overflow-y-auto",
|
|
26
|
+
children: hidden.map((avatar, i) => {
|
|
27
|
+
const label = getAvatarItemLabel(avatar);
|
|
28
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
29
|
+
className: "flex items-center gap-3 rounded-md px-2 py-1.5",
|
|
30
|
+
children: [/* @__PURE__ */ jsx(AvatarGroupItem, {
|
|
31
|
+
...avatar,
|
|
32
|
+
size: "sm",
|
|
33
|
+
tooltip: false
|
|
34
|
+
}), label != null && label !== "" && /* @__PURE__ */ jsx("span", {
|
|
35
|
+
className: "text-foreground text-sm font-medium",
|
|
36
|
+
children: label
|
|
37
|
+
})]
|
|
38
|
+
}, i);
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
})] })]
|
|
42
|
+
}) });
|
|
43
|
+
}
|
|
44
|
+
function AvatarGroupItem({ src, alt, name, size, tooltip, className }) {
|
|
45
|
+
return /* @__PURE__ */ jsxs(Avatar, {
|
|
46
|
+
size,
|
|
47
|
+
tooltip,
|
|
48
|
+
className,
|
|
49
|
+
children: [src ? /* @__PURE__ */ jsx(AvatarImage, {
|
|
50
|
+
src,
|
|
51
|
+
alt
|
|
52
|
+
}) : null, /* @__PURE__ */ jsx(AvatarFallback, { name })]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function getAvatarItemLabel(avatar) {
|
|
56
|
+
if (avatar.tooltip !== void 0 && avatar.tooltip !== false) return avatar.tooltip;
|
|
57
|
+
return avatar.name || avatar.alt || void 0;
|
|
58
|
+
}
|
|
59
|
+
function AvatarGroupCount({ className, ...props }) {
|
|
60
|
+
return /* @__PURE__ */ jsx("div", {
|
|
61
|
+
"data-slot": "avatar-group-count",
|
|
62
|
+
className: cn("bg-muted text-muted-foreground ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 relative flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-full text-sm font-medium ring-2 transition-colors [&>svg]:size-4", className),
|
|
63
|
+
...props
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
export { AvatarGroup, AvatarGroupCount };
|
|
69
|
+
//# sourceMappingURL=avatar-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar-group.js","names":[],"sources":["../../src/components/avatar-group.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport {\n Avatar,\n AvatarFallback,\n AvatarImage,\n type AvatarProps,\n} from \"@px-ui/ui/components/avatar\";\nimport { cn } from \"@px-ui/ui/lib/utils\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@px-ui/ui/components/popover\";\nimport { TooltipProvider } from \"@px-ui/ui/components/tooltip\";\n\ntype AvatarItem = {\n src?: string | null;\n alt?: string;\n name?: string | null;\n size?: AvatarProps[\"size\"];\n tooltip?: AvatarProps[\"tooltip\"];\n className?: string;\n};\n\ntype AvatarGroupProps = Omit<React.ComponentProps<\"div\">, \"children\"> & {\n avatars: AvatarItem[];\n max?: number;\n};\n\nfunction AvatarGroup({ avatars, max, className, ...props }: AvatarGroupProps) {\n const overflow = typeof max === \"number\" && avatars.length > max;\n const visible = overflow ? avatars.slice(0, max) : avatars;\n const hidden = overflow ? avatars.slice(max) : [];\n\n return (\n <TooltipProvider>\n <div\n data-slot=\"avatar-group\"\n className={cn(\n \"group/avatar-group *:data-[slot=avatar]:ring-background flex -space-x-2 *:data-[slot=avatar]:ring-2\",\n className,\n )}\n {...props}\n >\n {visible.map((avatar, i) => (\n <AvatarGroupItem key={i} {...avatar} />\n ))}\n {hidden.length > 0 && (\n <Popover>\n <PopoverTrigger\n openOnHover\n render={\n <AvatarGroupCount>{`+${hidden.length}`}</AvatarGroupCount>\n }\n />\n <PopoverContent className=\"w-64 p-2\" align=\"end\" side=\"bottom\">\n <div className=\"max-h-64 space-y-1 overflow-y-auto\">\n {hidden.map((avatar, i) => {\n const label = getAvatarItemLabel(avatar);\n return (\n <div\n key={i}\n className=\"flex items-center gap-3 rounded-md px-2 py-1.5\"\n >\n <AvatarGroupItem {...avatar} size=\"sm\" tooltip={false} />\n {label != null && label !== \"\" && (\n <span className=\"text-foreground text-sm font-medium\">\n {label}\n </span>\n )}\n </div>\n );\n })}\n </div>\n </PopoverContent>\n </Popover>\n )}\n </div>\n </TooltipProvider>\n );\n}\n\nfunction AvatarGroupItem({\n src,\n alt,\n name,\n size,\n tooltip,\n className,\n}: AvatarItem) {\n return (\n <Avatar size={size} tooltip={tooltip} className={className}>\n {src ? <AvatarImage src={src} alt={alt} /> : null}\n <AvatarFallback name={name} />\n </Avatar>\n );\n}\n\nfunction getAvatarItemLabel(avatar: AvatarItem): React.ReactNode | undefined {\n if (avatar.tooltip !== undefined && avatar.tooltip !== false) {\n return avatar.tooltip;\n }\n return avatar.name || avatar.alt || undefined;\n}\n\nfunction AvatarGroupCount({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"avatar-group-count\"\n className={cn(\n \"bg-muted text-muted-foreground ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3 relative flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-full text-sm font-medium ring-2 transition-colors [&>svg]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { AvatarGroup, AvatarGroupCount };\nexport type { AvatarGroupProps, AvatarItem };\n"],"mappings":";;;;;;;;AA0BA,SAAS,YAAY,EAAE,SAAS,KAAK,WAAW,GAAG,SAA2B;CAC5E,MAAM,WAAW,OAAO,QAAQ,YAAY,QAAQ,SAAS;CAC7D,MAAM,UAAU,WAAW,QAAQ,MAAM,GAAG,IAAI,GAAG;CACnD,MAAM,SAAS,WAAW,QAAQ,MAAM,IAAI,GAAG,EAAE;AAEjD,QACE,oBAAC,6BACC,qBAAC;EACC,aAAU;EACV,WAAW,GACT,uGACA,UACD;EACD,GAAI;aAEH,QAAQ,KAAK,QAAQ,MACpB,oBAAC,mBAAwB,GAAI,UAAP,EAAiB,CACvC,EACD,OAAO,SAAS,KACf,qBAAC,sBACC,oBAAC;GACC;GACA,QACE,oBAAC,8BAAkB,IAAI,OAAO,WAA4B;IAE5D,EACF,oBAAC;GAAe,WAAU;GAAW,OAAM;GAAM,MAAK;aACpD,oBAAC;IAAI,WAAU;cACZ,OAAO,KAAK,QAAQ,MAAM;KACzB,MAAM,QAAQ,mBAAmB,OAAO;AACxC,YACE,qBAAC;MAEC,WAAU;iBAEV,oBAAC;OAAgB,GAAI;OAAQ,MAAK;OAAK,SAAS;QAAS,EACxD,SAAS,QAAQ,UAAU,MAC1B,oBAAC;OAAK,WAAU;iBACb;QACI;QAPJ,EASD;MAER;KACE;IACS,IACT;GAER,GACU;;AAItB,SAAS,gBAAgB,EACvB,KACA,KACA,MACA,MACA,SACA,aACa;AACb,QACE,qBAAC;EAAa;EAAe;EAAoB;aAC9C,MAAM,oBAAC;GAAiB;GAAU;IAAO,GAAG,MAC7C,oBAAC,kBAAqB,OAAQ;GACvB;;AAIb,SAAS,mBAAmB,QAAiD;AAC3E,KAAI,OAAO,YAAY,UAAa,OAAO,YAAY,MACrD,QAAO,OAAO;AAEhB,QAAO,OAAO,QAAQ,OAAO,OAAO;;AAGtC,SAAS,iBAAiB,EACxB,WACA,GAAG,SAC2B;AAC9B,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,yYACA,UACD;EACD,GAAI;GACJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as AvatarImage, c as getAvatarLabelFromChildren, i as AvatarFallbackProps, l as getInitialsFromName, n as AvatarBadge, o as AvatarProps, r as AvatarFallback, s as getAvatarColorByName, t as Avatar } from "../avatar-BAkmIOVe.js";
|
|
2
|
+
export { Avatar, AvatarBadge, AvatarFallback, AvatarFallbackProps, AvatarImage, AvatarProps, getAvatarColorByName, getAvatarLabelFromChildren, getInitialsFromName };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import "../utils-mWJR2N24.js";
|
|
2
|
+
import "../tooltip-DkPxCJIL.js";
|
|
3
|
+
import { a as getAvatarColorByName, i as AvatarImage, n as AvatarBadge, o as getAvatarLabelFromChildren, r as AvatarFallback, s as getInitialsFromName, t as Avatar } from "../avatar-DDdL9xDH.js";
|
|
4
|
+
|
|
5
|
+
export { Avatar, AvatarBadge, AvatarFallback, AvatarImage, getAvatarColorByName, getAvatarLabelFromChildren, getInitialsFromName };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as react1 from "react";
|
|
2
|
+
import { VariantProps } from "class-variance-authority";
|
|
3
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
+
import * as class_variance_authority_types1 from "class-variance-authority/types";
|
|
5
|
+
|
|
6
|
+
//#region src/components/badge.d.ts
|
|
7
|
+
declare const badgeVariants: (props?: ({
|
|
8
|
+
variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
|
|
9
|
+
} & class_variance_authority_types1.ClassProp) | undefined) => string;
|
|
10
|
+
declare function Badge({
|
|
11
|
+
className,
|
|
12
|
+
variant,
|
|
13
|
+
render,
|
|
14
|
+
...props
|
|
15
|
+
}: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariants>): react1.ReactElement<unknown, string | react1.JSXElementConstructor<any>>;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { Badge, badgeVariants };
|
|
18
|
+
//# sourceMappingURL=badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.d.ts","names":[],"sources":["../../src/components/badge.tsx"],"sourcesContent":[],"mappings":";;;;;;cAMM;;IAoBL,+BAAA,CAAA;iBAEQ,KAAA;;;;;GAKN,SAAA,CAAU,yBAAyB,oBAAoB,iBAAc,MAAA,CAAA,+BAAtB,MAAA,CAAsB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { t as cn } from "../utils-mWJR2N24.js";
|
|
2
|
+
import { cva } from "class-variance-authority";
|
|
3
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
4
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
5
|
+
|
|
6
|
+
//#region src/components/badge.tsx
|
|
7
|
+
const badgeVariants = cva("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", {
|
|
8
|
+
variants: { variant: {
|
|
9
|
+
default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
|
|
10
|
+
secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
|
|
11
|
+
destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
|
|
12
|
+
outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
|
|
13
|
+
ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50"
|
|
14
|
+
} },
|
|
15
|
+
defaultVariants: { variant: "default" }
|
|
16
|
+
});
|
|
17
|
+
function Badge({ className, variant = "default", render, ...props }) {
|
|
18
|
+
return useRender({
|
|
19
|
+
defaultTagName: "span",
|
|
20
|
+
props: mergeProps({ className: cn(badgeVariants({ variant }), className) }, props),
|
|
21
|
+
render,
|
|
22
|
+
state: {
|
|
23
|
+
slot: "badge",
|
|
24
|
+
variant
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
export { Badge, badgeVariants };
|
|
31
|
+
//# sourceMappingURL=badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.js","names":[],"sources":["../../src/components/badge.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\nconst badgeVariants = cva(\n \"group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ variant }), className),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n })\n}\n\nexport { Badge, badgeVariants }\n"],"mappings":";;;;;;AAMA,MAAM,gBAAgB,IACpB,8eACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,WACE;EACF,aACE;EACF,SACE;EACF,OACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAED,SAAS,MAAM,EACb,WACA,UAAU,WACV,QACA,GAAG,SACqE;AACxE,QAAO,UAAU;EACf,gBAAgB;EAChB,OAAO,WACL,EACE,WAAW,GAAG,cAAc,EAAE,SAAS,CAAC,EAAE,UAAU,EACrD,EACD,MACD;EACD;EACA,OAAO;GACL,MAAM;GACN;GACD;EACF,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as react_jsx_runtime11 from "react/jsx-runtime";
|
|
2
|
+
import * as React$1 from "react";
|
|
3
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
+
|
|
5
|
+
//#region src/components/breadcrumb.d.ts
|
|
6
|
+
declare function Breadcrumb({
|
|
7
|
+
className,
|
|
8
|
+
...props
|
|
9
|
+
}: React$1.ComponentProps<"nav">): react_jsx_runtime11.JSX.Element;
|
|
10
|
+
declare function BreadcrumbList({
|
|
11
|
+
className,
|
|
12
|
+
...props
|
|
13
|
+
}: React$1.ComponentProps<"ol">): react_jsx_runtime11.JSX.Element;
|
|
14
|
+
declare function BreadcrumbItem({
|
|
15
|
+
className,
|
|
16
|
+
...props
|
|
17
|
+
}: React$1.ComponentProps<"li">): react_jsx_runtime11.JSX.Element;
|
|
18
|
+
declare function BreadcrumbLink({
|
|
19
|
+
className,
|
|
20
|
+
render,
|
|
21
|
+
...props
|
|
22
|
+
}: useRender.ComponentProps<"a">): React$1.ReactElement<unknown, string | React$1.JSXElementConstructor<any>>;
|
|
23
|
+
declare function BreadcrumbPage({
|
|
24
|
+
className,
|
|
25
|
+
...props
|
|
26
|
+
}: React$1.ComponentProps<"span">): react_jsx_runtime11.JSX.Element;
|
|
27
|
+
declare function BreadcrumbSeparator({
|
|
28
|
+
children,
|
|
29
|
+
className,
|
|
30
|
+
...props
|
|
31
|
+
}: React$1.ComponentProps<"li">): react_jsx_runtime11.JSX.Element;
|
|
32
|
+
declare function BreadcrumbEllipsis({
|
|
33
|
+
className,
|
|
34
|
+
...props
|
|
35
|
+
}: React$1.ComponentProps<"span">): react_jsx_runtime11.JSX.Element;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
|
|
38
|
+
//# sourceMappingURL=breadcrumb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumb.d.ts","names":[],"sources":["../../src/components/breadcrumb.tsx"],"sourcesContent":[],"mappings":";;;;;iBAOS,UAAA;;;GAAoC,OAAA,CAAM,wBAAqB,mBAAA,CAAA,GAAA,CAAA;iBAW/D,cAAA;;;GAAwC,OAAA,CAAM,uBAAoB,mBAAA,CAAA,GAAA,CAAA;iBAalE,cAAA;;;GAAwC,OAAA,CAAM,uBAAoB,mBAAA,CAAA,GAAA,CAAA;AA7BtB,iBAuC5C,cAAA,CAlCU;EAAA,SAAA;EAAA,MAAA;EAAA,GAAA;AAAA,CAAA,EAsChB,SAAA,CAAU,cAtCM,CAAA,GAAA,CAAA,CAAA,EAsCa,OAAA,CAAA,YAtCb,CAAA,OAAA,EAAA,MAAA,GAsCa,OAAA,CAAA,qBAtCb,CAAA,GAAA,CAAA,CAAA;iBAsDV,cAAA,CAtDa;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAsD2B,OAAA,CAAM,cAtDjC,CAAA,MAAA,CAAA,CAAA,EAsDuD,mBAAA,CAAA,GAAA,CAAA,OAtDvD;iBAmEb,mBAAA,CAnE0C;EAAA,QAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuEhD,OAAA,CAAM,cAvE0C,CAAA,IAAA,CAAA,CAAA,EAuEtB,mBAAA,CAAA,GAAA,CAAA,OAvEsB;iBAuF1C,kBAAA,CAvF+D;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0FrE,OAAA,CAAM,cA1F+D,CAAA,MAAA,CAAA,CAAA,EA0FzC,mBAAA,CAAA,GAAA,CAAA,OA1FyC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { t as cn } from "../utils-mWJR2N24.js";
|
|
2
|
+
import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import "react";
|
|
5
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
6
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
7
|
+
|
|
8
|
+
//#region src/components/breadcrumb.tsx
|
|
9
|
+
function Breadcrumb({ className, ...props }) {
|
|
10
|
+
return /* @__PURE__ */ jsx("nav", {
|
|
11
|
+
"aria-label": "breadcrumb",
|
|
12
|
+
"data-slot": "breadcrumb",
|
|
13
|
+
className: cn(className),
|
|
14
|
+
...props
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function BreadcrumbList({ className, ...props }) {
|
|
18
|
+
return /* @__PURE__ */ jsx("ol", {
|
|
19
|
+
"data-slot": "breadcrumb-list",
|
|
20
|
+
className: cn("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground ppx-sm:gap-2.5", className),
|
|
21
|
+
...props
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function BreadcrumbItem({ className, ...props }) {
|
|
25
|
+
return /* @__PURE__ */ jsx("li", {
|
|
26
|
+
"data-slot": "breadcrumb-item",
|
|
27
|
+
className: cn("inline-flex items-center gap-1.5", className),
|
|
28
|
+
...props
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function BreadcrumbLink({ className, render, ...props }) {
|
|
32
|
+
return useRender({
|
|
33
|
+
defaultTagName: "a",
|
|
34
|
+
props: mergeProps({ className: cn("transition-colors hover:text-foreground", className) }, props),
|
|
35
|
+
render,
|
|
36
|
+
state: { slot: "breadcrumb-link" }
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
function BreadcrumbPage({ className, ...props }) {
|
|
40
|
+
return /* @__PURE__ */ jsx("span", {
|
|
41
|
+
"data-slot": "breadcrumb-page",
|
|
42
|
+
role: "link",
|
|
43
|
+
"aria-disabled": "true",
|
|
44
|
+
"aria-current": "page",
|
|
45
|
+
className: cn("font-normal text-foreground", className),
|
|
46
|
+
...props
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function BreadcrumbSeparator({ children, className, ...props }) {
|
|
50
|
+
return /* @__PURE__ */ jsx("li", {
|
|
51
|
+
"data-slot": "breadcrumb-separator",
|
|
52
|
+
role: "presentation",
|
|
53
|
+
"aria-hidden": "true",
|
|
54
|
+
className: cn("[&>svg]:size-3.5", className),
|
|
55
|
+
...props,
|
|
56
|
+
children: children ?? /* @__PURE__ */ jsx(ChevronRightIcon, { className: "rtl:rotate-180" })
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function BreadcrumbEllipsis({ className, ...props }) {
|
|
60
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
61
|
+
"data-slot": "breadcrumb-ellipsis",
|
|
62
|
+
role: "presentation",
|
|
63
|
+
"aria-hidden": "true",
|
|
64
|
+
className: cn("flex size-5 items-center justify-center [&>svg]:size-4", className),
|
|
65
|
+
...props,
|
|
66
|
+
children: [/* @__PURE__ */ jsx(MoreHorizontalIcon, {}), /* @__PURE__ */ jsx("span", {
|
|
67
|
+
className: "sr-only",
|
|
68
|
+
children: "More"
|
|
69
|
+
})]
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//#endregion
|
|
74
|
+
export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator };
|
|
75
|
+
//# sourceMappingURL=breadcrumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breadcrumb.js","names":[],"sources":["../../src/components/breadcrumb.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\nimport { ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n aria-label=\"breadcrumb\"\n data-slot=\"breadcrumb\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground ppx-sm:gap-2.5\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\"transition-colors hover:text-foreground\", className),\n },\n props\n ),\n render,\n state: {\n slot: \"breadcrumb-link\",\n },\n })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? (\n <ChevronRightIcon className=\"rtl:rotate-180\" />\n )}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n \"flex size-5 items-center justify-center [&>svg]:size-4\",\n className\n )}\n {...props}\n >\n <MoreHorizontalIcon\n />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n"],"mappings":";;;;;;;;AAOA,SAAS,WAAW,EAAE,WAAW,GAAG,SAAsC;AACxE,QACE,oBAAC;EACC,cAAW;EACX,aAAU;EACV,WAAW,GAAG,UAAU;EACxB,GAAI;GACJ;;AAIN,SAAS,eAAe,EAAE,WAAW,GAAG,SAAqC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,oGACA,UACD;EACD,GAAI;GACJ;;AAIN,SAAS,eAAe,EAAE,WAAW,GAAG,SAAqC;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,oCAAoC,UAAU;EAC5D,GAAI;GACJ;;AAIN,SAAS,eAAe,EACtB,WACA,QACA,GAAG,SAC6B;AAChC,QAAO,UAAU;EACf,gBAAgB;EAChB,OAAO,WACL,EACE,WAAW,GAAG,2CAA2C,UAAU,EACpE,EACD,MACD;EACD;EACA,OAAO,EACL,MAAM,mBACP;EACF,CAAC;;AAGJ,SAAS,eAAe,EAAE,WAAW,GAAG,SAAuC;AAC7E,QACE,oBAAC;EACC,aAAU;EACV,MAAK;EACL,iBAAc;EACd,gBAAa;EACb,WAAW,GAAG,+BAA+B,UAAU;EACvD,GAAI;GACJ;;AAIN,SAAS,oBAAoB,EAC3B,UACA,WACA,GAAG,SAC0B;AAC7B,QACE,oBAAC;EACC,aAAU;EACV,MAAK;EACL,eAAY;EACZ,WAAW,GAAG,oBAAoB,UAAU;EAC5C,GAAI;YAEH,YACC,oBAAC,oBAAiB,WAAU,mBAAmB;GAE9C;;AAIT,SAAS,mBAAmB,EAC1B,WACA,GAAG,SAC4B;AAC/B,QACE,qBAAC;EACC,aAAU;EACV,MAAK;EACL,eAAY;EACZ,WAAW,GACT,0DACA,UACD;EACD,GAAI;aAEJ,oBAAC,uBACC,EACF,oBAAC;GAAK,WAAU;aAAU;IAAW;GAChC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { t as Separator } from "../separator-ct9ZvuTk.js";
|
|
2
|
+
import * as react_jsx_runtime17 from "react/jsx-runtime";
|
|
3
|
+
import * as react0 from "react";
|
|
4
|
+
import { VariantProps } from "class-variance-authority";
|
|
5
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
6
|
+
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
7
|
+
|
|
8
|
+
//#region src/components/button-group.d.ts
|
|
9
|
+
declare const buttonGroupVariants: (props?: ({
|
|
10
|
+
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
11
|
+
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
12
|
+
declare function ButtonGroup({
|
|
13
|
+
className,
|
|
14
|
+
orientation,
|
|
15
|
+
...props
|
|
16
|
+
}: React.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants>): react_jsx_runtime17.JSX.Element;
|
|
17
|
+
declare function ButtonGroupText({
|
|
18
|
+
className,
|
|
19
|
+
render,
|
|
20
|
+
...props
|
|
21
|
+
}: useRender.ComponentProps<"div">): react0.ReactElement<unknown, string | react0.JSXElementConstructor<any>>;
|
|
22
|
+
declare function ButtonGroupSeparator({
|
|
23
|
+
className,
|
|
24
|
+
orientation,
|
|
25
|
+
...props
|
|
26
|
+
}: React.ComponentProps<typeof Separator>): react_jsx_runtime17.JSX.Element;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
|
|
29
|
+
//# sourceMappingURL=button-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-group.d.ts","names":[],"sources":["../../src/components/button-group.tsx"],"sourcesContent":[],"mappings":";;;;;;;;cAOM;;IAeL,+BAAA,CAAA;iBAEQ,WAAA;;;;GAIN,KAAA,CAAM,wBAAwB,oBAAoB,uBAAoB,mBAAA,CAAA,GAAA,CAAA;iBAYhE,eAAA;;;;GAIN,SAAA,CAAU,wBAAqB,MAAA,CAAA,+BAAP,MAAA,CAAO;AAvCwB,iBA0DjD,oBAAA,CAzCR;EAAA,SAAA;EAAA,WAAA;EAAA,GAAA;AAAA,CAAA,EA6CE,KAAA,CAAM,cA7CR,CAAA,OA6C8B,SA7C9B,CAAA,CAAA,EA6CwC,mBAAA,CAAA,GAAA,CAAA,OA7CxC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { t as cn } from "../utils-mWJR2N24.js";
|
|
2
|
+
import { t as Separator } from "../separator-BS3ilczC.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
6
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
7
|
+
|
|
8
|
+
//#region src/components/button-group.tsx
|
|
9
|
+
const buttonGroupVariants = cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
|
|
10
|
+
variants: { orientation: {
|
|
11
|
+
horizontal: "*:data-slot:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-md! [&>[data-slot]~[data-slot]]:rounded-s-none [&>[data-slot]~[data-slot]]:border-s-0",
|
|
12
|
+
vertical: "flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0"
|
|
13
|
+
} },
|
|
14
|
+
defaultVariants: { orientation: "horizontal" }
|
|
15
|
+
});
|
|
16
|
+
function ButtonGroup({ className, orientation, ...props }) {
|
|
17
|
+
return /* @__PURE__ */ jsx("div", {
|
|
18
|
+
role: "group",
|
|
19
|
+
"data-slot": "button-group",
|
|
20
|
+
"data-orientation": orientation,
|
|
21
|
+
className: cn(buttonGroupVariants({ orientation }), className),
|
|
22
|
+
...props
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function ButtonGroupText({ className, render, ...props }) {
|
|
26
|
+
return useRender({
|
|
27
|
+
defaultTagName: "div",
|
|
28
|
+
props: mergeProps({ className: cn("flex items-center gap-2 rounded-md border bg-muted px-2.5 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className) }, props),
|
|
29
|
+
render,
|
|
30
|
+
state: { slot: "button-group-text" }
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function ButtonGroupSeparator({ className, orientation = "vertical", ...props }) {
|
|
34
|
+
return /* @__PURE__ */ jsx(Separator, {
|
|
35
|
+
"data-slot": "button-group-separator",
|
|
36
|
+
orientation,
|
|
37
|
+
className: cn("relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto", className),
|
|
38
|
+
...props
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
//#endregion
|
|
43
|
+
export { ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants };
|
|
44
|
+
//# sourceMappingURL=button-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-group.js","names":[],"sources":["../../src/components/button-group.tsx"],"sourcesContent":["import { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\nimport { Separator } from \"@px-ui/ui/components/separator\"\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"*:data-slot:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-md! [&>[data-slot]~[data-slot]]:rounded-s-none [&>[data-slot]~[data-slot]]:border-s-0\",\n vertical:\n \"flex-col *:data-slot:rounded-b-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-b-md! [&>[data-slot]~[data-slot]]:rounded-t-none [&>[data-slot]~[data-slot]]:border-t-0\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex items-center gap-2 rounded-md border bg-muted px-2.5 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"button-group-text\",\n },\n })\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n"],"mappings":";;;;;;;;AAOA,MAAM,sBAAsB,IAC1B,4RACA;CACE,UAAU,EACR,aAAa;EACX,YACE;EACF,UACE;EACH,EACF;CACD,iBAAiB,EACf,aAAa,cACd;CACF,CACF;AAED,SAAS,YAAY,EACnB,WACA,aACA,GAAG,SACsE;AACzE,QACE,oBAAC;EACC,MAAK;EACL,aAAU;EACV,oBAAkB;EAClB,WAAW,GAAG,oBAAoB,EAAE,aAAa,CAAC,EAAE,UAAU;EAC9D,GAAI;GACJ;;AAIN,SAAS,gBAAgB,EACvB,WACA,QACA,GAAG,SAC+B;AAClC,QAAO,UAAU;EACf,gBAAgB;EAChB,OAAO,WACL,EACE,WAAW,GACT,4JACA,UACD,EACF,EACD,MACD;EACD;EACA,OAAO,EACL,MAAM,qBACP;EACF,CAAC;;AAGJ,SAAS,qBAAqB,EAC5B,WACA,cAAc,YACd,GAAG,SACsC;AACzC,QACE,oBAAC;EACC,aAAU;EACG;EACb,WAAW,GACT,wHACA,UACD;EACD,GAAI;GACJ"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { t as Button } from "../button-BiiFfKiR.js";
|
|
2
|
+
import * as react_jsx_runtime37 from "react/jsx-runtime";
|
|
3
|
+
import * as React$1 from "react";
|
|
4
|
+
import { DayButton, DayPicker, Locale } from "react-day-picker";
|
|
5
|
+
|
|
6
|
+
//#region src/components/calendar.d.ts
|
|
7
|
+
declare function Calendar({
|
|
8
|
+
className,
|
|
9
|
+
classNames,
|
|
10
|
+
showOutsideDays,
|
|
11
|
+
captionLayout,
|
|
12
|
+
buttonVariant,
|
|
13
|
+
locale,
|
|
14
|
+
formatters,
|
|
15
|
+
components,
|
|
16
|
+
timeZone,
|
|
17
|
+
...props
|
|
18
|
+
}: React$1.ComponentProps<typeof DayPicker> & {
|
|
19
|
+
buttonVariant?: React$1.ComponentProps<typeof Button>["variant"];
|
|
20
|
+
}): react_jsx_runtime37.JSX.Element;
|
|
21
|
+
declare function CalendarDayButton({
|
|
22
|
+
className,
|
|
23
|
+
day,
|
|
24
|
+
modifiers,
|
|
25
|
+
locale,
|
|
26
|
+
...props
|
|
27
|
+
}: React$1.ComponentProps<typeof DayButton> & {
|
|
28
|
+
locale?: Partial<Locale>;
|
|
29
|
+
}): react_jsx_runtime37.JSX.Element;
|
|
30
|
+
//#endregion
|
|
31
|
+
export { Calendar, CalendarDayButton };
|
|
32
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","names":[],"sources":["../../src/components/calendar.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAoBS,QAAA;;;;;;;;;;;GAWN,OAAA,CAAM,sBAAsB;kBACb,OAAA,CAAM,sBAAsB;IAC7C,mBAAA,CAAA,GAAA,CAAA;AAxBmE,iBAuL3D,iBAAA,CA5KQ;EAAA,SAAA;EAAA,GAAA;EAAA,SAAA;EAAA,MAAA;EAAA,GAAA;CAAA,EAkLd,OAAA,CAAM,cAlLQ,CAAA,OAkLc,SAlLd,CAAA,GAAA;EACf,MAAA,CAAA,EAiLqD,OAjLrD,CAiL6D,MAjL7D,CAAA;CACA,CAAA,EAgLsE,mBAAA,CAAA,GAAA,CAAA,OAhLtE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { t as cn } from "../utils-mWJR2N24.js";
|
|
2
|
+
import { n as buttonVariants, t as Button } from "../button-hBUFMmsZ.js";
|
|
3
|
+
import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import * as React$1 from "react";
|
|
6
|
+
import { DayPicker, getDefaultClassNames } from "react-day-picker";
|
|
7
|
+
|
|
8
|
+
//#region src/components/calendar.tsx
|
|
9
|
+
function useAutoTimeZone() {
|
|
10
|
+
const [tz, setTz] = React$1.useState(void 0);
|
|
11
|
+
React$1.useEffect(() => {
|
|
12
|
+
setTz(Intl.DateTimeFormat().resolvedOptions().timeZone);
|
|
13
|
+
}, []);
|
|
14
|
+
return tz;
|
|
15
|
+
}
|
|
16
|
+
function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", locale, formatters, components, timeZone, ...props }) {
|
|
17
|
+
const defaultClassNames = getDefaultClassNames();
|
|
18
|
+
const autoTimeZone = useAutoTimeZone();
|
|
19
|
+
return /* @__PURE__ */ jsx(DayPicker, {
|
|
20
|
+
showOutsideDays,
|
|
21
|
+
timeZone: timeZone ?? autoTimeZone,
|
|
22
|
+
className: cn("group/calendar bg-background p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
|
|
23
|
+
captionLayout,
|
|
24
|
+
locale,
|
|
25
|
+
formatters: {
|
|
26
|
+
formatMonthDropdown: (date) => date.toLocaleString(locale?.code, { month: "short" }),
|
|
27
|
+
...formatters
|
|
28
|
+
},
|
|
29
|
+
classNames: {
|
|
30
|
+
root: cn("w-fit", defaultClassNames.root),
|
|
31
|
+
months: cn("relative flex flex-col gap-4 ppx-md:flex-row", defaultClassNames.months),
|
|
32
|
+
month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
|
|
33
|
+
nav: cn("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1", defaultClassNames.nav),
|
|
34
|
+
button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_previous),
|
|
35
|
+
button_next: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_next),
|
|
36
|
+
month_caption: cn("flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)", defaultClassNames.month_caption),
|
|
37
|
+
dropdowns: cn("flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium", defaultClassNames.dropdowns),
|
|
38
|
+
dropdown_root: cn("relative rounded-(--cell-radius)", defaultClassNames.dropdown_root),
|
|
39
|
+
dropdown: cn("absolute inset-0 bg-popover opacity-0", defaultClassNames.dropdown),
|
|
40
|
+
caption_label: cn("font-medium select-none", captionLayout === "label" ? "text-sm" : "flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground", defaultClassNames.caption_label),
|
|
41
|
+
month_grid: "w-full border-collapse",
|
|
42
|
+
weekdays: cn("flex", defaultClassNames.weekdays),
|
|
43
|
+
weekday: cn("flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none", defaultClassNames.weekday),
|
|
44
|
+
week: cn("mt-2 flex w-full", defaultClassNames.week),
|
|
45
|
+
week_number_header: cn("w-(--cell-size) select-none", defaultClassNames.week_number_header),
|
|
46
|
+
week_number: cn("text-[0.8rem] text-muted-foreground select-none", defaultClassNames.week_number),
|
|
47
|
+
day: cn("group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)", props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-s-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius)", defaultClassNames.day),
|
|
48
|
+
range_start: cn("relative isolate z-0 rounded-s-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:end-0 after:w-4 after:bg-muted", defaultClassNames.range_start),
|
|
49
|
+
range_middle: cn("rounded-none", defaultClassNames.range_middle),
|
|
50
|
+
range_end: cn("relative isolate z-0 rounded-e-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:start-0 after:w-4 after:bg-muted", defaultClassNames.range_end),
|
|
51
|
+
today: cn("rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none", defaultClassNames.today),
|
|
52
|
+
outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
|
|
53
|
+
disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
|
|
54
|
+
hidden: cn("invisible", defaultClassNames.hidden),
|
|
55
|
+
...classNames
|
|
56
|
+
},
|
|
57
|
+
components: {
|
|
58
|
+
Root: ({ className: className$1, rootRef, ...props$1 }) => {
|
|
59
|
+
return /* @__PURE__ */ jsx("div", {
|
|
60
|
+
"data-slot": "calendar",
|
|
61
|
+
ref: rootRef,
|
|
62
|
+
className: cn(className$1),
|
|
63
|
+
...props$1
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
Chevron: ({ className: className$1, orientation, ...props$1 }) => {
|
|
67
|
+
if (orientation === "left") return /* @__PURE__ */ jsx(ChevronLeftIcon, {
|
|
68
|
+
className: cn("rtl:rotate-180 size-4", className$1),
|
|
69
|
+
...props$1
|
|
70
|
+
});
|
|
71
|
+
if (orientation === "right") return /* @__PURE__ */ jsx(ChevronRightIcon, {
|
|
72
|
+
className: cn("rtl:rotate-180 size-4", className$1),
|
|
73
|
+
...props$1
|
|
74
|
+
});
|
|
75
|
+
return /* @__PURE__ */ jsx(ChevronDownIcon, {
|
|
76
|
+
className: cn("size-4", className$1),
|
|
77
|
+
...props$1
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
DayButton: ({ ...props$1 }) => /* @__PURE__ */ jsx(CalendarDayButton, {
|
|
81
|
+
locale,
|
|
82
|
+
...props$1
|
|
83
|
+
}),
|
|
84
|
+
WeekNumber: ({ children, ...props$1 }) => {
|
|
85
|
+
return /* @__PURE__ */ jsx("td", {
|
|
86
|
+
...props$1,
|
|
87
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
88
|
+
className: "flex size-(--cell-size) items-center justify-center text-center",
|
|
89
|
+
children
|
|
90
|
+
})
|
|
91
|
+
});
|
|
92
|
+
},
|
|
93
|
+
...components
|
|
94
|
+
},
|
|
95
|
+
...props
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
function CalendarDayButton({ className, day, modifiers, locale, ...props }) {
|
|
99
|
+
const defaultClassNames = getDefaultClassNames();
|
|
100
|
+
const ref = React$1.useRef(null);
|
|
101
|
+
React$1.useEffect(() => {
|
|
102
|
+
if (modifiers.focused) ref.current?.focus();
|
|
103
|
+
}, [modifiers.focused]);
|
|
104
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
105
|
+
variant: "ghost",
|
|
106
|
+
size: "icon",
|
|
107
|
+
"data-day": day.date.toLocaleDateString(locale?.code),
|
|
108
|
+
"data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
|
|
109
|
+
"data-range-start": modifiers.range_start,
|
|
110
|
+
"data-range-end": modifiers.range_end,
|
|
111
|
+
"data-range-middle": modifiers.range_middle,
|
|
112
|
+
className: cn("relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-e-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-s-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
|
|
113
|
+
...props
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
//#endregion
|
|
118
|
+
export { Calendar, CalendarDayButton };
|
|
119
|
+
//# sourceMappingURL=calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","names":["React","props","className"],"sources":["../../src/components/calendar.tsx"],"sourcesContent":["import * as React from \"react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n type Locale,\n} from \"react-day-picker\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\nimport { Button, buttonVariants } from \"@px-ui/ui/components/button\"\nimport { ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon } from \"lucide-react\"\n\nfunction useAutoTimeZone() {\n const [tz, setTz] = React.useState<string | undefined>(undefined)\n React.useEffect(() => {\n setTz(Intl.DateTimeFormat().resolvedOptions().timeZone)\n }, [])\n return tz\n}\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n locale,\n formatters,\n components,\n timeZone,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n const autoTimeZone = useAutoTimeZone()\n const effectiveTimeZone = timeZone ?? autoTimeZone\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n timeZone={effectiveTimeZone}\n className={cn(\n \"group/calendar bg-background p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n locale={locale}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(locale?.code, { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"relative flex flex-col gap-4 ppx-md:flex-row\",\n defaultClassNames.months\n ),\n month: cn(\"flex w-full flex-col gap-4\", defaultClassNames.month),\n nav: cn(\n \"absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) p-0 select-none aria-disabled:opacity-50\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative rounded-(--cell-radius)\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute inset-0 bg-popover opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"font-medium select-none\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"flex items-center gap-1 rounded-(--cell-radius) text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground\",\n defaultClassNames.caption_label\n ),\n month_grid: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"mt-2 flex w-full\", defaultClassNames.week),\n week_number_header: cn(\n \"w-(--cell-size) select-none\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] text-muted-foreground select-none\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-e-(--cell-radius)\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-s-(--cell-radius)\"\n : \"[&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius)\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"relative isolate z-0 rounded-s-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:end-0 after:w-4 after:bg-muted\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\n \"relative isolate z-0 rounded-e-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:start-0 after:w-4 after:bg-muted\",\n defaultClassNames.range_end\n ),\n today: cn(\n \"rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"rtl:rotate-180 size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon className={cn(\"rtl:rotate-180 size-4\", className)} {...props} />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: ({ ...props }) => (\n <CalendarDayButton locale={locale} {...props} />\n ),\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n locale,\n ...props\n}: React.ComponentProps<typeof DayButton> & { locale?: Partial<Locale> }) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString(locale?.code)}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-[3px] group-data-[focused=true]/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-e-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-s-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n"],"mappings":";;;;;;;;AAYA,SAAS,kBAAkB;CACzB,MAAM,CAAC,IAAI,SAASA,QAAM,SAA6B,OAAU;AACjE,SAAM,gBAAgB;AACpB,QAAM,KAAK,gBAAgB,CAAC,iBAAiB,CAAC,SAAS;IACtD,EAAE,CAAC;AACN,QAAO;;AAGT,SAAS,SAAS,EAChB,WACA,YACA,kBAAkB,MAClB,gBAAgB,SAChB,gBAAgB,SAChB,QACA,YACA,YACA,UACA,GAAG,SAGF;CACD,MAAM,oBAAoB,sBAAsB;CAChD,MAAM,eAAe,iBAAiB;AAGtC,QACE,oBAAC;EACkB;EACjB,UALsB,YAAY;EAMlC,WAAW,GACT,yLACA,OAAO,GAAG,6CACV,OAAO,GAAG,iDACV,UACD;EACc;EACP;EACR,YAAY;GACV,sBAAsB,SACpB,KAAK,eAAe,QAAQ,MAAM,EAAE,OAAO,SAAS,CAAC;GACvD,GAAG;GACJ;EACD,YAAY;GACV,MAAM,GAAG,SAAS,kBAAkB,KAAK;GACzC,QAAQ,GACN,gDACA,kBAAkB,OACnB;GACD,OAAO,GAAG,8BAA8B,kBAAkB,MAAM;GAChE,KAAK,GACH,2EACA,kBAAkB,IACnB;GACD,iBAAiB,GACf,eAAe,EAAE,SAAS,eAAe,CAAC,EAC1C,+DACA,kBAAkB,gBACnB;GACD,aAAa,GACX,eAAe,EAAE,SAAS,eAAe,CAAC,EAC1C,+DACA,kBAAkB,YACnB;GACD,eAAe,GACb,4EACA,kBAAkB,cACnB;GACD,WAAW,GACT,uFACA,kBAAkB,UACnB;GACD,eAAe,GACb,oCACA,kBAAkB,cACnB;GACD,UAAU,GACR,yCACA,kBAAkB,SACnB;GACD,eAAe,GACb,2BACA,kBAAkB,UACd,YACA,0GACJ,kBAAkB,cACnB;GACD,YAAY;GACZ,UAAU,GAAG,QAAQ,kBAAkB,SAAS;GAChD,SAAS,GACP,8FACA,kBAAkB,QACnB;GACD,MAAM,GAAG,oBAAoB,kBAAkB,KAAK;GACpD,oBAAoB,GAClB,+BACA,kBAAkB,mBACnB;GACD,aAAa,GACX,mDACA,kBAAkB,YACnB;GACD,KAAK,GACH,0KACA,MAAM,iBACF,0EACA,wEACJ,kBAAkB,IACnB;GACD,aAAa,GACX,+HACA,kBAAkB,YACnB;GACD,cAAc,GAAG,gBAAgB,kBAAkB,aAAa;GAChE,WAAW,GACT,iIACA,kBAAkB,UACnB;GACD,OAAO,GACL,sFACA,kBAAkB,MACnB;GACD,SAAS,GACP,6DACA,kBAAkB,QACnB;GACD,UAAU,GACR,oCACA,kBAAkB,SACnB;GACD,QAAQ,GAAG,aAAa,kBAAkB,OAAO;GACjD,GAAG;GACJ;EACD,YAAY;GACV,OAAO,EAAE,wBAAW,SAAS,GAAGC,cAAY;AAC1C,WACE,oBAAC;KACC,aAAU;KACV,KAAK;KACL,WAAW,GAAGC,YAAU;KACxB,GAAID;MACJ;;GAGN,UAAU,EAAE,wBAAW,aAAa,GAAGA,cAAY;AACjD,QAAI,gBAAgB,OAClB,QACE,oBAAC;KAAgB,WAAW,GAAG,yBAAyBC,YAAU;KAAE,GAAID;MAAS;AAIrF,QAAI,gBAAgB,QAClB,QACE,oBAAC;KAAiB,WAAW,GAAG,yBAAyBC,YAAU;KAAE,GAAID;MAAS;AAItF,WACE,oBAAC;KAAgB,WAAW,GAAG,UAAUC,YAAU;KAAE,GAAID;MAAS;;GAGtE,YAAY,EAAE,GAAGA,cACf,oBAAC;IAA0B;IAAQ,GAAIA;KAAS;GAElD,aAAa,EAAE,UAAU,GAAGA,cAAY;AACtC,WACE,oBAAC;KAAG,GAAIA;eACN,oBAAC;MAAI,WAAU;MACZ;OACG;MACH;;GAGT,GAAG;GACJ;EACD,GAAI;GACJ;;AAIN,SAAS,kBAAkB,EACzB,WACA,KACA,WACA,QACA,GAAG,SACqE;CACxE,MAAM,oBAAoB,sBAAsB;CAEhD,MAAM,MAAMD,QAAM,OAA0B,KAAK;AACjD,SAAM,gBAAgB;AACpB,MAAI,UAAU,QAAS,KAAI,SAAS,OAAO;IAC1C,CAAC,UAAU,QAAQ,CAAC;AAEvB,QACE,oBAAC;EACC,SAAQ;EACR,MAAK;EACL,YAAU,IAAI,KAAK,mBAAmB,QAAQ,KAAK;EACnD,wBACE,UAAU,YACV,CAAC,UAAU,eACX,CAAC,UAAU,aACX,CAAC,UAAU;EAEb,oBAAkB,UAAU;EAC5B,kBAAgB,UAAU;EAC1B,qBAAmB,UAAU;EAC7B,WAAW,GACT,w7BACA,kBAAkB,KAClB,UACD;EACD,GAAI;GACJ"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as react_jsx_runtime20 from "react/jsx-runtime";
|
|
2
|
+
import * as React$1 from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/card.d.ts
|
|
5
|
+
declare function Card({
|
|
6
|
+
className,
|
|
7
|
+
size,
|
|
8
|
+
...props
|
|
9
|
+
}: React$1.ComponentProps<"div"> & {
|
|
10
|
+
size?: "default" | "sm";
|
|
11
|
+
}): react_jsx_runtime20.JSX.Element;
|
|
12
|
+
declare function CardHeader({
|
|
13
|
+
className,
|
|
14
|
+
...props
|
|
15
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime20.JSX.Element;
|
|
16
|
+
declare function CardTitle({
|
|
17
|
+
className,
|
|
18
|
+
...props
|
|
19
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime20.JSX.Element;
|
|
20
|
+
declare function CardDescription({
|
|
21
|
+
className,
|
|
22
|
+
...props
|
|
23
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime20.JSX.Element;
|
|
24
|
+
declare function CardAction({
|
|
25
|
+
className,
|
|
26
|
+
...props
|
|
27
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime20.JSX.Element;
|
|
28
|
+
declare function CardContent({
|
|
29
|
+
className,
|
|
30
|
+
...props
|
|
31
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime20.JSX.Element;
|
|
32
|
+
declare function CardFooter({
|
|
33
|
+
className,
|
|
34
|
+
...props
|
|
35
|
+
}: React$1.ComponentProps<"div">): react_jsx_runtime20.JSX.Element;
|
|
36
|
+
//#endregion
|
|
37
|
+
export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
|
|
38
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","names":[],"sources":["../../src/components/card.tsx"],"sourcesContent":[],"mappings":";;;;iBAIS,IAAA;;;;GAIN,OAAA,CAAM;;IAAmD,mBAAA,CAAA,GAAA,CAAA;AAR9B,iBAsBrB,UAAA,CAlBI;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAkBgC,OAAA,CAAM,cAlBtC,CAAA,KAAA,CAAA,CAAA,EAkB2D,mBAAA,CAAA,GAAA,CAAA,OAlB3D;iBA+BJ,SAAA,CA9BP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA8B0C,OAAA,CAAM,cA9BhD,CAAA,KAAA,CAAA,CAAA,EA8BqE,mBAAA,CAAA,GAAA,CAAA,OA9BrE;iBA2CO,eAAA,CA1CP;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA0CgD,OAAA,CAAM,cA1CtD,CAAA,KAAA,CAAA,CAAA,EA0C2E,mBAAA,CAAA,GAAA,CAAA,OA1C3E;iBAoDO,UAAA,CAlDA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAkDoC,OAAA,CAAM,cAlD1C,CAAA,KAAA,CAAA,CAAA,EAkD+D,mBAAA,CAAA,GAAA,CAAA,OAlD/D;iBA+DA,WAAA,CA/DmD;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EA+Dd,OAAA,CAAM,cA/DQ,CAAA,KAAA,CAAA,CAAA,EA+Da,mBAAA,CAAA,GAAA,CAAA,OA/Db;iBAyEnD,UAAA,CAzEmD;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAyEf,OAAA,CAAM,cAzES,CAAA,KAAA,CAAA,CAAA,EAyEY,mBAAA,CAAA,GAAA,CAAA,OAzEZ"}
|