@akira-io/ui 2.1.0 → 2.2.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/blocks.d.ts +4 -4
- package/dist/blocks.js +2 -1
- package/dist/blocks.js.map +1 -1
- package/dist/chunk-EXTOGROG.js +42 -0
- package/dist/chunk-EXTOGROG.js.map +1 -0
- package/dist/{chunk-XLAOE5MV.js → chunk-MCHHCLV3.js} +2 -2
- package/dist/{chunk-ZQXZ4UGE.js → chunk-PYXUFFMO.js} +10 -3
- package/dist/chunk-PYXUFFMO.js.map +1 -0
- package/dist/{chunk-DPLCEU34.js → chunk-RE4M2G2Y.js} +76 -85
- package/dist/chunk-RE4M2G2Y.js.map +1 -0
- package/dist/{context-2wTOwxCk.d.ts → context-Dqf-5Qne.d.ts} +2 -1
- package/dist/index.d.ts +22 -9
- package/dist/index.js +147 -114
- package/dist/index.js.map +1 -1
- package/dist/inertia.js +3 -2
- package/dist/inertia.js.map +1 -1
- package/dist/locales/fr.d.ts +1 -1
- package/dist/locales/pt.d.ts +1 -1
- package/dist/shells.d.ts +1 -1
- package/dist/shells.js +3 -2
- package/dist/shells.js.map +1 -1
- package/dist/{sidebar-BLL2tgTt.d.ts → sidebar-_xQ3IehY.d.ts} +3 -1
- package/package.json +1 -1
- package/dist/chunk-DPLCEU34.js.map +0 -1
- package/dist/chunk-ZQXZ4UGE.js.map +0 -1
- /package/dist/{chunk-XLAOE5MV.js.map → chunk-MCHHCLV3.js.map} +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// src/components/ui/floating-sheet-context.ts
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
var floatingSheetDefaultLabels = {
|
|
4
|
+
backLabel: "Back",
|
|
5
|
+
closeLabel: "Close"
|
|
6
|
+
};
|
|
7
|
+
var FLOATING_SHEET_OFFSET_LIMIT = 3;
|
|
8
|
+
var FloatingSheetStackContext = React.createContext(null);
|
|
9
|
+
function useFloatingSheetStack() {
|
|
10
|
+
const context = React.useContext(FloatingSheetStackContext);
|
|
11
|
+
if (!context) {
|
|
12
|
+
throw new Error(
|
|
13
|
+
"FloatingSheet must be rendered inside a FloatingSheetStack."
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
return context;
|
|
17
|
+
}
|
|
18
|
+
var floatingSheetDefaultEdges = {
|
|
19
|
+
top: true,
|
|
20
|
+
bottom: true
|
|
21
|
+
};
|
|
22
|
+
var FloatingSheetEdgesContext = React.createContext(floatingSheetDefaultEdges);
|
|
23
|
+
var FloatingSheetReportEdgesContext = React.createContext(null);
|
|
24
|
+
|
|
25
|
+
// src/hooks/use-sheet-portal-container.ts
|
|
26
|
+
import * as React2 from "react";
|
|
27
|
+
function useSheetPortalContainer(container) {
|
|
28
|
+
const stack = React2.useContext(FloatingSheetStackContext);
|
|
29
|
+
return container ?? stack?.container ?? void 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
floatingSheetDefaultLabels,
|
|
34
|
+
FLOATING_SHEET_OFFSET_LIMIT,
|
|
35
|
+
FloatingSheetStackContext,
|
|
36
|
+
useFloatingSheetStack,
|
|
37
|
+
floatingSheetDefaultEdges,
|
|
38
|
+
FloatingSheetEdgesContext,
|
|
39
|
+
FloatingSheetReportEdgesContext,
|
|
40
|
+
useSheetPortalContainer
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=chunk-EXTOGROG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/floating-sheet-context.ts","../src/hooks/use-sheet-portal-container.ts"],"sourcesContent":["import * as React from 'react';\n\nexport interface FloatingSheetLabels {\n backLabel: string;\n closeLabel: string;\n}\n\nexport const floatingSheetDefaultLabels: FloatingSheetLabels = {\n backLabel: 'Back',\n closeLabel: 'Close',\n};\n\nexport const FLOATING_SHEET_OFFSET_LIMIT = 3;\n\nexport interface FloatingSheetStackEntry {\n id: string;\n title: React.ReactNode;\n persistent: boolean;\n close: () => void;\n}\n\nexport interface FloatingSheetStackContextValue {\n labels: FloatingSheetLabels;\n container: HTMLElement | null;\n entries: FloatingSheetStackEntry[];\n register: (entry: FloatingSheetStackEntry) => void;\n unregister: (id: string) => void;\n closeAll: () => void;\n}\n\nexport const FloatingSheetStackContext =\n React.createContext<FloatingSheetStackContextValue | null>(null);\n\nexport function useFloatingSheetStack(): FloatingSheetStackContextValue {\n const context = React.useContext(FloatingSheetStackContext);\n\n if (!context) {\n throw new Error(\n 'FloatingSheet must be rendered inside a FloatingSheetStack.',\n );\n }\n\n return context;\n}\n\nexport interface FloatingSheetEdges {\n top: boolean;\n bottom: boolean;\n}\n\nexport const floatingSheetDefaultEdges: FloatingSheetEdges = {\n top: true,\n bottom: true,\n};\n\nexport const FloatingSheetEdgesContext =\n React.createContext<FloatingSheetEdges>(floatingSheetDefaultEdges);\n\nexport const FloatingSheetReportEdgesContext = React.createContext<\n ((edges: FloatingSheetEdges) => void) | null\n>(null);\n","import * as React from 'react';\n\nimport { FloatingSheetStackContext } from '@/components/ui/floating-sheet-context';\n\nexport function useSheetPortalContainer(\n container?: HTMLElement | null,\n): HTMLElement | undefined {\n const stack = React.useContext(FloatingSheetStackContext);\n\n return container ?? stack?.container ?? undefined;\n}\n"],"mappings":";AAAA,YAAY,WAAW;AAOhB,IAAM,6BAAkD;AAAA,EAC3D,WAAW;AAAA,EACX,YAAY;AAChB;AAEO,IAAM,8BAA8B;AAkBpC,IAAM,4BACH,oBAAqD,IAAI;AAE5D,SAAS,wBAAwD;AACpE,QAAM,UAAgB,iBAAW,yBAAyB;AAE1D,MAAI,CAAC,SAAS;AACV,UAAM,IAAI;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAOO,IAAM,4BAAgD;AAAA,EACzD,KAAK;AAAA,EACL,QAAQ;AACZ;AAEO,IAAM,4BACH,oBAAkC,yBAAyB;AAE9D,IAAM,kCAAwC,oBAEnD,IAAI;;;AC5DN,YAAYA,YAAW;AAIhB,SAAS,wBACZ,WACuB;AACvB,QAAM,QAAc,kBAAW,yBAAyB;AAExD,SAAO,aAAa,OAAO,aAAa;AAC5C;","names":["React"]}
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
SidebarTrigger,
|
|
33
33
|
useIsMobile,
|
|
34
34
|
useSidebar
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-PYXUFFMO.js";
|
|
36
36
|
import {
|
|
37
37
|
hrefToString,
|
|
38
38
|
resolveLink
|
|
@@ -602,4 +602,4 @@ export {
|
|
|
602
602
|
Heading,
|
|
603
603
|
SettingsLayout
|
|
604
604
|
};
|
|
605
|
-
//# sourceMappingURL=chunk-
|
|
605
|
+
//# sourceMappingURL=chunk-MCHHCLV3.js.map
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useSheetPortalContainer
|
|
3
|
+
} from "./chunk-EXTOGROG.js";
|
|
1
4
|
import {
|
|
2
5
|
Input,
|
|
3
6
|
Separator
|
|
@@ -44,9 +47,11 @@ function DropdownMenuContent({
|
|
|
44
47
|
className,
|
|
45
48
|
sideOffset = 4,
|
|
46
49
|
slotName = "dropdown-menu-content",
|
|
50
|
+
container,
|
|
47
51
|
...props
|
|
48
52
|
}) {
|
|
49
|
-
|
|
53
|
+
const portalContainer = useSheetPortalContainer(container);
|
|
54
|
+
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
|
|
50
55
|
DropdownMenuPrimitive.Content,
|
|
51
56
|
{
|
|
52
57
|
sideOffset,
|
|
@@ -665,9 +670,11 @@ function TooltipContent({
|
|
|
665
670
|
sideOffset = 4,
|
|
666
671
|
children,
|
|
667
672
|
slotName = "tooltip-content",
|
|
673
|
+
container,
|
|
668
674
|
...props
|
|
669
675
|
}) {
|
|
670
|
-
|
|
676
|
+
const portalContainer = useSheetPortalContainer(container);
|
|
677
|
+
return /* @__PURE__ */ jsx8(TooltipPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs4(
|
|
671
678
|
TooltipPrimitive.Content,
|
|
672
679
|
{
|
|
673
680
|
sideOffset,
|
|
@@ -1461,4 +1468,4 @@ export {
|
|
|
1461
1468
|
SidebarMenuSubItem,
|
|
1462
1469
|
SidebarMenuSubButton
|
|
1463
1470
|
};
|
|
1464
|
-
//# sourceMappingURL=chunk-
|
|
1471
|
+
//# sourceMappingURL=chunk-PYXUFFMO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ui/dropdown-menu.tsx","../src/components/ui/avatar.tsx","../src/components/ui/breadcrumb.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/icon.tsx","../src/components/ui/sheet.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/tooltip.tsx","../src/hooks/use-mobile.tsx","../src/components/ui/sidebar.tsx"],"sourcesContent":["import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { useSheetPortalContainer } from '@/hooks/use-sheet-portal-container';\nimport { menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction DropdownMenu({\n modal = false,\n slotName = 'dropdown-menu',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root> & SlotNameProps) {\n return (\n <DropdownMenuPrimitive.Root\n modal={modal}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DropdownMenuPortal({\n slotName = 'dropdown-menu-portal',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal> & SlotNameProps) {\n return <DropdownMenuPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction DropdownMenuTrigger({\n slotName = 'dropdown-menu-trigger',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger> & SlotNameProps) {\n return <DropdownMenuPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction DropdownMenuContent({\n className,\n sideOffset = 4,\n slotName = 'dropdown-menu-content',\n container,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content> &\n SlotNameProps & { container?: HTMLElement | null }) {\n const portalContainer = useSheetPortalContainer(container);\n\n return (\n <DropdownMenuPrimitive.Portal container={portalContainer}>\n <DropdownMenuPrimitive.Content\n sideOffset={sideOffset}\n className={cn(\n `${menuSurface} data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 p-1.5 z-50 min-w-[8rem] overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({\n slotName = 'dropdown-menu-group',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group> & SlotNameProps) {\n return <DropdownMenuPrimitive.Group {...props} data-slot={slotName} />;\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = 'default',\n slotName = 'dropdown-menu-item',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n} & SlotNameProps) {\n return (\n <DropdownMenuPrimitive.Item\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"font-medium gap-2 rounded-xl px-2 py-2 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-5 focus:font-semibold relative flex cursor-default items-center outline-hidden transition-all select-none focus:bg-primary/10 focus:text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:!text-destructive\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n slotName = 'dropdown-menu-checkbox-item',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> &\n SlotNameProps) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n slotName = 'dropdown-menu-radio-group',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup> &\n SlotNameProps) {\n return <DropdownMenuPrimitive.RadioGroup {...props} data-slot={slotName} />;\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n slotName = 'dropdown-menu-radio-item',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> &\n SlotNameProps) {\n return (\n <DropdownMenuPrimitive.RadioItem\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n slotName = 'dropdown-menu-label',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <DropdownMenuPrimitive.Label\n data-inset={inset}\n className={cn(\n 'px-2 py-2 text-xs font-medium tracking-wider data-[inset]:pl-8 text-muted-foreground uppercase',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n slotName = 'dropdown-menu-separator',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator> &\n SlotNameProps) {\n return (\n <DropdownMenuPrimitive.Separator\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DropdownMenuShortcut({\n className,\n slotName = 'dropdown-menu-shortcut',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DropdownMenuSub({\n slotName = 'dropdown-menu-sub',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub> & SlotNameProps) {\n return <DropdownMenuPrimitive.Sub {...props} data-slot={slotName} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n slotName = 'dropdown-menu-sub-trigger',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-inset={inset}\n className={cn(\n 'font-medium rounded-xl px-2 py-2 text-sm data-[inset]:pl-8 focus:font-semibold data-[state=open]:font-semibold flex cursor-default items-center outline-hidden transition-all select-none focus:bg-primary/10 focus:text-primary data-[state=open]:bg-primary/10 data-[state=open]:text-primary',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronRightIcon className=\"size-4 ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n slotName = 'dropdown-menu-sub-content',\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent> &\n SlotNameProps) {\n return (\n <DropdownMenuPrimitive.SubContent\n className={cn(\n `${menuSurface} data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 p-1.5 z-50 min-w-[8rem] overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n};\n","import * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Avatar({\n className,\n slotName = 'avatar',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> & SlotNameProps) {\n return (\n <AvatarPrimitive.Root\n className={cn(\n 'size-8 relative flex shrink-0 overflow-hidden rounded-full',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AvatarImage({\n className,\n slotName = 'avatar-image',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image> & SlotNameProps) {\n return (\n <AvatarPrimitive.Image\n className={cn('aspect-square size-full', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n slotName = 'avatar-fallback',\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback> & SlotNameProps) {\n return (\n <AvatarPrimitive.Fallback\n className={cn(\n 'flex size-full items-center justify-center rounded-full bg-muted',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { Avatar, AvatarFallback, AvatarImage };\n","import { Slot } from '@radix-ui/react-slot';\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Breadcrumb({\n slotName = 'breadcrumb',\n ...props\n}: React.ComponentProps<'nav'> & SlotNameProps) {\n return <nav aria-label=\"breadcrumb\" {...props} data-slot={slotName} />;\n}\n\nfunction BreadcrumbList({\n className,\n slotName = 'breadcrumb-list',\n ...props\n}: React.ComponentProps<'ol'> & SlotNameProps) {\n return (\n <ol\n className={cn(\n 'gap-1.5 text-sm sm:gap-2.5 flex flex-wrap items-center break-words text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction BreadcrumbItem({\n className,\n slotName = 'breadcrumb-item',\n ...props\n}: React.ComponentProps<'li'> & SlotNameProps) {\n return (\n <li\n className={cn('gap-1.5 inline-flex items-center', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction BreadcrumbLink({\n asChild,\n className,\n slotName = 'breadcrumb-link',\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n} & SlotNameProps) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n className={cn('transition-colors hover:text-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction BreadcrumbPage({\n className,\n slotName = 'breadcrumb-page',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('font-semibold text-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n slotName = 'breadcrumb-separator',\n ...props\n}: React.ComponentProps<'li'> & SlotNameProps) {\n return (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn('[&>svg]:size-3.5', className)}\n {...props}\n data-slot={slotName}\n >\n {children ?? <ChevronRight />}\n </li>\n );\n}\n\nfunction BreadcrumbEllipsis({\n className,\n slotName = 'breadcrumb-ellipsis',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n 'size-9 rounded-xl flex items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n );\n}\n\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n};\n","import type { SlotNameProps } from '@/types';\nimport * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\n\nfunction Collapsible({\n slotName = 'collapsible',\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.Root> & SlotNameProps) {\n return <CollapsiblePrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction CollapsibleTrigger({\n slotName = 'collapsible-trigger',\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger> &\n SlotNameProps) {\n return (\n <CollapsiblePrimitive.CollapsibleTrigger\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction CollapsibleContent({\n slotName = 'collapsible-content',\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent> &\n SlotNameProps) {\n return (\n <CollapsiblePrimitive.CollapsibleContent\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { Collapsible, CollapsibleContent, CollapsibleTrigger };\n","import type { IconComponent } from '@/types';\n\ninterface IconProps {\n iconNode?: IconComponent | null;\n className?: string;\n}\n\nexport function Icon({ iconNode: IconComponent, className }: IconProps) {\n if (!IconComponent) {\n return null;\n }\n\n return <IconComponent className={className} />;\n}\n","import * as SheetPrimitive from '@radix-ui/react-dialog';\nimport { XIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { floatingSurface, focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Sheet({\n preserveScroll = false,\n onOpenChange: onOpenChangeProp,\n slotName = 'sheet',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Root> & {\n preserveScroll?: boolean;\n} & SlotNameProps) {\n const scrollPosition = React.useRef(0);\n\n const onOpenChange = (open: boolean) => {\n if (preserveScroll) {\n if (open) {\n scrollPosition.current = window.scrollY;\n } else {\n setTimeout(() => {\n window.scrollTo(0, scrollPosition.current);\n }, 0);\n }\n }\n\n onOpenChangeProp?.(open);\n };\n\n return (\n <SheetPrimitive.Root\n {...props}\n onOpenChange={onOpenChange}\n data-slot={slotName}\n />\n );\n}\n\nfunction SheetTrigger({\n slotName = 'sheet-trigger',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger> & SlotNameProps) {\n return <SheetPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction SheetClose({\n slotName = 'sheet-close',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close> & SlotNameProps) {\n return <SheetPrimitive.Close {...props} data-slot={slotName} />;\n}\n\nfunction SheetPortal({\n slotName = 'sheet-portal',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal> & SlotNameProps) {\n return <SheetPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction SheetOverlay({\n className,\n slotName = 'sheet-overlay',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay> & SlotNameProps) {\n return (\n <SheetPrimitive.Overlay\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0 bg-black/60 backdrop-blur-sm fixed z-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SheetContent({\n className,\n children,\n side = 'right',\n slotName = 'sheet-content',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n} & SlotNameProps) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n className={cn(\n `${floatingSurface} data-[state=open]:animate-in data-[state=closed]:animate-out gap-4 ease-in-out fixed z-50 flex flex-col transition data-[state=closed]:duration-300 data-[state=open]:duration-500`,\n side === 'right' &&\n 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 sm:max-w-sm rounded-l-3xl h-full w-3/4 border-l border-border',\n side === 'left' &&\n 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 sm:max-w-sm rounded-r-3xl h-full w-3/4 border-r border-border',\n side === 'top' &&\n 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 rounded-b-3xl h-auto border-b border-border',\n side === 'bottom' &&\n 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 rounded-t-3xl h-auto border-t border-border',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <SheetPrimitive.Close\n className={cn(\n 'top-4 right-4 size-9 shadow-xs absolute flex items-center justify-center rounded-full border border-border bg-muted text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none',\n focusRing,\n )}\n >\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n );\n}\n\nfunction SheetHeader({\n className,\n slotName = 'sheet-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn('gap-1.5 p-4 flex flex-col', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SheetFooter({\n className,\n slotName = 'sheet-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn('gap-2 p-4 mt-auto flex flex-col', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SheetTitle({\n className,\n slotName = 'sheet-title',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title> & SlotNameProps) {\n return (\n <SheetPrimitive.Title\n className={cn('font-semibold text-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SheetDescription({\n className,\n slotName = 'sheet-description',\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description> & SlotNameProps) {\n return (\n <SheetPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Sheet,\n SheetClose,\n SheetContent,\n SheetDescription,\n SheetFooter,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n};\n","import { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Skeleton({\n className,\n slotName = 'skeleton',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn('animate-pulse rounded-xl bg-muted', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { Skeleton };\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport * as React from 'react';\n\nimport { useSheetPortalContainer } from '@/hooks/use-sheet-portal-container';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction TooltipProvider({\n delayDuration = 0,\n slotName = 'tooltip-provider',\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider> & SlotNameProps) {\n return (\n <TooltipPrimitive.Provider\n delayDuration={delayDuration}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction Tooltip({\n slotName = 'tooltip',\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root> & SlotNameProps) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root {...props} data-slot={slotName} />\n </TooltipProvider>\n );\n}\n\nfunction TooltipTrigger({\n slotName = 'tooltip-trigger',\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger> & SlotNameProps) {\n return <TooltipPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 4,\n children,\n slotName = 'tooltip-content',\n container,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> &\n SlotNameProps & { container?: HTMLElement | null }) {\n const portalContainer = useSheetPortalContainer(container);\n\n return (\n <TooltipPrimitive.Portal container={portalContainer}>\n <TooltipPrimitive.Content\n sideOffset={sideOffset}\n className={cn(\n 'animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 max-w-sm px-3 py-1.5 text-xs shadow-2xl rounded-xl z-50 bg-primary text-primary-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"size-2.5 z-50 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-primary fill-primary\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };\n","import { useEffect, useState } from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = useState<boolean>();\n\n useEffect(() => {\n const mql = window.matchMedia(\n `(max-width: ${MOBILE_BREAKPOINT - 1}px)`,\n );\n\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n };\n\n mql.addEventListener('change', onChange);\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);\n\n return () => mql.removeEventListener('change', onChange);\n }, []);\n\n return !!isMobile;\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport { VariantProps, cva } from 'class-variance-authority';\nimport { PanelLeftIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { Separator } from '@/components/ui/separator';\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from '@/components/ui/sheet';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/ui/tooltip';\nimport { useIsMobile } from '@/hooks/use-mobile';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_MOBILE = '18rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n\n return context;\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n slotName = 'sidebar-wrapper',\n ...props\n}: React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n} & SlotNameProps) {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n },\n [setOpenProp, open],\n );\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile\n ? setOpenMobile((open) => !open)\n : setOpen((open) => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n ],\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n}\n\nfunction Sidebar({\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n slotName = 'sidebar',\n ...props\n}: React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n} & SlotNameProps) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn(\n 'flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <Sheet\n open={openMobile}\n onOpenChange={setOpenMobile}\n {...props}\n preserveScroll\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>\n Displays the mobile sidebar.\n </SheetDescription>\n </SheetHeader>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"p-0 w-(--sidebar-width) rounded-none bg-sidebar text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n slotName={slotName}\n >\n <div className=\"flex h-full w-full flex-col\">\n {children}\n </div>\n </SheetContent>\n </Sheet>\n );\n }\n\n return (\n <div\n className=\"group peer md:block hidden text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-slot={slotName}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'relative h-svh w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',\n )}\n />\n <div\n className={cn(\n 'inset-y-0 md:flex fixed z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'\n : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className,\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:rounded-2xl flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n slotName = 'sidebar-trigger',\n ...props\n}: React.ComponentProps<typeof Button> & SlotNameProps) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('h-7 w-7', className)}\n onClick={(event) => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n slotName={slotName}\n >\n <PanelLeftIcon />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n}\n\nfunction SidebarRail({\n className,\n slotName = 'sidebar-rail',\n ...props\n}: React.ComponentProps<'button'> & SlotNameProps) {\n const { toggleSidebar } = useSidebar();\n\n return (\n <button\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'inset-y-0 w-4 group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:inset-y-0 sm:flex absolute z-20 hidden -translate-x-1/2 transition-all ease-linear after:absolute after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border',\n 'in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarInset({\n className,\n slotName = 'sidebar-inset',\n ...props\n}: React.ComponentProps<'main'> & SlotNameProps) {\n return (\n <main\n className={cn(\n 'relative flex min-h-svh max-w-full flex-1 flex-col bg-background',\n 'peer-data-[variant=inset]:min-h-[calc(100svh-(--spacing(4)))] 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-0',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarInput({\n className,\n slotName = 'sidebar-input',\n ...props\n}: React.ComponentProps<typeof Input> & SlotNameProps) {\n return (\n <Input\n data-sidebar=\"input\"\n className={cn('h-11 w-full bg-background shadow-none', className)}\n {...props}\n slotName={slotName}\n />\n );\n}\n\nfunction SidebarHeader({\n className,\n slotName = 'sidebar-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n data-sidebar=\"header\"\n className={cn(\n 'gap-2 p-2 group-data-[collapsible=icon]:px-0 flex flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarFooter({\n className,\n slotName = 'sidebar-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n data-sidebar=\"footer\"\n className={cn(\n 'gap-2 p-2 group-data-[collapsible=icon]:px-0 flex flex-col pb-[max(0.5rem,env(safe-area-inset-bottom))]',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarSeparator({\n className,\n slotName = 'sidebar-separator',\n ...props\n}: React.ComponentProps<typeof Separator> & SlotNameProps) {\n return (\n <Separator\n data-sidebar=\"separator\"\n className={cn('mx-2 w-auto bg-sidebar-border', className)}\n {...props}\n slotName={slotName}\n />\n );\n}\n\nfunction SidebarContent({\n className,\n slotName = 'sidebar-content',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n data-sidebar=\"content\"\n className={cn(\n 'min-h-0 gap-2 flex flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarGroup({\n className,\n slotName = 'sidebar-group',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n data-sidebar=\"group\"\n className={cn(\n 'min-w-0 p-2 group-data-[collapsible=icon]:px-0 relative flex w-full flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarGroupLabel({\n className,\n asChild = false,\n slotName = 'sidebar-group-label',\n ...props\n}: React.ComponentProps<'div'> & { asChild?: boolean } & SlotNameProps) {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp\n data-sidebar=\"group-label\"\n className={cn(\n 'h-8 rounded-xl px-2 text-xs font-medium tracking-wider [&>svg]:size-4 flex shrink-0 items-center text-sidebar-foreground/70 uppercase ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:pointer-events-none group-data-[collapsible=icon]:opacity-0 group-data-[collapsible=icon]:select-none',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarGroupAction({\n className,\n asChild = false,\n slotName = 'sidebar-group-action',\n ...props\n}: React.ComponentProps<'button'> & { asChild?: boolean } & SlotNameProps) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-sidebar=\"group-action\"\n className={cn(\n 'top-3.5 right-3 w-5 p-0 [&>svg]:size-4 rounded-xl absolute flex aspect-square items-center justify-center text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:-inset-2 md:after:hidden after:absolute',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarGroupContent({\n className,\n slotName = 'sidebar-group-content',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n data-sidebar=\"group-content\"\n className={cn('text-sm w-full', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarMenu({\n className,\n slotName = 'sidebar-menu',\n ...props\n}: React.ComponentProps<'ul'> & SlotNameProps) {\n return (\n <ul\n data-sidebar=\"menu\"\n className={cn(\n 'min-w-0 gap-1 flex w-full flex-col group-data-[collapsible=icon]:items-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarMenuItem({\n className,\n slotName = 'sidebar-menu-item',\n ...props\n}: React.ComponentProps<'li'> & SlotNameProps) {\n return (\n <li\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-3 overflow-hidden rounded-xl p-2.5 text-left text-sm font-medium outline-hidden ring-sidebar-ring transition-all hover:bg-accent hover:text-accent-foreground focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring active:scale-[0.98] disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-primary/10 data-[active=true]:font-semibold data-[active=true]:text-primary group-data-[collapsible=icon]:size-10! group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:gap-0 group-data-[collapsible=icon]:p-2.5! [&>span:last-child]:truncate group-data-[collapsible=icon]:[&>span:last-child]:hidden [&>svg]:size-5 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default:\n 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-11 text-sm',\n sm: 'h-9 text-sm',\n lg: 'h-14 text-sm',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nfunction SidebarMenuButton({\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n slotName = 'sidebar-menu-button',\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n} & VariantProps<typeof sidebarMenuButtonVariants> &\n SlotNameProps) {\n const Comp = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n sidebarMenuButtonVariants({ variant, size }),\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n\n if (!tooltip) {\n return button;\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip,\n };\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltip}\n />\n </Tooltip>\n );\n}\n\nfunction SidebarMenuAction({\n className,\n asChild = false,\n showOnHover = false,\n slotName = 'sidebar-menu-action',\n ...props\n}: React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n} & SlotNameProps) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-sidebar=\"menu-action\"\n className={cn(\n 'top-1.5 right-1 w-5 p-0 [&>svg]:size-4 rounded-xl absolute flex aspect-square items-center justify-center text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform peer-hover/menu-button:text-sidebar-accent-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:-inset-2 md:after:hidden after:absolute',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'md:opacity-0 group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground data-[state=open]:opacity-100',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarMenuBadge({\n className,\n slotName = 'sidebar-menu-badge',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n data-sidebar=\"menu-badge\"\n className={cn(\n 'right-1 h-5 min-w-5 px-1 text-xs font-medium rounded-xl pointer-events-none absolute flex items-center justify-center text-sidebar-foreground tabular-nums select-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n slotName = 'sidebar-menu-skeleton',\n ...props\n}: React.ComponentProps<'div'> & {\n showIcon?: boolean;\n} & SlotNameProps) {\n // Random width between 50 to 90%.\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`;\n }, []);\n\n return (\n <div\n data-sidebar=\"menu-skeleton\"\n className={cn(\n 'h-8 gap-2 px-2 rounded-xl flex items-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-xl\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width,\n } as React.CSSProperties\n }\n />\n </div>\n );\n}\n\nfunction SidebarMenuSub({\n className,\n slotName = 'sidebar-menu-sub',\n ...props\n}: React.ComponentProps<'ul'> & SlotNameProps) {\n return (\n <ul\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 min-w-0 gap-1 px-2.5 py-0.5 flex translate-x-px flex-col border-l border-sidebar-border',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarMenuSubItem({\n className,\n slotName = 'sidebar-menu-sub-item',\n ...props\n}: React.ComponentProps<'li'> & SlotNameProps) {\n return (\n <li\n data-sidebar=\"menu-sub-item\"\n className={cn('group/menu-sub-item relative', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction SidebarMenuSubButton({\n asChild = false,\n size = 'md',\n isActive = false,\n className,\n slotName = 'sidebar-menu-sub-button',\n ...props\n}: React.ComponentProps<'a'> & {\n asChild?: boolean;\n size?: 'sm' | 'md';\n isActive?: boolean;\n} & SlotNameProps) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'h-9 min-w-0 gap-2 px-2 text-sm font-medium [&>svg]:size-4 rounded-xl flex -translate-x-px items-center overflow-hidden text-sidebar-foreground ring-sidebar-ring outline-hidden hover:bg-accent hover:text-accent-foreground focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid active:bg-accent disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:shrink-0 [&>svg]:text-current',\n 'data-[active=true]:font-semibold data-[active=true]:bg-primary/10 data-[active=true]:text-primary',\n size === 'sm' && 'h-9 text-sm',\n size === 'md' && 'h-9 text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"],"mappings":"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","names":["jsx","jsx","jsxs","jsx","CollapsibleTrigger","CollapsibleContent","jsx","jsx","jsxs","jsx","jsx","jsxs","Slot","React","jsx","jsxs","open","Slot"]}
|
|
@@ -14,6 +14,16 @@ import {
|
|
|
14
14
|
import {
|
|
15
15
|
Label
|
|
16
16
|
} from "./chunk-BP2YDMMI.js";
|
|
17
|
+
import {
|
|
18
|
+
FLOATING_SHEET_OFFSET_LIMIT,
|
|
19
|
+
FloatingSheetEdgesContext,
|
|
20
|
+
FloatingSheetReportEdgesContext,
|
|
21
|
+
FloatingSheetStackContext,
|
|
22
|
+
floatingSheetDefaultEdges,
|
|
23
|
+
floatingSheetDefaultLabels,
|
|
24
|
+
useFloatingSheetStack,
|
|
25
|
+
useSheetPortalContainer
|
|
26
|
+
} from "./chunk-EXTOGROG.js";
|
|
17
27
|
import {
|
|
18
28
|
Input
|
|
19
29
|
} from "./chunk-53V4J7MC.js";
|
|
@@ -569,21 +579,25 @@ var PopoverContent = React2.forwardRef(
|
|
|
569
579
|
align = "center",
|
|
570
580
|
sideOffset = 4,
|
|
571
581
|
slotName = "popover-content",
|
|
582
|
+
container,
|
|
572
583
|
...props
|
|
573
|
-
}, ref) =>
|
|
574
|
-
|
|
575
|
-
{
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
className
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
584
|
+
}, ref) => {
|
|
585
|
+
const portalContainer = useSheetPortalContainer(container);
|
|
586
|
+
return /* @__PURE__ */ jsx4(PopoverPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx4(
|
|
587
|
+
PopoverPrimitive.Content,
|
|
588
|
+
{
|
|
589
|
+
ref,
|
|
590
|
+
align,
|
|
591
|
+
sideOffset,
|
|
592
|
+
className: cn(
|
|
593
|
+
`${panelSurface} p-4 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-full origin-[--radix-popover-content-transform-origin] bg-popover/90 outline-none`,
|
|
594
|
+
className
|
|
595
|
+
),
|
|
596
|
+
...props,
|
|
597
|
+
"data-slot": slotName
|
|
598
|
+
}
|
|
599
|
+
) });
|
|
600
|
+
}
|
|
587
601
|
);
|
|
588
602
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
589
603
|
|
|
@@ -636,9 +650,11 @@ function SelectContent({
|
|
|
636
650
|
children,
|
|
637
651
|
position = "popper",
|
|
638
652
|
slotName = "select-content",
|
|
653
|
+
container,
|
|
639
654
|
...props
|
|
640
655
|
}) {
|
|
641
|
-
|
|
656
|
+
const portalContainer = useSheetPortalContainer(container);
|
|
657
|
+
return /* @__PURE__ */ jsx5(SelectPrimitive.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs3(
|
|
642
658
|
SelectPrimitive.Content,
|
|
643
659
|
{
|
|
644
660
|
className: cn(
|
|
@@ -759,33 +775,9 @@ function SelectScrollDownButton({
|
|
|
759
775
|
);
|
|
760
776
|
}
|
|
761
777
|
|
|
762
|
-
// src/components/ui/floating-sheet-context.ts
|
|
763
|
-
import * as React3 from "react";
|
|
764
|
-
var floatingSheetDefaultLabels = {
|
|
765
|
-
backLabel: "Back",
|
|
766
|
-
closeLabel: "Close"
|
|
767
|
-
};
|
|
768
|
-
var FLOATING_SHEET_OFFSET_LIMIT = 3;
|
|
769
|
-
var FloatingSheetStackContext = React3.createContext(null);
|
|
770
|
-
function useFloatingSheetStack() {
|
|
771
|
-
const context = React3.useContext(FloatingSheetStackContext);
|
|
772
|
-
if (!context) {
|
|
773
|
-
throw new Error(
|
|
774
|
-
"FloatingSheet must be rendered inside a FloatingSheetStack."
|
|
775
|
-
);
|
|
776
|
-
}
|
|
777
|
-
return context;
|
|
778
|
-
}
|
|
779
|
-
var floatingSheetDefaultEdges = {
|
|
780
|
-
top: true,
|
|
781
|
-
bottom: true
|
|
782
|
-
};
|
|
783
|
-
var FloatingSheetEdgesContext = React3.createContext(floatingSheetDefaultEdges);
|
|
784
|
-
var FloatingSheetReportEdgesContext = React3.createContext(null);
|
|
785
|
-
|
|
786
778
|
// src/components/ui/floating-sheet-stack.tsx
|
|
787
779
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
788
|
-
import * as
|
|
780
|
+
import * as React3 from "react";
|
|
789
781
|
import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
790
782
|
function FloatingSheetStack({
|
|
791
783
|
children,
|
|
@@ -797,22 +789,22 @@ function FloatingSheetStack({
|
|
|
797
789
|
floatingSheetDefaultLabels,
|
|
798
790
|
labels
|
|
799
791
|
);
|
|
800
|
-
const [entries, setEntries] =
|
|
801
|
-
const [container, setContainer] =
|
|
802
|
-
const register =
|
|
792
|
+
const [entries, setEntries] = React3.useState([]);
|
|
793
|
+
const [container, setContainer] = React3.useState(null);
|
|
794
|
+
const register = React3.useCallback((entry) => {
|
|
803
795
|
setEntries(
|
|
804
796
|
(current) => current.some((item) => item.id === entry.id) ? current.map((item) => item.id === entry.id ? entry : item) : [...current, entry]
|
|
805
797
|
);
|
|
806
798
|
}, []);
|
|
807
|
-
const unregister =
|
|
799
|
+
const unregister = React3.useCallback((id) => {
|
|
808
800
|
setEntries((current) => current.filter((item) => item.id !== id));
|
|
809
801
|
}, []);
|
|
810
|
-
const closeAll =
|
|
802
|
+
const closeAll = React3.useCallback(() => {
|
|
811
803
|
for (const entry of [...entries].reverse()) {
|
|
812
804
|
entry.close();
|
|
813
805
|
}
|
|
814
806
|
}, [entries]);
|
|
815
|
-
const value =
|
|
807
|
+
const value = React3.useMemo(
|
|
816
808
|
() => ({
|
|
817
809
|
labels: { backLabel, closeLabel },
|
|
818
810
|
container,
|
|
@@ -848,7 +840,7 @@ function FloatingSheetStack({
|
|
|
848
840
|
DialogPrimitive.Overlay,
|
|
849
841
|
{
|
|
850
842
|
"data-slot": "floating-sheet-overlay",
|
|
851
|
-
className: "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0 bg-black/
|
|
843
|
+
className: "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0 bg-black/10 fixed z-50"
|
|
852
844
|
}
|
|
853
845
|
),
|
|
854
846
|
/* @__PURE__ */ jsxs4(
|
|
@@ -891,13 +883,13 @@ function FloatingSheetStack({
|
|
|
891
883
|
|
|
892
884
|
// src/components/ui/floating-sheet.tsx
|
|
893
885
|
import { ArrowLeftIcon, XIcon } from "lucide-react";
|
|
894
|
-
import * as
|
|
886
|
+
import * as React5 from "react";
|
|
895
887
|
import { createPortal } from "react-dom";
|
|
896
888
|
|
|
897
889
|
// src/hooks/use-floating-sheet-body-edges.ts
|
|
898
|
-
import * as
|
|
890
|
+
import * as React4 from "react";
|
|
899
891
|
function useFloatingSheetBodyEdges(containerRef, topSentinelRef, bottomSentinelRef, reportEdges) {
|
|
900
|
-
|
|
892
|
+
React4.useEffect(() => {
|
|
901
893
|
const container = containerRef.current;
|
|
902
894
|
const topSentinel = topSentinelRef.current;
|
|
903
895
|
const bottomSentinel = bottomSentinelRef.current;
|
|
@@ -947,23 +939,23 @@ function FloatingSheet({
|
|
|
947
939
|
...props
|
|
948
940
|
}) {
|
|
949
941
|
const { labels, container, entries, register, unregister, closeAll } = useFloatingSheetStack();
|
|
950
|
-
const id =
|
|
942
|
+
const id = React5.useId();
|
|
951
943
|
const titleId = `${id}-title`;
|
|
952
944
|
const descriptionId = `${id}-description`;
|
|
953
|
-
const close =
|
|
954
|
-
const closeRef =
|
|
955
|
-
const titleRef =
|
|
956
|
-
const openerRef =
|
|
957
|
-
const panelRef =
|
|
958
|
-
const focusedRef =
|
|
959
|
-
const [edges, setEdges] =
|
|
945
|
+
const close = React5.useCallback(() => onOpenChange(false), [onOpenChange]);
|
|
946
|
+
const closeRef = React5.useRef(close);
|
|
947
|
+
const titleRef = React5.useRef(title);
|
|
948
|
+
const openerRef = React5.useRef(null);
|
|
949
|
+
const panelRef = React5.useRef(null);
|
|
950
|
+
const focusedRef = React5.useRef(false);
|
|
951
|
+
const [edges, setEdges] = React5.useState(
|
|
960
952
|
floatingSheetDefaultEdges
|
|
961
953
|
);
|
|
962
|
-
|
|
954
|
+
React5.useEffect(() => {
|
|
963
955
|
closeRef.current = close;
|
|
964
956
|
titleRef.current = title;
|
|
965
957
|
});
|
|
966
|
-
|
|
958
|
+
React5.useEffect(() => {
|
|
967
959
|
if (!open) {
|
|
968
960
|
return;
|
|
969
961
|
}
|
|
@@ -974,7 +966,7 @@ function FloatingSheet({
|
|
|
974
966
|
close: () => closeRef.current()
|
|
975
967
|
});
|
|
976
968
|
}, [open, id, persistent, register]);
|
|
977
|
-
|
|
969
|
+
React5.useEffect(() => {
|
|
978
970
|
if (!open) {
|
|
979
971
|
return;
|
|
980
972
|
}
|
|
@@ -983,7 +975,7 @@ function FloatingSheet({
|
|
|
983
975
|
const index = entries.findIndex((entry) => entry.id === id);
|
|
984
976
|
const depth = index === -1 ? 0 : entries.length - 1 - index;
|
|
985
977
|
const isTop = index !== -1 && depth === 0;
|
|
986
|
-
|
|
978
|
+
React5.useEffect(() => {
|
|
987
979
|
if (open) {
|
|
988
980
|
openerRef.current = document.activeElement;
|
|
989
981
|
return;
|
|
@@ -994,7 +986,7 @@ function FloatingSheet({
|
|
|
994
986
|
opener.focus();
|
|
995
987
|
}
|
|
996
988
|
}, [open]);
|
|
997
|
-
|
|
989
|
+
React5.useEffect(() => {
|
|
998
990
|
if (!open) {
|
|
999
991
|
focusedRef.current = false;
|
|
1000
992
|
return;
|
|
@@ -1108,10 +1100,10 @@ function FloatingSheetBody({
|
|
|
1108
1100
|
children,
|
|
1109
1101
|
...props
|
|
1110
1102
|
}) {
|
|
1111
|
-
const reportEdges =
|
|
1112
|
-
const containerRef =
|
|
1113
|
-
const topSentinelRef =
|
|
1114
|
-
const bottomSentinelRef =
|
|
1103
|
+
const reportEdges = React5.useContext(FloatingSheetReportEdgesContext);
|
|
1104
|
+
const containerRef = React5.useRef(null);
|
|
1105
|
+
const topSentinelRef = React5.useRef(null);
|
|
1106
|
+
const bottomSentinelRef = React5.useRef(null);
|
|
1115
1107
|
useFloatingSheetBodyEdges(
|
|
1116
1108
|
containerRef,
|
|
1117
1109
|
topSentinelRef,
|
|
@@ -1154,7 +1146,7 @@ function FloatingSheetFooter({
|
|
|
1154
1146
|
slotName = "floating-sheet-footer",
|
|
1155
1147
|
...props
|
|
1156
1148
|
}) {
|
|
1157
|
-
const edges =
|
|
1149
|
+
const edges = React5.useContext(FloatingSheetEdgesContext);
|
|
1158
1150
|
return /* @__PURE__ */ jsx7(
|
|
1159
1151
|
"div",
|
|
1160
1152
|
{
|
|
@@ -1173,9 +1165,9 @@ function FloatingSheetFooter({
|
|
|
1173
1165
|
// src/components/ui/input-otp.tsx
|
|
1174
1166
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
1175
1167
|
import { Minus } from "lucide-react";
|
|
1176
|
-
import * as
|
|
1168
|
+
import * as React6 from "react";
|
|
1177
1169
|
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1178
|
-
var InputOTP =
|
|
1170
|
+
var InputOTP = React6.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx8(
|
|
1179
1171
|
OTPInput,
|
|
1180
1172
|
{
|
|
1181
1173
|
ref,
|
|
@@ -1188,10 +1180,10 @@ var InputOTP = React7.forwardRef(({ className, containerClassName, ...props }, r
|
|
|
1188
1180
|
}
|
|
1189
1181
|
));
|
|
1190
1182
|
InputOTP.displayName = "InputOTP";
|
|
1191
|
-
var InputOTPGroup =
|
|
1183
|
+
var InputOTPGroup = React6.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx8("div", { ref, className: cn("flex items-center", className), ...props }));
|
|
1192
1184
|
InputOTPGroup.displayName = "InputOTPGroup";
|
|
1193
|
-
var InputOTPSlot =
|
|
1194
|
-
const inputOTPContext =
|
|
1185
|
+
var InputOTPSlot = React6.forwardRef(({ index, className, slotName = "input-otp-slot", ...props }, ref) => {
|
|
1186
|
+
const inputOTPContext = React6.useContext(OTPInputContext);
|
|
1195
1187
|
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
1196
1188
|
return /* @__PURE__ */ jsxs6(
|
|
1197
1189
|
"div",
|
|
@@ -1214,14 +1206,14 @@ var InputOTPSlot = React7.forwardRef(({ index, className, slotName = "input-otp-
|
|
|
1214
1206
|
);
|
|
1215
1207
|
});
|
|
1216
1208
|
InputOTPSlot.displayName = "InputOTPSlot";
|
|
1217
|
-
var InputOTPSeparator =
|
|
1209
|
+
var InputOTPSeparator = React6.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx8("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx8(Minus, {}) }));
|
|
1218
1210
|
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
1219
1211
|
|
|
1220
1212
|
// src/components/ui/switch.tsx
|
|
1221
1213
|
import * as SwitchPrimitives from "@radix-ui/react-switch";
|
|
1222
|
-
import * as
|
|
1214
|
+
import * as React7 from "react";
|
|
1223
1215
|
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
1224
|
-
var Switch =
|
|
1216
|
+
var Switch = React7.forwardRef(({ className, slotName = "switch", ...props }, ref) => /* @__PURE__ */ jsx9(
|
|
1225
1217
|
SwitchPrimitives.Root,
|
|
1226
1218
|
{
|
|
1227
1219
|
className: cn(
|
|
@@ -1246,11 +1238,11 @@ Switch.displayName = SwitchPrimitives.Root.displayName;
|
|
|
1246
1238
|
|
|
1247
1239
|
// src/components/ui/tabs.tsx
|
|
1248
1240
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
1249
|
-
import * as
|
|
1241
|
+
import * as React8 from "react";
|
|
1250
1242
|
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
1251
|
-
var Tabs =
|
|
1243
|
+
var Tabs = React8.forwardRef(({ slotName = "tabs", ...props }, ref) => /* @__PURE__ */ jsx10(TabsPrimitive.Root, { ref, ...props, "data-slot": slotName }));
|
|
1252
1244
|
Tabs.displayName = TabsPrimitive.Root.displayName;
|
|
1253
|
-
var TabsList =
|
|
1245
|
+
var TabsList = React8.forwardRef(({ className, slotName = "tabs-list", ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
1254
1246
|
TabsPrimitive.List,
|
|
1255
1247
|
{
|
|
1256
1248
|
ref,
|
|
@@ -1263,7 +1255,7 @@ var TabsList = React9.forwardRef(({ className, slotName = "tabs-list", ...props
|
|
|
1263
1255
|
}
|
|
1264
1256
|
));
|
|
1265
1257
|
TabsList.displayName = TabsPrimitive.List.displayName;
|
|
1266
|
-
var TabsTrigger =
|
|
1258
|
+
var TabsTrigger = React8.forwardRef(({ className, slotName = "tabs-trigger", ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
1267
1259
|
TabsPrimitive.Trigger,
|
|
1268
1260
|
{
|
|
1269
1261
|
ref,
|
|
@@ -1276,7 +1268,7 @@ var TabsTrigger = React9.forwardRef(({ className, slotName = "tabs-trigger", ...
|
|
|
1276
1268
|
}
|
|
1277
1269
|
));
|
|
1278
1270
|
TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
|
|
1279
|
-
var TabsContent =
|
|
1271
|
+
var TabsContent = React8.forwardRef(({ className, slotName = "tabs-content", ...props }, ref) => /* @__PURE__ */ jsx10(
|
|
1280
1272
|
TabsPrimitive.Content,
|
|
1281
1273
|
{
|
|
1282
1274
|
ref,
|
|
@@ -1293,9 +1285,9 @@ var TabsContent = React9.forwardRef(({ className, slotName = "tabs-content", ...
|
|
|
1293
1285
|
TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
1294
1286
|
|
|
1295
1287
|
// src/components/ui/textarea.tsx
|
|
1296
|
-
import * as
|
|
1288
|
+
import * as React9 from "react";
|
|
1297
1289
|
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
1298
|
-
var Textarea =
|
|
1290
|
+
var Textarea = React9.forwardRef(({ className, slotName = "textarea", ...props }, ref) => {
|
|
1299
1291
|
return /* @__PURE__ */ jsx11(
|
|
1300
1292
|
"textarea",
|
|
1301
1293
|
{
|
|
@@ -1342,7 +1334,6 @@ export {
|
|
|
1342
1334
|
SelectSeparator,
|
|
1343
1335
|
SelectScrollUpButton,
|
|
1344
1336
|
SelectScrollDownButton,
|
|
1345
|
-
floatingSheetDefaultLabels,
|
|
1346
1337
|
FloatingSheetStack,
|
|
1347
1338
|
FloatingSheet,
|
|
1348
1339
|
FloatingSheetBody,
|
|
@@ -1358,4 +1349,4 @@ export {
|
|
|
1358
1349
|
TabsContent,
|
|
1359
1350
|
Textarea
|
|
1360
1351
|
};
|
|
1361
|
-
//# sourceMappingURL=chunk-
|
|
1352
|
+
//# sourceMappingURL=chunk-RE4M2G2Y.js.map
|