@cmdniels/uikit 1.1.5 → 1.1.7
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/out/components/copy-input/CopyInput.js +2 -3
- package/out/components/error/Error.d.ts +2 -1
- package/out/components/error/Error.js +15 -2
- package/out/components/item/ItemActions.d.ts +2 -2
- package/out/components/item/ItemContent.d.ts +2 -2
- package/out/components/item/ItemDescription.d.ts +2 -2
- package/out/components/item/ItemFooter.d.ts +2 -2
- package/out/components/item/ItemGroup.d.ts +2 -2
- package/out/components/item/ItemHeader.d.ts +2 -2
- package/out/components/item/ItemMedia.d.ts +2 -2
- package/out/components/item/ItemSeparator.d.ts +2 -2
- package/out/components/item/ItemTitle.d.ts +2 -2
- package/out/components/link-input/LinkInput.js +1 -1
- package/out/components/sheet/Sheet.d.ts +2 -0
- package/out/components/sheet/Sheet.js +18 -0
- package/out/components/sheet/SheetClose.d.ts +2 -0
- package/out/components/sheet/SheetClose.js +18 -0
- package/out/components/sheet/SheetContent.d.ts +5 -0
- package/out/components/sheet/SheetContent.js +23 -0
- package/out/components/sheet/SheetDescription.d.ts +2 -0
- package/out/components/sheet/SheetDescription.js +19 -0
- package/out/components/sheet/SheetFooter.d.ts +2 -0
- package/out/components/sheet/SheetFooter.js +18 -0
- package/out/components/sheet/SheetHeader.d.ts +2 -0
- package/out/components/sheet/SheetHeader.js +18 -0
- package/out/components/sheet/SheetOverlay.d.ts +2 -0
- package/out/components/sheet/SheetOverlay.js +19 -0
- package/out/components/sheet/SheetPortal.d.ts +2 -0
- package/out/components/sheet/SheetPortal.js +18 -0
- package/out/components/sheet/SheetTitle.d.ts +2 -0
- package/out/components/sheet/SheetTitle.js +19 -0
- package/out/components/sheet/SheetTrigger.d.ts +2 -0
- package/out/components/sheet/SheetTrigger.js +18 -0
- package/out/components/sidebar/Sidebar.d.ts +7 -0
- package/out/components/sidebar/Sidebar.js +43 -0
- package/out/components/sidebar/SidebarContent.d.ts +2 -0
- package/out/components/sidebar/SidebarContent.js +17 -0
- package/out/components/sidebar/SidebarFooter.d.ts +2 -0
- package/out/components/sidebar/SidebarFooter.js +17 -0
- package/out/components/sidebar/SidebarGroup.d.ts +2 -0
- package/out/components/sidebar/SidebarGroup.js +17 -0
- package/out/components/sidebar/SidebarGroupAction.d.ts +3 -0
- package/out/components/sidebar/SidebarGroupAction.js +28 -0
- package/out/components/sidebar/SidebarGroupContent.d.ts +2 -0
- package/out/components/sidebar/SidebarGroupContent.js +17 -0
- package/out/components/sidebar/SidebarGroupLabel.d.ts +3 -0
- package/out/components/sidebar/SidebarGroupLabel.js +28 -0
- package/out/components/sidebar/SidebarHeader.d.ts +2 -0
- package/out/components/sidebar/SidebarHeader.js +17 -0
- package/out/components/sidebar/SidebarInput.d.ts +3 -0
- package/out/components/sidebar/SidebarInput.js +18 -0
- package/out/components/sidebar/SidebarInset.d.ts +2 -0
- package/out/components/sidebar/SidebarInset.js +17 -0
- package/out/components/sidebar/SidebarMenu.d.ts +2 -0
- package/out/components/sidebar/SidebarMenu.js +17 -0
- package/out/components/sidebar/SidebarMenuAction.d.ts +5 -0
- package/out/components/sidebar/SidebarMenuAction.js +29 -0
- package/out/components/sidebar/SidebarMenuBadge.d.ts +2 -0
- package/out/components/sidebar/SidebarMenuBadge.js +17 -0
- package/out/components/sidebar/SidebarMenuButton.d.ts +9 -0
- package/out/components/sidebar/SidebarMenuButton.js +46 -0
- package/out/components/sidebar/SidebarMenuItem.d.ts +2 -0
- package/out/components/sidebar/SidebarMenuItem.js +17 -0
- package/out/components/sidebar/SidebarMenuSkeleton.d.ts +4 -0
- package/out/components/sidebar/SidebarMenuSkeleton.js +23 -0
- package/out/components/sidebar/SidebarMenuSub.d.ts +2 -0
- package/out/components/sidebar/SidebarMenuSub.js +17 -0
- package/out/components/sidebar/SidebarMenuSubButton.d.ts +6 -0
- package/out/components/sidebar/SidebarMenuSubButton.js +30 -0
- package/out/components/sidebar/SidebarMenuSubItem.d.ts +2 -0
- package/out/components/sidebar/SidebarMenuSubItem.js +17 -0
- package/out/components/sidebar/SidebarProvider.d.ts +23 -0
- package/out/components/sidebar/SidebarProvider.js +69 -0
- package/out/components/sidebar/SidebarRail.d.ts +2 -0
- package/out/components/sidebar/SidebarRail.js +20 -0
- package/out/components/sidebar/SidebarSeparator.d.ts +3 -0
- package/out/components/sidebar/SidebarSeparator.js +18 -0
- package/out/components/sidebar/SidebarTrigger.d.ts +3 -0
- package/out/components/sidebar/SidebarTrigger.js +25 -0
- package/out/components/sidebar/sidebarMenuButtonVariants.d.ts +5 -0
- package/out/components/sidebar/sidebarMenuButtonVariants.js +19 -0
- package/out/components/sidebar/useIsMobile.d.ts +1 -0
- package/out/components/sidebar/useIsMobile.js +14 -0
- package/out/components/sidebar/useSidebar.d.ts +9 -0
- package/out/components/sidebar/useSidebar.js +9 -0
- package/out/components/spinner/Spinner.d.ts +2 -1
- package/out/index.d.ts +29 -0
- package/out/index.js +31 -0
- package/package.json +1 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import cn from "../../cn";
|
|
14
|
+
export default function SidebarHeader(_a) {
|
|
15
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
16
|
+
return (_jsx("div", Object.assign({ "data-slot": "sidebar-header", "data-sidebar": "header", className: cn("flex flex-col gap-2 p-2", className) }, props)));
|
|
17
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import cn from "../../cn";
|
|
14
|
+
import Input from "../../components/input/Input";
|
|
15
|
+
export default function SidebarInput(_a) {
|
|
16
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
17
|
+
return (_jsx(Input, Object.assign({ "data-slot": "sidebar-input", "data-sidebar": "input", className: cn("h-8 w-full bg-background shadow-none", className) }, props)));
|
|
18
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import cn from "../../cn";
|
|
14
|
+
export default function SidebarInset(_a) {
|
|
15
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
16
|
+
return (_jsx("main", Object.assign({ "data-slot": "sidebar-inset", className: cn("relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2", className) }, props)));
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import cn from "../../cn";
|
|
14
|
+
export default function SidebarMenu(_a) {
|
|
15
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
16
|
+
return (_jsx("ul", Object.assign({ "data-slot": "sidebar-menu", "data-sidebar": "menu", className: cn("flex w-full min-w-0 flex-col gap-1", className) }, props)));
|
|
17
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
2
|
+
import { type ComponentProps } from "react";
|
|
3
|
+
export default function SidebarMenuAction({ className, render, showOnHover, ...props }: useRender.ComponentProps<"button"> & ComponentProps<"button"> & {
|
|
4
|
+
showOnHover?: boolean;
|
|
5
|
+
}): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
13
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
14
|
+
import cn from "../../cn";
|
|
15
|
+
export default function SidebarMenuAction(_a) {
|
|
16
|
+
var { className, render, showOnHover = false } = _a, props = __rest(_a, ["className", "render", "showOnHover"]);
|
|
17
|
+
return useRender({
|
|
18
|
+
defaultTagName: "button",
|
|
19
|
+
props: mergeProps({
|
|
20
|
+
className: cn("absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-card-foreground ring-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0", showOnHover &&
|
|
21
|
+
"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-accent-foreground md:opacity-0 data-open:opacity-100", className),
|
|
22
|
+
}, props),
|
|
23
|
+
render,
|
|
24
|
+
state: {
|
|
25
|
+
slot: "sidebar-menu-action",
|
|
26
|
+
sidebar: "menu-action",
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import cn from "../../cn";
|
|
14
|
+
export default function SidebarMenuBadge(_a) {
|
|
15
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
16
|
+
return (_jsx("div", Object.assign({ "data-slot": "sidebar-menu-badge", "data-sidebar": "menu-badge", className: cn("pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-card-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-accent-foreground", className) }, props)));
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
import { type ComponentProps } from "react";
|
|
4
|
+
import TooltipContent from "../../components/tooltip/TooltipContent";
|
|
5
|
+
import sidebarMenuButtonVariants from "./sidebarMenuButtonVariants";
|
|
6
|
+
export default function SidebarMenuButton({ render, isActive, variant, size, tooltip, className, ...props }: useRender.ComponentProps<"button"> & ComponentProps<"button"> & {
|
|
7
|
+
isActive?: boolean;
|
|
8
|
+
tooltip?: string | ComponentProps<typeof TooltipContent>;
|
|
9
|
+
} & VariantProps<typeof sidebarMenuButtonVariants>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
14
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
15
|
+
import cn from "../../cn";
|
|
16
|
+
import Tooltip from "../../components/tooltip/Tooltip";
|
|
17
|
+
import TooltipContent from "../../components/tooltip/TooltipContent";
|
|
18
|
+
import TooltipTrigger from "../../components/tooltip/TooltipTrigger";
|
|
19
|
+
import sidebarMenuButtonVariants from "./sidebarMenuButtonVariants";
|
|
20
|
+
import useSidebar from "./useSidebar";
|
|
21
|
+
export default function SidebarMenuButton(_a) {
|
|
22
|
+
var { render, isActive = false, variant = "default", size = "default", tooltip, className } = _a, props = __rest(_a, ["render", "isActive", "variant", "size", "tooltip", "className"]);
|
|
23
|
+
const { isMobile, state } = useSidebar();
|
|
24
|
+
const comp = useRender({
|
|
25
|
+
defaultTagName: "button",
|
|
26
|
+
props: mergeProps({
|
|
27
|
+
className: cn(sidebarMenuButtonVariants({ variant, size }), className),
|
|
28
|
+
}, props),
|
|
29
|
+
render: !tooltip ? render : TooltipTrigger,
|
|
30
|
+
state: {
|
|
31
|
+
slot: "sidebar-menu-button",
|
|
32
|
+
sidebar: "menu-button",
|
|
33
|
+
size,
|
|
34
|
+
active: isActive,
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
if (!tooltip) {
|
|
38
|
+
return comp;
|
|
39
|
+
}
|
|
40
|
+
if (typeof tooltip === "string") {
|
|
41
|
+
tooltip = {
|
|
42
|
+
children: tooltip,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return (_jsxs(Tooltip, { children: [comp, _jsx(TooltipContent, Object.assign({ side: "right", align: "center", hidden: state !== "collapsed" || isMobile }, tooltip))] }));
|
|
46
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import cn from "../../cn";
|
|
14
|
+
export default function SidebarMenuItem(_a) {
|
|
15
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
16
|
+
return (_jsx("li", Object.assign({ "data-slot": "sidebar-menu-item", "data-sidebar": "menu-item", className: cn("group/menu-item relative", className) }, props)));
|
|
17
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { useState } from "react";
|
|
14
|
+
import cn from "../../cn";
|
|
15
|
+
import Skeleton from "../../components/skeleton/Skeleton";
|
|
16
|
+
export default function SidebarMenuSkeleton(_a) {
|
|
17
|
+
var { className, showIcon = false } = _a, props = __rest(_a, ["className", "showIcon"]);
|
|
18
|
+
// Random width between 50 to 90%.
|
|
19
|
+
const [width] = useState(() => `${Math.floor(Math.random() * 40) + 50}%`);
|
|
20
|
+
return (_jsxs("div", Object.assign({ "data-slot": "sidebar-menu-skeleton", "data-sidebar": "menu-skeleton", className: cn("flex h-8 items-center gap-2 rounded-md px-2", className) }, props, { children: [showIcon && _jsx(Skeleton, { className: "size-4 rounded-md", "data-sidebar": "menu-skeleton-icon" }), _jsx(Skeleton, { className: "h-4 max-w-(--skeleton-width) flex-1", "data-sidebar": "menu-skeleton-text", style: {
|
|
21
|
+
"--skeleton-width": width,
|
|
22
|
+
} })] })));
|
|
23
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import cn from "../../cn";
|
|
14
|
+
export default function SidebarMenuSub(_a) {
|
|
15
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
16
|
+
return (_jsx("ul", Object.assign({ "data-slot": "sidebar-menu-sub", "data-sidebar": "menu-sub", className: cn("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden", className) }, props)));
|
|
17
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
2
|
+
import { type ComponentProps } from "react";
|
|
3
|
+
export default function SidebarMenuSubButton({ render, size, isActive, className, ...props }: useRender.ComponentProps<"a"> & ComponentProps<"a"> & {
|
|
4
|
+
size?: "sm" | "md";
|
|
5
|
+
isActive?: boolean;
|
|
6
|
+
}): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
13
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
14
|
+
import cn from "../../cn";
|
|
15
|
+
export default function SidebarMenuSubButton(_a) {
|
|
16
|
+
var { render, size = "md", isActive = false, className } = _a, props = __rest(_a, ["render", "size", "isActive", "className"]);
|
|
17
|
+
return useRender({
|
|
18
|
+
defaultTagName: "a",
|
|
19
|
+
props: mergeProps({
|
|
20
|
+
className: cn("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-card-foreground ring-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 active:bg-accent active:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs data-active:bg-accent data-active:text-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-accent-foreground", className),
|
|
21
|
+
}, props),
|
|
22
|
+
render,
|
|
23
|
+
state: {
|
|
24
|
+
slot: "sidebar-menu-sub-button",
|
|
25
|
+
sidebar: "menu-sub-button",
|
|
26
|
+
size,
|
|
27
|
+
active: isActive,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import cn from "../../cn";
|
|
14
|
+
export default function SidebarMenuSubItem(_a) {
|
|
15
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
16
|
+
return (_jsx("li", Object.assign({ "data-slot": "sidebar-menu-sub-item", "data-sidebar": "menu-sub-item", className: cn("group/menu-sub-item relative", className) }, props)));
|
|
17
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type ComponentProps } from "react";
|
|
2
|
+
export declare const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
3
|
+
export declare const SIDEBAR_COOKIE_MAX_AGE: number;
|
|
4
|
+
export declare const SIDEBAR_WIDTH = "16rem";
|
|
5
|
+
export declare const SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
6
|
+
export declare const SIDEBAR_WIDTH_ICON = "3rem";
|
|
7
|
+
export declare const SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
8
|
+
type SidebarContextProps = {
|
|
9
|
+
state: "expanded" | "collapsed";
|
|
10
|
+
open: boolean;
|
|
11
|
+
setOpen: (open: boolean) => void;
|
|
12
|
+
openMobile: boolean;
|
|
13
|
+
setOpenMobile: (open: boolean) => void;
|
|
14
|
+
isMobile: boolean;
|
|
15
|
+
toggleSidebar: () => void;
|
|
16
|
+
};
|
|
17
|
+
export declare const SidebarContext: import("react").Context<SidebarContextProps | null>;
|
|
18
|
+
export default function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: ComponentProps<"div"> & {
|
|
19
|
+
defaultOpen?: boolean;
|
|
20
|
+
open?: boolean;
|
|
21
|
+
onOpenChange?: (open: boolean) => void;
|
|
22
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
import { createContext, useCallback, useEffect, useMemo, useState, } from "react";
|
|
15
|
+
import cn from "../../cn";
|
|
16
|
+
import useIsMobile from "./useIsMobile";
|
|
17
|
+
export const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
18
|
+
export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
19
|
+
export const SIDEBAR_WIDTH = "16rem";
|
|
20
|
+
export const SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
21
|
+
export const SIDEBAR_WIDTH_ICON = "3rem";
|
|
22
|
+
export const SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
23
|
+
export const SidebarContext = createContext(null);
|
|
24
|
+
export default function SidebarProvider(_a) {
|
|
25
|
+
var { defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children } = _a, props = __rest(_a, ["defaultOpen", "open", "onOpenChange", "className", "style", "children"]);
|
|
26
|
+
const isMobile = useIsMobile();
|
|
27
|
+
const [openMobile, setOpenMobile] = useState(false);
|
|
28
|
+
// This is the internal state of the sidebar.
|
|
29
|
+
// We use openProp and setOpenProp for control from outside the component.
|
|
30
|
+
const [_open, _setOpen] = useState(defaultOpen);
|
|
31
|
+
const open = openProp !== null && openProp !== void 0 ? openProp : _open;
|
|
32
|
+
const setOpen = useCallback((value) => {
|
|
33
|
+
const openState = typeof value === "function" ? value(open) : value;
|
|
34
|
+
if (setOpenProp) {
|
|
35
|
+
setOpenProp(openState);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
_setOpen(openState);
|
|
39
|
+
}
|
|
40
|
+
// This sets the cookie to keep the sidebar state.
|
|
41
|
+
document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
|
|
42
|
+
}, [setOpenProp, open]);
|
|
43
|
+
// Helper to toggle the sidebar.
|
|
44
|
+
const toggleSidebar = useCallback(() => (isMobile ? setOpenMobile((prev) => !prev) : setOpen((prev) => !prev)), [isMobile, setOpen, setOpenMobile]);
|
|
45
|
+
// Adds a keyboard shortcut to toggle the sidebar.
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
const handleKeyDown = (event) => {
|
|
48
|
+
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
toggleSidebar();
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
54
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
55
|
+
}, [toggleSidebar]);
|
|
56
|
+
// We add a state so that we can do data-state="expanded" or "collapsed".
|
|
57
|
+
// This makes it easier to style the sidebar with Tailwind classes.
|
|
58
|
+
const state = open ? "expanded" : "collapsed";
|
|
59
|
+
const contextValue = useMemo(() => ({
|
|
60
|
+
state,
|
|
61
|
+
open,
|
|
62
|
+
setOpen,
|
|
63
|
+
isMobile,
|
|
64
|
+
openMobile,
|
|
65
|
+
setOpenMobile,
|
|
66
|
+
toggleSidebar,
|
|
67
|
+
}), [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]);
|
|
68
|
+
return (_jsx(SidebarContext.Provider, { value: contextValue, children: _jsx("div", Object.assign({ "data-slot": "sidebar-wrapper", style: Object.assign({ "--sidebar-width": SIDEBAR_WIDTH, "--sidebar-width-icon": SIDEBAR_WIDTH_ICON }, style), className: cn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-card", className) }, props, { children: children })) }));
|
|
69
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
import cn from "../../cn";
|
|
15
|
+
import useSidebar from "./useSidebar";
|
|
16
|
+
export default function SidebarRail(_a) {
|
|
17
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
18
|
+
const { toggleSidebar } = useSidebar();
|
|
19
|
+
return (_jsx("button", Object.assign({ "data-sidebar": "rail", "data-slot": "sidebar-rail", "aria-label": "Toggle Sidebar", tabIndex: -1, onClick: toggleSidebar, title: "Toggle Sidebar", className: cn("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-0.5 hover:after:bg-border sm:flex", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "group-data-[collapsible=offExamples]:translate-x-0 group-data-[collapsible=offExamples]:after:left-full hover:group-data-[collapsible=offExamples]:bg-card", "[[data-side=left][data-collapsible=offExamples]_&]:-right-2", "[[data-side=right][data-collapsible=offExamples]_&]:-left-2", className) }, props)));
|
|
20
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import cn from "../../cn";
|
|
14
|
+
import Separator from "../../components/separator/Separator";
|
|
15
|
+
export default function SidebarSeparator(_a) {
|
|
16
|
+
var { className } = _a, props = __rest(_a, ["className"]);
|
|
17
|
+
return (_jsx(Separator, Object.assign({ "data-slot": "sidebar-separator", "data-sidebar": "separator", className: cn("mx-2 w-auto bg-border", className) }, props)));
|
|
18
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
import { IconLayoutSidebar } from "@tabler/icons-react";
|
|
15
|
+
import cn from "../../cn";
|
|
16
|
+
import Button from "../../components/button/Button";
|
|
17
|
+
import useSidebar from "./useSidebar";
|
|
18
|
+
export default function SidebarTrigger(_a) {
|
|
19
|
+
var { className, onClick } = _a, props = __rest(_a, ["className", "onClick"]);
|
|
20
|
+
const { toggleSidebar } = useSidebar();
|
|
21
|
+
return (_jsxs(Button, Object.assign({ "data-sidebar": "trigger", "data-slot": "sidebar-trigger", variant: "ghost", size: "icon-sm", className: cn(className), onClick: (event) => {
|
|
22
|
+
onClick === null || onClick === void 0 ? void 0 : onClick(event);
|
|
23
|
+
toggleSidebar();
|
|
24
|
+
} }, props, { children: [_jsx(IconLayoutSidebar, {}), _jsx("span", { className: "sr-only", children: "Toggle Sidebar" })] })));
|
|
25
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare const sidebarMenuButtonVariants: (props?: ({
|
|
2
|
+
variant?: "default" | "outline" | null | undefined;
|
|
3
|
+
size?: "default" | "sm" | "lg" | null | undefined;
|
|
4
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
5
|
+
export default sidebarMenuButtonVariants;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { cva } from "class-variance-authority";
|
|
2
|
+
const sidebarMenuButtonVariants = cva("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-accent hover:text-accent-foreground focus-visible:ring-2 active:bg-accent active:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-accent data-open:hover:text-accent-foreground data-active:bg-accent data-active:font-medium data-active:text-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate", {
|
|
3
|
+
variants: {
|
|
4
|
+
variant: {
|
|
5
|
+
default: "hover:bg-accent hover:text-accent-foreground",
|
|
6
|
+
outline: "bg-background shadow-[0_0_0_1px_hsl(var(--border))] hover:bg-accent hover:text-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--accent))]",
|
|
7
|
+
},
|
|
8
|
+
size: {
|
|
9
|
+
default: "h-8 text-sm",
|
|
10
|
+
sm: "h-7 text-xs",
|
|
11
|
+
lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
defaultVariants: {
|
|
15
|
+
variant: "default",
|
|
16
|
+
size: "default",
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
export default sidebarMenuButtonVariants;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function useIsMobile(): boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
export default function useIsMobile() {
|
|
3
|
+
const [isMobile, setIsMobile] = useState(false);
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
const mql = window.matchMedia("(max-width: 768px)");
|
|
6
|
+
const onChange = () => {
|
|
7
|
+
setIsMobile(mql.matches);
|
|
8
|
+
};
|
|
9
|
+
mql.addEventListener("change", onChange);
|
|
10
|
+
setIsMobile(mql.matches);
|
|
11
|
+
return () => mql.removeEventListener("change", onChange);
|
|
12
|
+
}, []);
|
|
13
|
+
return isMobile;
|
|
14
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useContext } from "react";
|
|
2
|
+
import { SidebarContext } from "./SidebarProvider";
|
|
3
|
+
export default function useSidebar() {
|
|
4
|
+
const context = useContext(SidebarContext);
|
|
5
|
+
if (!context) {
|
|
6
|
+
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
7
|
+
}
|
|
8
|
+
return context;
|
|
9
|
+
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { IconLoader } from "@tabler/icons-react";
|
|
2
|
-
|
|
2
|
+
import { type ComponentProps } from "react";
|
|
3
|
+
export default function Spinner({ className, ...props }: ComponentProps<typeof IconLoader>): import("react/jsx-runtime").JSX.Element;
|