@cryptlex/web-components 3.2.4 → 3.3.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.
@@ -2,7 +2,7 @@
2
2
  import { jsx as e } from "react/jsx-runtime";
3
3
  import { Root as m } from "../../node_modules/.pnpm/@radix-ui_react-separator@1.1.7_@types_react-dom@19.1.0_@types_react@19.1.0_react-dom@19.1.0_react@19.1.0/node_modules/@radix-ui/react-separator/dist/index.es.js";
4
4
  import { cn as p } from "../../utils/index.es.js";
5
- function u({
5
+ function i({
6
6
  className: o,
7
7
  orientation: r = "horizontal",
8
8
  decorative: t = !0,
@@ -14,7 +14,7 @@ function u({
14
14
  decorative: t,
15
15
  orientation: r,
16
16
  className: p(
17
- "shrink-0 bg-border",
17
+ "bg-border",
18
18
  r === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
19
19
  o
20
20
  ),
@@ -23,6 +23,6 @@ function u({
23
23
  );
24
24
  }
25
25
  export {
26
- u as Separator
26
+ i as Separator
27
27
  };
28
28
  //# sourceMappingURL=separator.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"separator.es.js","sources":["../../../lib/components/ui/separator.tsx"],"sourcesContent":["\"use client\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** WHY WE HAVE THIS IS BEYOND ME\n * TODO, remove this in favour of borders or <hr>, unless there is good reason to keep this.\n */\nexport function Separator({\n\tclassName,\n\torientation = \"horizontal\",\n\tdecorative = true,\n\t...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n\treturn (\n\t\t<SeparatorPrimitive.Root\n\t\t\tdecorative={decorative}\n\t\t\torientation={orientation}\n\t\t\tclassName={cn(\n\t\t\t\t\"shrink-0 bg-border\",\n\t\t\t\torientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"],"names":["Separator","className","orientation","decorative","props","jsx","SeparatorPrimitive.Root","cn"],"mappings":";;;;AASO,SAASA,EAAU;AAAA,EACzB,WAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,GAAGC;AACJ,GAAyD;AAEvD,SAAA,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MACA,YAAAH;AAAA,MACA,aAAAD;AAAA,MACA,WAAWK;AAAA,QACV;AAAA,QACAL,MAAgB,eAAe,mBAAmB;AAAA,QAClDD;AAAA,MACD;AAAA,MACC,GAAGG;AAAA,IAAA;AAAA,EACL;AAEF;"}
1
+ {"version":3,"file":"separator.es.js","sources":["../../../lib/components/ui/separator.tsx"],"sourcesContent":["\"use client\";\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\n\n/** WHY WE HAVE THIS IS BEYOND ME\n * TODO, remove this in favour of borders or <hr>, unless there is good reason to keep this.\n */\nexport function Separator({\n\tclassName,\n\torientation = \"horizontal\",\n\tdecorative = true,\n\t...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n\treturn (\n\t\t<SeparatorPrimitive.Root\n\t\t\tdecorative={decorative}\n\t\t\torientation={orientation}\n\t\t\tclassName={cn(\n\t\t\t\t\"bg-border\",\n\t\t\t\torientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n"],"names":["Separator","className","orientation","decorative","props","jsx","SeparatorPrimitive.Root","cn"],"mappings":";;;;AASO,SAASA,EAAU;AAAA,EACzB,WAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,YAAAC,IAAa;AAAA,EACb,GAAGC;AACJ,GAAyD;AAEvD,SAAA,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MACA,YAAAH;AAAA,MACA,aAAAD;AAAA,MACA,WAAWK;AAAA,QACV;AAAA,QACAL,MAAgB,eAAe,mBAAmB;AAAA,QAClDD;AAAA,MACD;AAAA,MACC,GAAGG;AAAA,IAAA;AAAA,EACL;AAEF;"}
@@ -383,7 +383,7 @@ function ge({ className: a, ...e }) {
383
383
  {
384
384
  "data-sidebar": "menu-sub",
385
385
  className: i(
386
- "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
386
+ "mx-2 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2",
387
387
  "group-data-[collapsible=icon]:hidden",
388
388
  a
389
389
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.es.js","sources":["../../../lib/components/ui/sidebar.tsx"],"sourcesContent":["\"use client\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { PanelLeft } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n\tSheet,\n\tSheetContent,\n\tSheetDescription,\n\tSheetHeader,\n\tSheetTitle,\n} from \"@/components/ui/sheet\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from \"@/components/ui/tooltip\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/utils\"\n\n// TODO use tailwind variables\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n\tstate: \"expanded\" | \"collapsed\"\n\topen: boolean\n\tsetOpen: (open: boolean) => void\n\topenMobile: boolean\n\tsetOpenMobile: (open: boolean) => void\n\tisMobile: boolean\n\ttoggleSidebar: () => void\n}\n\nexport const SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nexport function useSidebar() {\n\tconst context = React.useContext(SidebarContext)\n\tif (!context) {\n\t\tthrow new Error(\"useSidebar must be used within a SidebarProvider.\")\n\t}\n\n\treturn context\n}\n\nexport function SidebarProvider(\n\t{\n\t\tdefaultOpen = true,\n\t\topen: openProp,\n\t\tonOpenChange: setOpenProp,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\t...props\n\t}: React.ComponentProps<'div'> & {\n\t\tdefaultOpen?: boolean\n\t\topen?: boolean\n\t\tonOpenChange?: (open: boolean) => void\n\t}) {\n\tconst isMobile = useIsMobile()\n\tconst [openMobile, setOpenMobile] = React.useState(false)\n\n\t// This is the internal state of the sidebar.\n\t// We use openProp and setOpenProp for control from outside the component.\n\tconst [_open, _setOpen] = React.useState(defaultOpen)\n\tconst open = openProp ?? _open\n\tconst setOpen = React.useCallback(\n\t\t(value: boolean | ((value: boolean) => boolean)) => {\n\t\t\tconst openState = typeof value === \"function\" ? value(open) : value\n\t\t\tif (setOpenProp) {\n\t\t\t\tsetOpenProp(openState)\n\t\t\t} else {\n\t\t\t\t_setOpen(openState)\n\t\t\t}\n\n\t\t\t// TODO, use different model for persistence\n\t\t\t// This sets the cookie to keep the sidebar state.\n\t\t\t// document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n\t\t},\n\t\t[setOpenProp, open]\n\t)\n\n\t// Helper to toggle the sidebar.\n\tconst toggleSidebar = React.useCallback(() => {\n\t\treturn isMobile\n\t\t\t? setOpenMobile((open) => !open)\n\t\t\t: setOpen((open) => !open)\n\t}, [isMobile, setOpen, setOpenMobile])\n\n\t// Adds a keyboard shortcut to toggle the sidebar.\n\tReact.useEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (\n\t\t\t\tevent.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n\t\t\t\t(event.metaKey || event.ctrlKey)\n\t\t\t) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\ttoggleSidebar()\n\t\t\t}\n\t\t}\n\n\t\twindow.addEventListener(\"keydown\", handleKeyDown)\n\t\treturn () => window.removeEventListener(\"keydown\", handleKeyDown)\n\t}, [toggleSidebar])\n\n\t// We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n\t// This makes it easier to style the sidebar with Tailwind classes.\n\tconst state = open ? \"expanded\" : \"collapsed\"\n\n\tconst contextValue = React.useMemo<SidebarContextProps>(\n\t\t() => ({\n\t\t\tstate,\n\t\t\topen,\n\t\t\tsetOpen,\n\t\t\tisMobile,\n\t\t\topenMobile,\n\t\t\tsetOpenMobile,\n\t\t\ttoggleSidebar,\n\t\t}),\n\t\t[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n\t)\n\n\treturn (\n\t\t<SidebarContext.Provider value={contextValue}>\n\t\t\t<TooltipProvider delayDuration={0}>\n\t\t\t\t<div\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH,\n\t\t\t\t\t\t\t\"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"group/sidebar-wrapper flex w-full has-[[data-variant=inset]]:bg-sidebar\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</TooltipProvider>\n\t\t</SidebarContext.Provider>\n\t)\n}\n\n\nexport function Sidebar(\n\t{\n\t\tside = \"left\",\n\t\tvariant = \"sidebar\",\n\t\tcollapsible = \"offcanvas\",\n\t\tclassName,\n\t\tchildren,\n\t\t...props\n\t}: React.ComponentProps<\"div\"> & {\n\t\tside?: \"left\" | \"right\"\n\t\tvariant?: \"sidebar\" | \"floating\" | \"inset\"\n\t\tcollapsible?: \"offcanvas\" | \"icon\" | \"none\"\n\t}\n) {\n\tconst { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n\tif (collapsible === \"none\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tif (isMobile) {\n\t\treturn (\n\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n\t\t\t\t<SheetContent\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\tclassName=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\tside={side}\n\t\t\t\t>\n\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t<SheetTitle>Sidebar</SheetTitle>\n\t\t\t\t\t\t<SheetDescription>Displays the mobile sidebar.</SheetDescription>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t</SheetContent>\n\t\t\t</Sheet>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"group peer hidden text-sidebar-foreground md:block\"\n\t\t\tdata-state={state}\n\t\t\tdata-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n\t\t\tdata-variant={variant}\n\t\t\tdata-side={side}\n\t\t>\n\t\t\t{/* This is what handles the sidebar gap on desktop */}\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"relative w-(--sidebar-width) bg-sidebar transition-[width] duration-200 ease-linear\",\n\t\t\t\t\t\"group-data-[collapsible=offcanvas]:w-0\",\n\t\t\t\t\t\"group-data-[side=right]:rotate-180\",\n\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"absolute z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n\t\t\t\t\tside === \"left\"\n\t\t\t\t\t\t? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n\t\t\t\t\t\t: \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n\t\t\t\t\t// Adjust the padding for floating and inset variants.\n\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tclassName=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\n\n\nexport function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n\tconst { toggleSidebar } = useSidebar()\n\n\treturn (\n\t\t<Button\n\t\t\tdata-sidebar=\"trigger\"\n\t\t\tvariant=\"ghost\"\n\t\t\tsize=\"icon\"\n\t\t\tonClick={(event) => {\n\t\t\t\tonClick?.(event)\n\t\t\t\ttoggleSidebar()\n\t\t\t}}\n\t\t\t{...props}\n\t\t>\n\t\t\t<PanelLeft />\n\t\t\t<span className=\"sr-only\">Toggle Sidebar</span>\n\t\t</Button>\n\t)\n}\n\n// TODO, evaluate if we need this??\nexport const SidebarRail = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n\tconst { toggleSidebar } = useSidebar()\n\n\treturn (\n\t\t<button\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"rail\"\n\t\t\taria-label=\"Toggle Sidebar\"\n\t\t\ttabIndex={-1}\n\t\t\tonClick={toggleSidebar}\n\t\t\ttitle=\"Toggle Sidebar\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n\t\t\t\t\"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\n\t\t\t\t\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n\t\t\t\t\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n\t\t\t\t\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n\t\t\t\t\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nexport function SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n\treturn (\n\t\t<main\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex w-full flex-1 flex-col bg-background\",\n\t\t\t\t\"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\nexport function SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\n\t\t\tdata-sidebar=\"header\"\n\t\t\tclassName={cn(\"flex flex-col gap-2 p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"footer\"\n\t\t\tclassName={cn(\"flex flex-col gap-2 p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"content\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"group\"\n\t\t\tclassName={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\nexport function SidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n\tconst Comp = asChild ? Slot : \"div\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"group-label\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\nexport function SidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n\tconst Comp = asChild ? Slot : \"button\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"group-action\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t// Increases the hit area of the button on mobile.\n\t\t\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"group-content\"\n\t\t\tclassName={cn(\"w-full text-sm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n\treturn (\n\t\t<ul\n\t\t\tdata-sidebar=\"menu\"\n\t\t\tclassName={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n\treturn (\n\t\t<li\n\t\t\tdata-sidebar=\"menu-item\"\n\t\t\tclassName={cn(\"group/menu-item relative list-none\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\n\n\n/// TODO fix positioning\nexport function SidebarMenuAction({ className, asChild = false, showOnHover = false, ...props }: React.ComponentProps<\"button\"> & {\n\tasChild?: boolean\n\tshowOnHover?: boolean\n}) {\n\tconst Comp = asChild ? Slot : \"button\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-action\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t// Increases the hit area of the button on mobile.\n\t\t\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tshowOnHover &&\n\t\t\t\t\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"menu-badge\"\n\t\t\tclassName={cn(\n\t\t\t\t\"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n\t\t\t\t\"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n\t\t\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuSkeleton({ className, showIcon = false, ...props }: React.ComponentProps<\"div\"> & {\n\tshowIcon?: boolean\n}) {\n\t// Random width between 50 to 90%.\n\tconst width = React.useMemo(() => {\n\t\treturn `${Math.floor(Math.random() * 40) + 50}%`\n\t}, [])\n\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"menu-skeleton\"\n\t\t\tclassName={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{showIcon && (\n\t\t\t\t<Skeleton\n\t\t\t\t\tclassName=\"size-4 rounded-md\"\n\t\t\t\t\tdata-sidebar=\"menu-skeleton-icon\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<Skeleton\n\t\t\t\tclassName=\"h-4 max-w-[--skeleton-width] flex-1\"\n\t\t\t\tdata-sidebar=\"menu-skeleton-text\"\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--skeleton-width\": width,\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport function SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n\treturn (\n\t\t<ul\n\t\t\tdata-sidebar=\"menu-sub\"\n\t\t\tclassName={cn(\n\t\t\t\t\"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) { return <li className={cn(\"list-none ms-0\", className)} {...props} /> }\n\n// Common interaction logic for SidebarMenuButton and SidebarMenuSubButton\nconst Cs_SidebarButton = \"flex w-full items-center gap-2 truncate p-2 text-sm btn btn-ghost h-input text-sidebar-accent data-[active=true]:bg-sidebar-primary/20 data-[active=true]:font-medium data-[active=true]:text-sidebar-primary [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\";\nexport function SidebarMenuButton\n\t(\n\t\t{\n\t\t\tasChild = false,\n\t\t\tisActive = false,\n\t\t\ttooltip,\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: React.ComponentProps<\"button\"> & {\n\t\t\tasChild?: boolean\n\t\t\tisActive?: boolean\n\t\t\ttooltip?: React.ComponentProps<typeof TooltipContent>\n\t\t}\n\t) {\n\tconst Comp = asChild ? Slot : \"button\"\n\tconst { isMobile, state } = useSidebar()\n\n\tconst button = (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-button\"\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(\n\t\t\t\t\"peer/menu-button group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 group-data-[collapsible=icon]:!size-icon group-data-[collapsible=icon]:!p-2 \",\n\t\t\t\tCs_SidebarButton,\n\t\t\t\tclassName)}\n\t\t\t{...props}\n\t\t/>\n\t)\n\n\tif (!tooltip) {\n\t\treturn button\n\t}\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger asChild>{button}</TooltipTrigger>\n\t\t\t<TooltipContent\n\t\t\t\tside=\"right\"\n\t\t\t\talign=\"center\"\n\t\t\t\thidden={state !== \"collapsed\" || isMobile}\n\t\t\t\t{...tooltip}\n\t\t\t/>\n\t\t</Tooltip>\n\t)\n}\n\nexport function SidebarMenuSubButton({ asChild = false, isActive, className, ...props }: React.ComponentProps<'a'> & {\n\tasChild?: boolean\n\tisActive?: boolean\n}) {\n\tconst Comp = asChild ? Slot : \"a\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-sub-button\"\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(\n\t\t\t\t\"-translate-x-px [&>svg]:text-sidebar-accent-foreground\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tCs_SidebarButton,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n// TODO, standardize heights here"],"names":["SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","jsxs","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeft","SidebarRail","ref","SidebarInset","SidebarHeader","SidebarFooter","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","Cs_SidebarButton","SidebarMenuButton","isActive","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuSubButton"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.es.js","sources":["../../../lib/components/ui/sidebar.tsx"],"sourcesContent":["\"use client\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { PanelLeft } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n\tSheet,\n\tSheetContent,\n\tSheetDescription,\n\tSheetHeader,\n\tSheetTitle,\n} from \"@/components/ui/sheet\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from \"@/components/ui/tooltip\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/utils\"\n\n// TODO use tailwind variables\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n\tstate: \"expanded\" | \"collapsed\"\n\topen: boolean\n\tsetOpen: (open: boolean) => void\n\topenMobile: boolean\n\tsetOpenMobile: (open: boolean) => void\n\tisMobile: boolean\n\ttoggleSidebar: () => void\n}\n\nexport const SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nexport function useSidebar() {\n\tconst context = React.useContext(SidebarContext)\n\tif (!context) {\n\t\tthrow new Error(\"useSidebar must be used within a SidebarProvider.\")\n\t}\n\n\treturn context\n}\n\nexport function SidebarProvider(\n\t{\n\t\tdefaultOpen = true,\n\t\topen: openProp,\n\t\tonOpenChange: setOpenProp,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\t...props\n\t}: React.ComponentProps<'div'> & {\n\t\tdefaultOpen?: boolean\n\t\topen?: boolean\n\t\tonOpenChange?: (open: boolean) => void\n\t}) {\n\tconst isMobile = useIsMobile()\n\tconst [openMobile, setOpenMobile] = React.useState(false)\n\n\t// This is the internal state of the sidebar.\n\t// We use openProp and setOpenProp for control from outside the component.\n\tconst [_open, _setOpen] = React.useState(defaultOpen)\n\tconst open = openProp ?? _open\n\tconst setOpen = React.useCallback(\n\t\t(value: boolean | ((value: boolean) => boolean)) => {\n\t\t\tconst openState = typeof value === \"function\" ? value(open) : value\n\t\t\tif (setOpenProp) {\n\t\t\t\tsetOpenProp(openState)\n\t\t\t} else {\n\t\t\t\t_setOpen(openState)\n\t\t\t}\n\n\t\t\t// TODO, use different model for persistence\n\t\t\t// This sets the cookie to keep the sidebar state.\n\t\t\t// document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n\t\t},\n\t\t[setOpenProp, open]\n\t)\n\n\t// Helper to toggle the sidebar.\n\tconst toggleSidebar = React.useCallback(() => {\n\t\treturn isMobile\n\t\t\t? setOpenMobile((open) => !open)\n\t\t\t: setOpen((open) => !open)\n\t}, [isMobile, setOpen, setOpenMobile])\n\n\t// Adds a keyboard shortcut to toggle the sidebar.\n\tReact.useEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (\n\t\t\t\tevent.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n\t\t\t\t(event.metaKey || event.ctrlKey)\n\t\t\t) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\ttoggleSidebar()\n\t\t\t}\n\t\t}\n\n\t\twindow.addEventListener(\"keydown\", handleKeyDown)\n\t\treturn () => window.removeEventListener(\"keydown\", handleKeyDown)\n\t}, [toggleSidebar])\n\n\t// We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n\t// This makes it easier to style the sidebar with Tailwind classes.\n\tconst state = open ? \"expanded\" : \"collapsed\"\n\n\tconst contextValue = React.useMemo<SidebarContextProps>(\n\t\t() => ({\n\t\t\tstate,\n\t\t\topen,\n\t\t\tsetOpen,\n\t\t\tisMobile,\n\t\t\topenMobile,\n\t\t\tsetOpenMobile,\n\t\t\ttoggleSidebar,\n\t\t}),\n\t\t[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n\t)\n\n\treturn (\n\t\t<SidebarContext.Provider value={contextValue}>\n\t\t\t<TooltipProvider delayDuration={0}>\n\t\t\t\t<div\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH,\n\t\t\t\t\t\t\t\"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"group/sidebar-wrapper flex w-full has-[[data-variant=inset]]:bg-sidebar\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</TooltipProvider>\n\t\t</SidebarContext.Provider>\n\t)\n}\n\n\nexport function Sidebar(\n\t{\n\t\tside = \"left\",\n\t\tvariant = \"sidebar\",\n\t\tcollapsible = \"offcanvas\",\n\t\tclassName,\n\t\tchildren,\n\t\t...props\n\t}: React.ComponentProps<\"div\"> & {\n\t\tside?: \"left\" | \"right\"\n\t\tvariant?: \"sidebar\" | \"floating\" | \"inset\"\n\t\tcollapsible?: \"offcanvas\" | \"icon\" | \"none\"\n\t}\n) {\n\tconst { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n\tif (collapsible === \"none\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tif (isMobile) {\n\t\treturn (\n\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n\t\t\t\t<SheetContent\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\tclassName=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\tside={side}\n\t\t\t\t>\n\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t<SheetTitle>Sidebar</SheetTitle>\n\t\t\t\t\t\t<SheetDescription>Displays the mobile sidebar.</SheetDescription>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t</SheetContent>\n\t\t\t</Sheet>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"group peer hidden text-sidebar-foreground md:block\"\n\t\t\tdata-state={state}\n\t\t\tdata-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n\t\t\tdata-variant={variant}\n\t\t\tdata-side={side}\n\t\t>\n\t\t\t{/* This is what handles the sidebar gap on desktop */}\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"relative w-(--sidebar-width) bg-sidebar transition-[width] duration-200 ease-linear\",\n\t\t\t\t\t\"group-data-[collapsible=offcanvas]:w-0\",\n\t\t\t\t\t\"group-data-[side=right]:rotate-180\",\n\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"absolute z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n\t\t\t\t\tside === \"left\"\n\t\t\t\t\t\t? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n\t\t\t\t\t\t: \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n\t\t\t\t\t// Adjust the padding for floating and inset variants.\n\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tclassName=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\n\n\nexport function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n\tconst { toggleSidebar } = useSidebar()\n\n\treturn (\n\t\t<Button\n\t\t\tdata-sidebar=\"trigger\"\n\t\t\tvariant=\"ghost\"\n\t\t\tsize=\"icon\"\n\t\t\tonClick={(event) => {\n\t\t\t\tonClick?.(event)\n\t\t\t\ttoggleSidebar()\n\t\t\t}}\n\t\t\t{...props}\n\t\t>\n\t\t\t<PanelLeft />\n\t\t\t<span className=\"sr-only\">Toggle Sidebar</span>\n\t\t</Button>\n\t)\n}\n\n// TODO, evaluate if we need this??\nexport const SidebarRail = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n\tconst { toggleSidebar } = useSidebar()\n\n\treturn (\n\t\t<button\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"rail\"\n\t\t\taria-label=\"Toggle Sidebar\"\n\t\t\ttabIndex={-1}\n\t\t\tonClick={toggleSidebar}\n\t\t\ttitle=\"Toggle Sidebar\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n\t\t\t\t\"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\n\t\t\t\t\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n\t\t\t\t\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n\t\t\t\t\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n\t\t\t\t\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nexport function SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n\treturn (\n\t\t<main\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex w-full flex-1 flex-col bg-background\",\n\t\t\t\t\"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\nexport function SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\n\t\t\tdata-sidebar=\"header\"\n\t\t\tclassName={cn(\"flex flex-col gap-2 p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"footer\"\n\t\t\tclassName={cn(\"flex flex-col gap-2 p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"content\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"group\"\n\t\t\tclassName={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\nexport function SidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n\tconst Comp = asChild ? Slot : \"div\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"group-label\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\nexport function SidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n\tconst Comp = asChild ? Slot : \"button\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"group-action\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t// Increases the hit area of the button on mobile.\n\t\t\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"group-content\"\n\t\t\tclassName={cn(\"w-full text-sm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n\treturn (\n\t\t<ul\n\t\t\tdata-sidebar=\"menu\"\n\t\t\tclassName={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n\treturn (\n\t\t<li\n\t\t\tdata-sidebar=\"menu-item\"\n\t\t\tclassName={cn(\"group/menu-item relative list-none\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\n\n\n/// TODO fix positioning\nexport function SidebarMenuAction({ className, asChild = false, showOnHover = false, ...props }: React.ComponentProps<\"button\"> & {\n\tasChild?: boolean\n\tshowOnHover?: boolean\n}) {\n\tconst Comp = asChild ? Slot : \"button\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-action\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t// Increases the hit area of the button on mobile.\n\t\t\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tshowOnHover &&\n\t\t\t\t\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"menu-badge\"\n\t\t\tclassName={cn(\n\t\t\t\t\"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n\t\t\t\t\"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n\t\t\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuSkeleton({ className, showIcon = false, ...props }: React.ComponentProps<\"div\"> & {\n\tshowIcon?: boolean\n}) {\n\t// Random width between 50 to 90%.\n\tconst width = React.useMemo(() => {\n\t\treturn `${Math.floor(Math.random() * 40) + 50}%`\n\t}, [])\n\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"menu-skeleton\"\n\t\t\tclassName={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{showIcon && (\n\t\t\t\t<Skeleton\n\t\t\t\t\tclassName=\"size-4 rounded-md\"\n\t\t\t\t\tdata-sidebar=\"menu-skeleton-icon\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<Skeleton\n\t\t\t\tclassName=\"h-4 max-w-[--skeleton-width] flex-1\"\n\t\t\t\tdata-sidebar=\"menu-skeleton-text\"\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--skeleton-width\": width,\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport function SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n\treturn (\n\t\t<ul\n\t\t\tdata-sidebar=\"menu-sub\"\n\t\t\tclassName={cn(\n\t\t\t\t\"mx-2 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) { return <li className={cn(\"list-none ms-0\", className)} {...props} /> }\n\n// Common interaction logic for SidebarMenuButton and SidebarMenuSubButton\nconst Cs_SidebarButton = \"flex w-full items-center gap-2 truncate p-2 text-sm btn btn-ghost h-input text-sidebar-accent data-[active=true]:bg-sidebar-primary/20 data-[active=true]:font-medium data-[active=true]:text-sidebar-primary [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\";\nexport function SidebarMenuButton\n\t(\n\t\t{\n\t\t\tasChild = false,\n\t\t\tisActive = false,\n\t\t\ttooltip,\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: React.ComponentProps<\"button\"> & {\n\t\t\tasChild?: boolean\n\t\t\tisActive?: boolean\n\t\t\ttooltip?: React.ComponentProps<typeof TooltipContent>\n\t\t}\n\t) {\n\tconst Comp = asChild ? Slot : \"button\"\n\tconst { isMobile, state } = useSidebar()\n\n\tconst button = (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-button\"\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(\n\t\t\t\t\"peer/menu-button group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 group-data-[collapsible=icon]:!size-icon group-data-[collapsible=icon]:!p-2 \",\n\t\t\t\tCs_SidebarButton,\n\t\t\t\tclassName)}\n\t\t\t{...props}\n\t\t/>\n\t)\n\n\tif (!tooltip) {\n\t\treturn button\n\t}\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger asChild>{button}</TooltipTrigger>\n\t\t\t<TooltipContent\n\t\t\t\tside=\"right\"\n\t\t\t\talign=\"center\"\n\t\t\t\thidden={state !== \"collapsed\" || isMobile}\n\t\t\t\t{...tooltip}\n\t\t\t/>\n\t\t</Tooltip>\n\t)\n}\n\nexport function SidebarMenuSubButton({ asChild = false, isActive, className, ...props }: React.ComponentProps<'a'> & {\n\tasChild?: boolean\n\tisActive?: boolean\n}) {\n\tconst Comp = asChild ? Slot : \"a\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-sub-button\"\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(\n\t\t\t\t\"-translate-x-px [&>svg]:text-sidebar-accent-foreground\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tCs_SidebarButton,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n// TODO, standardize heights here"],"names":["SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","jsxs","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeft","SidebarRail","ref","SidebarInset","SidebarHeader","SidebarFooter","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","Cs_SidebarButton","SidebarMenuButton","isActive","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuSubButton"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { jsx as t, jsxs as a } from "react/jsx-runtime";
2
+ import { Separator as c } from "./separator.es.js";
3
+ import { cn as r } from "../../utils/index.es.js";
4
+ import { cva as l } from "class-variance-authority";
5
+ function x({ className: e, ...i }) {
6
+ return /* @__PURE__ */ t("ol", { className: r("flex flex-col gap-4", e), ...i });
7
+ }
8
+ const m = l(
9
+ "p-1 rounded-full",
10
+ {
11
+ variants: {
12
+ variant: {
13
+ destructive: "text-destructive-foreground bg-destructive",
14
+ success: "text-success-foreground bg-success",
15
+ muted: "text-muted-foreground bg-muted"
16
+ }
17
+ },
18
+ defaultVariants: {
19
+ variant: "muted"
20
+ }
21
+ }
22
+ );
23
+ function v({ date: e, className: i, icon: n, children: s, iconVariant: o }) {
24
+ return /* @__PURE__ */ a("li", { className: "flex list-none gap-4", children: [
25
+ e && /* @__PURE__ */ t("time", { dateTime: e.toISOString(), className: "leading-none text-muted", children: e.toLocaleDateString() }),
26
+ /* @__PURE__ */ a("div", { className: "flex flex-col items-center gap-2", children: [
27
+ /* @__PURE__ */ t("div", { className: r(m(o)), children: n && /* @__PURE__ */ t(n, { className: "size-icon " }) }),
28
+ /* @__PURE__ */ t(c, { decorative: !0, orientation: "vertical" })
29
+ ] }),
30
+ /* @__PURE__ */ t("section", { className: r("grow", i), children: s })
31
+ ] });
32
+ }
33
+ function p({ date: e }) {
34
+ return /* @__PURE__ */ t("time", { dateTime: e.toISOString(), className: "text-muted", children: e.toDateString() });
35
+ }
36
+ export {
37
+ x as Timeline,
38
+ v as TimelineItem,
39
+ p as TimelineTime,
40
+ m as timelineIconVariants
41
+ };
42
+ //# sourceMappingURL=timeline.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.es.js","sources":["../../../lib/components/ui/timeline.tsx"],"sourcesContent":["import { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/utils\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport type { LucideIcon } from \"lucide-react\";\n\nexport function Timeline({ className, ...props }: React.ComponentProps<'ol'>) {\n return <ol className={cn(\"flex flex-col gap-4\", className)} {...props} />\n}\n\nexport const timelineIconVariants = cva(\n `p-1 rounded-full`,\n {\n variants: {\n variant: {\n destructive: \"text-destructive-foreground bg-destructive\",\n success: \"text-success-foreground bg-success\",\n muted: \"text-muted-foreground bg-muted\",\n },\n },\n defaultVariants: {\n variant: \"muted\",\n },\n },\n);\nexport function TimelineItem({ date, className, icon: Icon, children, iconVariant }: React.ComponentProps<'div'> & { date: Date, icon?: LucideIcon, iconVariant?: VariantProps<typeof timelineIconVariants> }) {\n return (\n <li className=\"flex list-none gap-4\">\n {date && <time dateTime={date.toISOString()} className=\"leading-none text-muted\">{date.toLocaleDateString()}</time>}\n {/* Status?? */}\n <div className=\"flex flex-col items-center gap-2\">\n <div className={cn(timelineIconVariants(iconVariant))}>\n {Icon && <Icon className=\"size-icon \" />}\n </div>\n <Separator decorative={true} orientation=\"vertical\" />\n </div>\n\n <section className={cn(\"grow\", className)}>\n {children}\n </section>\n </li>\n )\n}\n\nexport function TimelineTime({ date }: React.ComponentProps<'time'> & {\n date: Date\n}) {\n return <time dateTime={date.toISOString()} className=\"text-muted\">{date.toDateString()}</time>\n}\n\n// export function TimelineIcon()"],"names":["Timeline","className","props","jsx","cn","timelineIconVariants","cva","TimelineItem","date","Icon","children","iconVariant","jsxs","Separator","TimelineTime"],"mappings":";;;;AAKO,SAASA,EAAS,EAAE,WAAAC,GAAW,GAAGC,KAAqC;AACnE,SAAA,gBAAAC,EAAC,QAAG,WAAWC,EAAG,uBAAuBH,CAAS,GAAI,GAAGC,GAAO;AAC3E;AAEO,MAAMG,IAAuBC;AAAA,EAChC;AAAA,EACA;AAAA,IACI,UAAU;AAAA,MACN,SAAS;AAAA,QACL,aAAa;AAAA,QACb,SAAS;AAAA,QACT,OAAO;AAAA,MAAA;AAAA,IAEf;AAAA,IACA,iBAAiB;AAAA,MACb,SAAS;AAAA,IAAA;AAAA,EACb;AAER;AACgB,SAAAC,EAAa,EAAE,MAAAC,GAAM,WAAAP,GAAW,MAAMQ,GAAM,UAAAC,GAAU,aAAAC,KAAyI;AAEvM,SAAA,gBAAAC,EAAC,MAAG,EAAA,WAAU,wBACT,UAAA;AAAA,IAAQJ,KAAA,gBAAAL,EAAC,QAAK,EAAA,UAAUK,EAAK,eAAe,WAAU,2BAA2B,UAAKA,EAAA,mBAAqB,EAAA,CAAA;AAAA,IAE5G,gBAAAI,EAAC,OAAI,EAAA,WAAU,oCACX,UAAA;AAAA,MAAA,gBAAAT,EAAC,OAAI,EAAA,WAAWC,EAAGC,EAAqBM,CAAW,CAAC,GAC/C,UAAAF,KAAS,gBAAAN,EAAAM,GAAA,EAAK,WAAU,aAAa,CAAA,GAC1C;AAAA,MACC,gBAAAN,EAAAU,GAAA,EAAU,YAAY,IAAM,aAAY,WAAW,CAAA;AAAA,IAAA,GACxD;AAAA,sBAEC,WAAQ,EAAA,WAAWT,EAAG,QAAQH,CAAS,GACnC,UAAAS,EACL,CAAA;AAAA,EAAA,GACJ;AAER;AAEgB,SAAAI,EAAa,EAAE,MAAAN,KAE5B;AACQ,SAAA,gBAAAL,EAAC,QAAK,EAAA,UAAUK,EAAK,YAAA,GAAe,WAAU,cAAc,UAAKA,EAAA,aAAe,EAAA,CAAA;AAC3F;"}
@@ -689,6 +689,22 @@ export declare function TfTextarea({ disabled, ...props }: TfTextareaProps): JSX
689
689
  export declare interface TfTextareaProps extends Omit<React_2.ComponentProps<typeof Textarea>, "value" | "onChange" | "onBlur"> {
690
690
  }
691
691
 
692
+ export declare function Timeline({ className, ...props }: React.ComponentProps<'ol'>): JSX.Element;
693
+
694
+ export declare const timelineIconVariants: (props?: ({
695
+ variant?: "destructive" | "success" | "muted" | null | undefined;
696
+ } & ClassProp) | undefined) => string;
697
+
698
+ export declare function TimelineItem({ date, className, icon: Icon, children, iconVariant }: React.ComponentProps<'div'> & {
699
+ date: Date;
700
+ icon?: LucideIcon;
701
+ iconVariant?: VariantProps<typeof timelineIconVariants>;
702
+ }): JSX.Element;
703
+
704
+ export declare function TimelineTime({ date }: React.ComponentProps<'time'> & {
705
+ date: Date;
706
+ }): JSX.Element;
707
+
692
708
  export declare function Toaster({ ...props }: ToasterProps): JSX.Element;
693
709
 
694
710
  declare type ToasterProps = React.ComponentProps<typeof Toaster_2>;
package/dist/index.es.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { useIsMobile as o } from "./hooks/use-mobile.es.js";
2
- import { cn as a, getThemeHue as n, logout as i, setThemeHue as p } from "./utils/index.es.js";
3
- import { fieldContext as T, formContext as d, useFieldContext as m } from "./utils/form-context.es.js";
2
+ import { cn as a, getThemeHue as i, logout as n, setThemeHue as p } from "./utils/index.es.js";
3
+ import { fieldContext as T, formContext as m, useFieldContext as d } from "./utils/form-context.es.js";
4
4
  import { useAppForm as S } from "./utils/form-hook.es.js";
5
5
  import { ACTIONS_COLUMN_ID as x, DataTable as f } from "./components/data-table/data-table.es.js";
6
6
  import { TABLE_CHECK_BOX_COLUMN as D, TABLE_DEFAULT_DATE_COLUMNS as g, TABLE_ID_COLUMN as s } from "./components/data-table/table-commons.es.js";
7
- import { ALL_OS as P, COMPARISON_OPERATOR_LABELS as I, DEFAULT_FILTERABLE_FIELDS as M, FILTERABLE_PROPERTY_TYPES as E, FILTER_COMPARISON_OPERATORS as O, OPERATORS_FOR_FILTER_TYPE as L, RESOURCE_DEFINITIONS as A, RESOURCE_NAMES as _, getLicenseStatus as R, getResourceDisplayName as w, getValidityDisplay as F, getValueFromData as B, secondsToDuration as h } from "./components/data-table/table-utils/constants.es.js";
7
+ import { ALL_OS as I, COMPARISON_OPERATOR_LABELS as P, DEFAULT_FILTERABLE_FIELDS as M, FILTERABLE_PROPERTY_TYPES as E, FILTER_COMPARISON_OPERATORS as O, OPERATORS_FOR_FILTER_TYPE as L, RESOURCE_DEFINITIONS as A, RESOURCE_NAMES as _, getLicenseStatus as R, getResourceDisplayName as w, getValidityDisplay as F, getValueFromData as B, secondsToDuration as h } from "./components/data-table/table-utils/constants.es.js";
8
8
  import { createTableFetchFn as v } from "./components/data-table/table-utils/createTableFetchFn.es.js";
9
9
  import { FormatDate as U } from "./components/data-table/table-utils/date.es.js";
10
10
  import { convertCamelCaseToTitleCase as H, convertToTitleCase as k, pluralizeTimes as V } from "./components/data-table/table-utils/string.es.js";
@@ -14,13 +14,13 @@ import { Checkbox as q, TfCheckbox as J } from "./components/inputs/checkbox.es.
14
14
  import { CountrySelect as W, TfCountrySelect as Z } from "./components/inputs/country-select.es.js";
15
15
  import { FormField as ee } from "./components/inputs/form-field.es.js";
16
16
  import { Input as oe, TfInput as te } from "./components/inputs/input.es.js";
17
- import { InputOTP as ne, InputOTPGroup as ie, InputOTPSeparator as pe, InputOTPSlot as le } from "./components/inputs/input-otp.es.js";
18
- import { TfLicenseTypeSelect as de } from "./components/inputs/license-type-select.es.js";
17
+ import { InputOTP as ie, InputOTPGroup as ne, InputOTPSeparator as pe, InputOTPSlot as le } from "./components/inputs/input-otp.es.js";
18
+ import { TfLicenseTypeSelect as me } from "./components/inputs/license-type-select.es.js";
19
19
  import { MultiSelect as ue, TfMultiSelect as Se } from "./components/inputs/multi-select.es.js";
20
20
  import { PasswordInput as xe } from "./components/inputs/password-input.es.js";
21
21
  import { RadioGroup as Ce, RadioGroupItem as De } from "./components/inputs/radio-group.es.js";
22
22
  import { SearchInput as se } from "./components/inputs/search-input.es.js";
23
- import { SingleSelect as Pe, TfSingleSelect as Ie } from "./components/inputs/select.es.js";
23
+ import { SingleSelect as Ie, TfSingleSelect as Pe } from "./components/inputs/select.es.js";
24
24
  import { Textarea as Ee, TfTextarea as Oe } from "./components/inputs/textarea.es.js";
25
25
  import { KeyValueCard as Ae } from "./components/key-value-card/key-value-card.es.js";
26
26
  import { Accordion as Re, AccordionContent as we, AccordionItem as Fe, AccordionTrigger as Be } from "./components/ui/accordion.es.js";
@@ -30,28 +30,29 @@ import { Badge as He } from "./components/ui/badge.es.js";
30
30
  import { Breadcrumb as Ve, BreadcrumbEllipsis as Ye, BreadcrumbItem as Ke, BreadcrumbLink as ze, BreadcrumbList as Xe, BreadcrumbPage as je, BreadcrumbSeparator as qe } from "./components/ui/breadcrumb.es.js";
31
31
  import { Button as Qe, buttonVariants as We } from "./components/ui/button.es.js";
32
32
  import { Card as $e, CardContent as er, CardDescription as rr, CardFooter as or, CardHeader as tr, CardTitle as ar } from "./components/ui/card.es.js";
33
- import { Collapsible as ir, CollapsibleContent as pr, CollapsibleTrigger as lr } from "./components/ui/collapsible.es.js";
34
- import { COPY_BUTTON_STATE_TIMEOUT as dr, CopyButton as mr } from "./components/ui/copy-button.es.js";
35
- import { Dialog as Sr, DialogClose as br, DialogContent as xr, DialogDescription as fr, DialogFooter as Cr, DialogHeader as Dr, DialogOverlay as gr, DialogPortal as sr, DialogTitle as cr, DialogTrigger as Pr } from "./components/ui/dialog.es.js";
33
+ import { Collapsible as nr, CollapsibleContent as pr, CollapsibleTrigger as lr } from "./components/ui/collapsible.es.js";
34
+ import { COPY_BUTTON_STATE_TIMEOUT as mr, CopyButton as dr } from "./components/ui/copy-button.es.js";
35
+ import { Dialog as Sr, DialogClose as br, DialogContent as xr, DialogDescription as fr, DialogFooter as Cr, DialogHeader as Dr, DialogOverlay as gr, DialogPortal as sr, DialogTitle as cr, DialogTrigger as Ir } from "./components/ui/dialog.es.js";
36
36
  import { Drawer as Mr, DrawerClose as Er, DrawerContent as Or, DrawerDescription as Lr, DrawerFooter as Ar, DrawerHeader as _r, DrawerOverlay as Rr, DrawerPortal as wr, DrawerTitle as Fr, DrawerTrigger as Br } from "./components/ui/drawer.es.js";
37
37
  import { DropdownMenu as Nr, DropdownMenuCheckboxItem as vr, DropdownMenuContent as yr, DropdownMenuGroup as Ur, DropdownMenuItem as Gr, DropdownMenuLabel as Hr, DropdownMenuPortal as kr, DropdownMenuRadioGroup as Vr, DropdownMenuRadioItem as Yr, DropdownMenuSub as Kr, DropdownMenuSubContent as zr, DropdownMenuSubTrigger as Xr, DropdownMenuTrigger as jr } from "./components/ui/dropdown-menu.es.js";
38
38
  import { Label as Jr } from "./components/ui/label.es.js";
39
39
  import { Loader as Wr } from "./components/ui/loader.es.js";
40
- import { Pagination as $r, PaginationContent as eo, PaginationEllipsis as ro, PaginationItem as oo, PaginationLink as to, PaginationNext as ao, PaginationPrevious as no } from "./components/ui/pagination.es.js";
40
+ import { Pagination as $r, PaginationContent as eo, PaginationEllipsis as ro, PaginationItem as oo, PaginationLink as to, PaginationNext as ao, PaginationPrevious as io } from "./components/ui/pagination.es.js";
41
41
  import { Popover as po, PopoverAnchor as lo, PopoverContent as To, PopoverTrigger as mo } from "./components/ui/popover.es.js";
42
42
  import { Separator as So } from "./components/ui/separator.es.js";
43
- import { Sheet as xo, SheetClose as fo, SheetContent as Co, SheetDescription as Do, SheetFooter as go, SheetHeader as so, SheetOverlay as co, SheetPortal as Po, SheetTitle as Io, SheetTrigger as Mo } from "./components/ui/sheet.es.js";
43
+ import { Sheet as xo, SheetClose as fo, SheetContent as Co, SheetDescription as Do, SheetFooter as go, SheetHeader as so, SheetOverlay as co, SheetPortal as Io, SheetTitle as Po, SheetTrigger as Mo } from "./components/ui/sheet.es.js";
44
44
  import { Sidebar as Oo, SidebarContent as Lo, SidebarContext as Ao, SidebarFooter as _o, SidebarGroup as Ro, SidebarGroupAction as wo, SidebarGroupContent as Fo, SidebarGroupLabel as Bo, SidebarHeader as ho, SidebarInset as No, SidebarMenu as vo, SidebarMenuAction as yo, SidebarMenuBadge as Uo, SidebarMenuButton as Go, SidebarMenuItem as Ho, SidebarMenuSkeleton as ko, SidebarMenuSub as Vo, SidebarMenuSubButton as Yo, SidebarMenuSubItem as Ko, SidebarProvider as zo, SidebarRail as Xo, SidebarTrigger as jo, useSidebar as qo } from "./components/ui/sidebar.es.js";
45
45
  import { Skeleton as Qo } from "./components/ui/skeleton.es.js";
46
46
  import { Toaster as Zo } from "./components/ui/sonner.es.js";
47
47
  import { StaticDataTable as et } from "./components/ui/static-data-table.es.js";
48
- import { Table as ot, TableBody as tt, TableCaption as at, TableCell as nt, TableFooter as it, TableHead as pt, TableHeader as lt, TableRow as Tt } from "./components/ui/table.es.js";
49
- import { TablePageLayout as mt } from "./components/ui/table-page-layout.es.js";
48
+ import { Table as ot, TableBody as tt, TableCaption as at, TableCell as it, TableFooter as nt, TableHead as pt, TableHeader as lt, TableRow as Tt } from "./components/ui/table.es.js";
49
+ import { TablePageLayout as dt } from "./components/ui/table-page-layout.es.js";
50
50
  import { Tabs as St, TabsContent as bt, TabsList as xt, TabsTrigger as ft } from "./components/ui/tabs.es.js";
51
- import { Tooltip as Dt, TooltipContent as gt, TooltipProvider as st, TooltipTrigger as ct } from "./components/ui/tooltip.es.js";
51
+ import { Timeline as Dt, TimelineItem as gt, TimelineTime as st, timelineIconVariants as ct } from "./components/ui/timeline.es.js";
52
+ import { Tooltip as Pt, TooltipContent as Mt, TooltipProvider as Et, TooltipTrigger as Ot } from "./components/ui/tooltip.es.js";
52
53
  export {
53
54
  x as ACTIONS_COLUMN_ID,
54
- P as ALL_OS,
55
+ I as ALL_OS,
55
56
  Re as Accordion,
56
57
  we as AccordionContent,
57
58
  Fe as AccordionItem,
@@ -67,8 +68,8 @@ export {
67
68
  je as BreadcrumbPage,
68
69
  qe as BreadcrumbSeparator,
69
70
  Qe as Button,
70
- I as COMPARISON_OPERATOR_LABELS,
71
- dr as COPY_BUTTON_STATE_TIMEOUT,
71
+ P as COMPARISON_OPERATOR_LABELS,
72
+ mr as COPY_BUTTON_STATE_TIMEOUT,
72
73
  X as Calendar,
73
74
  $e as Card,
74
75
  er as CardContent,
@@ -77,10 +78,10 @@ export {
77
78
  tr as CardHeader,
78
79
  ar as CardTitle,
79
80
  q as Checkbox,
80
- ir as Collapsible,
81
+ nr as Collapsible,
81
82
  pr as CollapsibleContent,
82
83
  lr as CollapsibleTrigger,
83
- mr as CopyButton,
84
+ dr as CopyButton,
84
85
  W as CountrySelect,
85
86
  M as DEFAULT_FILTERABLE_FIELDS,
86
87
  K as DYNAMIC_INPUT_TARGET,
@@ -94,7 +95,7 @@ export {
94
95
  gr as DialogOverlay,
95
96
  sr as DialogPortal,
96
97
  cr as DialogTitle,
97
- Pr as DialogTrigger,
98
+ Ir as DialogTrigger,
98
99
  Mr as Drawer,
99
100
  Er as DrawerClose,
100
101
  Or as DrawerContent,
@@ -123,8 +124,8 @@ export {
123
124
  ee as FormField,
124
125
  U as FormatDate,
125
126
  oe as Input,
126
- ne as InputOTP,
127
- ie as InputOTPGroup,
127
+ ie as InputOTP,
128
+ ne as InputOTPGroup,
128
129
  pe as InputOTPSeparator,
129
130
  le as InputOTPSlot,
130
131
  Ae as KeyValueCard,
@@ -138,7 +139,7 @@ export {
138
139
  oo as PaginationItem,
139
140
  to as PaginationLink,
140
141
  ao as PaginationNext,
141
- no as PaginationPrevious,
142
+ io as PaginationPrevious,
142
143
  xe as PasswordInput,
143
144
  po as Popover,
144
145
  lo as PopoverAnchor,
@@ -157,8 +158,8 @@ export {
157
158
  go as SheetFooter,
158
159
  so as SheetHeader,
159
160
  co as SheetOverlay,
160
- Po as SheetPortal,
161
- Io as SheetTitle,
161
+ Io as SheetPortal,
162
+ Po as SheetTitle,
162
163
  Mo as SheetTrigger,
163
164
  Oo as Sidebar,
164
165
  Lo as SidebarContent,
@@ -182,7 +183,7 @@ export {
182
183
  zo as SidebarProvider,
183
184
  Xo as SidebarRail,
184
185
  jo as SidebarTrigger,
185
- Pe as SingleSelect,
186
+ Ie as SingleSelect,
186
187
  Qo as Skeleton,
187
188
  et as StaticDataTable,
188
189
  D as TABLE_CHECK_BOX_COLUMN,
@@ -191,11 +192,11 @@ export {
191
192
  ot as Table,
192
193
  tt as TableBody,
193
194
  at as TableCaption,
194
- nt as TableCell,
195
- it as TableFooter,
195
+ it as TableCell,
196
+ nt as TableFooter,
196
197
  pt as TableHead,
197
198
  lt as TableHeader,
198
- mt as TablePageLayout,
199
+ dt as TablePageLayout,
199
200
  Tt as TableRow,
200
201
  St as Tabs,
201
202
  bt as TabsContent,
@@ -205,15 +206,18 @@ export {
205
206
  J as TfCheckbox,
206
207
  Z as TfCountrySelect,
207
208
  te as TfInput,
208
- de as TfLicenseTypeSelect,
209
+ me as TfLicenseTypeSelect,
209
210
  Se as TfMultiSelect,
210
- Ie as TfSingleSelect,
211
+ Pe as TfSingleSelect,
211
212
  Oe as TfTextarea,
213
+ Dt as Timeline,
214
+ gt as TimelineItem,
215
+ st as TimelineTime,
212
216
  Zo as Toaster,
213
- Dt as Tooltip,
214
- gt as TooltipContent,
215
- st as TooltipProvider,
216
- ct as TooltipTrigger,
217
+ Pt as Tooltip,
218
+ Mt as TooltipContent,
219
+ Et as TooltipProvider,
220
+ Ot as TooltipTrigger,
217
221
  ve as alertVariants,
218
222
  We as buttonVariants,
219
223
  a as cn,
@@ -221,18 +225,19 @@ export {
221
225
  k as convertToTitleCase,
222
226
  v as createTableFetchFn,
223
227
  T as fieldContext,
224
- d as formContext,
228
+ m as formContext,
225
229
  R as getLicenseStatus,
226
230
  w as getResourceDisplayName,
227
- n as getThemeHue,
231
+ i as getThemeHue,
228
232
  F as getValidityDisplay,
229
233
  B as getValueFromData,
230
- i as logout,
234
+ n as logout,
231
235
  V as pluralizeTimes,
232
236
  h as secondsToDuration,
233
237
  p as setThemeHue,
238
+ ct as timelineIconVariants,
234
239
  S as useAppForm,
235
- m as useFieldContext,
240
+ d as useFieldContext,
236
241
  o as useIsMobile,
237
242
  qo as useSidebar
238
243
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptlex/web-components",
3
- "version": "3.2.4",
3
+ "version": "3.3.0",
4
4
  "description": "React component library for Cryptlex web applications",
5
5
  "author": "Cryptlex",
6
6
  "type": "module",