{"version":3,"sources":["/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-CHIHYC7Q.cjs","../src/components/ui/label.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/ui/portal-container.tsx","../src/components/ui/skeleton.tsx"],"names":["forwardRef","jsx","jsxs"],"mappings":"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","file":"/home/runner/work/openframe-oss-lib/openframe-oss-lib/openframe-frontend-core/dist/chunk-CHIHYC7Q.cjs","sourcesContent":[null,"'use client';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react';\n\nimport { cn } from '../../utils/cn';\n\n/**\n * THE form label. One treatment, stated once:\n *\n *  - Scale + color live in the BASE (`text-h6 text-ods-text-primary`), so call\n *    sites never restate them — before this, ~100 call sites carried a\n *    `className=\"text-ods-text-primary\"` override and ~115 cargo-culted\n *    `variant=\"small\"` because the base under-specified.\n *  - NO margin. Layout belongs to the CONTAINER (`Field`'s gap, a `space-y-2`\n *    wrapper) — a margin inside a text primitive stacks with container gaps,\n *    which is exactly how `Field` rows ended up 12px label→control while the\n *    hand-rolled rows were 8px, and how labels sat 2px off their inline badges\n *    in `items-center` rows. Opt into `spacing` ONLY when the label truly has\n *    no spacing container.\n *\n * Raw `<label>` elements remain correct for CLICK-SURFACES (a field's adorned\n * chrome, checkbox/radio rows, upload dropzones) — those are interaction\n * wrappers, not text labels, and must not inherit this typography.\n */\nconst labelVariants = cva('block text-ods-text-primary text-h6', {\n  variants: {\n    variant: {\n      default: '',\n      /** @deprecated alias of `default` — the three small scales converged on text-h6. */\n      small: '',\n      /** @deprecated alias of `default`. */\n      medium: '',\n      large: 'text-h4',\n    },\n    spacing: {\n      none: '',\n      tight: 'mb-0.5',\n      normal: 'mb-2',\n      loose: 'mb-3',\n    },\n  },\n  defaultVariants: {\n    variant: 'default',\n    spacing: 'none',\n  },\n});\n\nconst Label = forwardRef<\n  ElementRef<typeof LabelPrimitive.Root>,\n  ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(({ className, variant, spacing, ...props }, ref) => (\n  <LabelPrimitive.Root ref={ref} className={cn(labelVariants({ variant, spacing }), className)} {...props} />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","'use client';\n\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Check, ChevronRight, Circle } from 'lucide-react';\nimport { type ComponentPropsWithoutRef, type ElementRef, type HTMLAttributes, forwardRef } from 'react';\n\nimport { cn } from '../../utils/cn';\nimport { COLLISION_PADDING_PX, useCollisionBoundary, usePortalContainer } from './portal-container';\n\nconst DropdownMenu = DropdownMenuPrimitive.Root;\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group;\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal;\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub;\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;\n\nconst DropdownMenuSubTrigger = forwardRef<\n  ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n  ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n    inset?: boolean;\n  }\n>(({ className, inset, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.SubTrigger\n    ref={ref}\n    className={cn(\n      'flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 outline-none text-h6 hover:bg-ods-bg-hover focus:bg-ods-bg-hover data-[state=open]:bg-ods-bg-hover [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n      inset && 'pl-8',\n      className,\n    )}\n    {...props}\n  >\n    {children}\n    <ChevronRight className=\"ml-auto\" />\n  </DropdownMenuPrimitive.SubTrigger>\n));\nDropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;\n\nconst DropdownMenuSubContent = forwardRef<\n  ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n  ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, collisionBoundary, collisionPadding, hideWhenDetached, ...props }, ref) => {\n  // Same container as the root content — `DropdownMenuContent` portals, and a\n  // submenu left un-portaled inherits whatever clipping/stacking context its\n  // parent sits in instead of the one the host published. (The hand-rolled\n  // submenu in `actions-menu` already portals; this keeps the shared primitive\n  // consistent with both.)\n  const container = usePortalContainer();\n  // Same boundary as the root content — a submenu must not escape the surface\n  // its parent menu is confined to.\n  const boundary = useCollisionBoundary();\n  const resolvedBoundary = collisionBoundary ?? boundary ?? undefined;\n  return (\n    <DropdownMenuPrimitive.Portal container={container ?? undefined}>\n      <DropdownMenuPrimitive.SubContent\n        ref={ref}\n        collisionBoundary={resolvedBoundary}\n        collisionPadding={collisionPadding ?? (resolvedBoundary ? COLLISION_PADDING_PX : undefined)}\n        // Only defaulted ON where a boundary was published (i.e. inside a panel\n        // that owns its menus) — see `DropdownMenuContent`.\n        hideWhenDetached={hideWhenDetached ?? (resolvedBoundary ? true : undefined)}\n        className={cn(\n          'z-50 min-w-[8rem] overflow-hidden rounded-md border border-ods-border bg-ods-card p-1 text-ods-text-primary shadow-lg 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',\n          className,\n        )}\n        {...props}\n      />\n    </DropdownMenuPrimitive.Portal>\n  );\n});\nDropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;\n\nconst DropdownMenuContent = forwardRef<\n  ElementRef<typeof DropdownMenuPrimitive.Content>,\n  ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, collisionBoundary, collisionPadding, hideWhenDetached, ...props }, ref) => {\n  // Portal into the active container (e.g. a drawer) so the menu inherits its\n  // stacking context; falls back to `document.body` when none is provided.\n  const container = usePortalContainer();\n  // Keep flip/shift inside the surface that owns the menu. Without this Radix\n  // collides against the VIEWPORT, so a menu opened near the top of the chat\n  // panel grows upward past the panel and lands over the app header. An\n  // explicit prop still wins; no provider → viewport, Radix's own default.\n  const boundary = useCollisionBoundary();\n  const resolvedBoundary = collisionBoundary ?? boundary ?? undefined;\n  return (\n    <DropdownMenuPrimitive.Portal container={container ?? undefined}>\n      <DropdownMenuPrimitive.Content\n        ref={ref}\n        sideOffset={sideOffset}\n        collisionBoundary={resolvedBoundary}\n        collisionPadding={collisionPadding ?? (resolvedBoundary ? COLLISION_PADDING_PX : undefined)}\n        // A menu tracks its trigger for as long as it is open. When the trigger\n        // scrolls out of its clipping ancestor — a chat card carried away by the\n        // thread's auto-scroll while the menu is open — Radix keeps the menu\n        // pinned to that off-screen anchor, so it slides to the surface edge and\n        // reads as a detached popup floating over unrelated chrome.\n        // `hideWhenDetached` makes it disappear with its trigger instead.\n        //\n        // Defaulted ON only where a boundary was published. This is a SHARED\n        // primitive: flipping it on globally would change dismissal behavior for\n        // every dropdown in every consumer, and the detached-popup problem it\n        // solves is specific to a menu living inside a scrolling panel.\n        hideWhenDetached={hideWhenDetached ?? (resolvedBoundary ? true : undefined)}\n        className={cn(\n          'z-50 min-w-[8rem] overflow-hidden rounded-md border border-ods-border bg-ods-card p-1 text-ods-text-primary shadow-md 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',\n          className,\n        )}\n        {...props}\n      />\n    </DropdownMenuPrimitive.Portal>\n  );\n});\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;\n\nconst DropdownMenuItem = forwardRef<\n  ElementRef<typeof DropdownMenuPrimitive.Item>,\n  ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n    inset?: boolean;\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Item\n    ref={ref}\n    className={cn(\n      'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-ods-text-primary outline-none transition-colors text-h6 hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n      inset && 'pl-8',\n      className,\n    )}\n    {...props}\n  />\n));\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;\n\nconst DropdownMenuCheckboxItem = forwardRef<\n  ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n  ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n  <DropdownMenuPrimitive.CheckboxItem\n    ref={ref}\n    className={cn(\n      'relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-ods-text-primary outline-none transition-colors text-h6 hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n      className,\n    )}\n    checked={checked}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Check className=\"h-4 w-4\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.CheckboxItem>\n));\nDropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;\n\nconst DropdownMenuRadioItem = forwardRef<\n  ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n  ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n  <DropdownMenuPrimitive.RadioItem\n    ref={ref}\n    className={cn(\n      'relative flex cursor-pointer select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-ods-text-primary outline-none transition-colors text-h6 hover:bg-ods-bg-hover hover:text-ods-text-primary focus:bg-ods-bg-hover focus:text-ods-text-primary data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n      className,\n    )}\n    {...props}\n  >\n    <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n      <DropdownMenuPrimitive.ItemIndicator>\n        <Circle className=\"h-2 w-2 fill-ods-accent\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </span>\n    {children}\n  </DropdownMenuPrimitive.RadioItem>\n));\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;\n\nconst DropdownMenuLabel = forwardRef<\n  ElementRef<typeof DropdownMenuPrimitive.Label>,\n  ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n    inset?: boolean;\n  }\n>(({ className, inset, ...props }, ref) => (\n  <DropdownMenuPrimitive.Label\n    ref={ref}\n    className={cn('px-2 py-1.5 font-semibold text-ods-text-secondary text-h6', inset && 'pl-8', className)}\n    {...props}\n  />\n));\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;\n\nconst DropdownMenuSeparator = forwardRef<\n  ElementRef<typeof DropdownMenuPrimitive.Separator>,\n  ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n  <DropdownMenuPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-ods-border', className)} {...props} />\n));\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;\n\nconst DropdownMenuShortcut = ({ className, ...props }: HTMLAttributes<HTMLSpanElement>) => {\n  return <span className={cn('ml-auto text-ods-text-secondary opacity-60 text-h6', className)} {...props} />;\n};\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut';\n\nexport {\n  DropdownMenu,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioItem,\n  DropdownMenuLabel,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuGroup,\n  DropdownMenuPortal,\n  DropdownMenuSub,\n  DropdownMenuSubContent,\n  DropdownMenuSubTrigger,\n  DropdownMenuRadioGroup,\n};\n","'use client';\n\nimport { createContext, useContext } from 'react';\n\n/**\n * The DOM node that Radix overlays (dropdown menus, tooltips) should portal\n * into, instead of the default `document.body`.\n *\n * Portaling to `document.body` lifts content out of every local stacking\n * context, which forces overlays opened *inside* a high-z surface (e.g. the\n * chat drawer) to escalate their own z-index to compete at the document\n * root. Pointing the portal at a node *inside* that surface instead\n * lets the content inherit the surface's stacking context — small, local\n * z-indices then \"just work\" and no escalation is needed. Radix positions\n * content with `strategy: \"fixed\"`, so it still escapes ancestor\n * `overflow: hidden` clipping regardless of where it is portaled.\n *\n * Default `null` → Radix falls back to `document.body` (unchanged behaviour\n * everywhere a provider isn't present).\n */\nexport const PortalContainerContext = createContext<HTMLElement | null>(null);\n\n/** Read the active portal container (or `null` to use `document.body`). */\nexport function usePortalContainer(): HTMLElement | null {\n  return useContext(PortalContainerContext);\n}\n\n/**\n * The element Radix overlays should treat as their COLLISION boundary — the\n * surface they must stay inside of.\n *\n * Separate from {@link PortalContainerContext} on purpose: the portal target is\n * a `display: contents` node (no box, so it can't be measured), while a\n * collision boundary must be a real, laid-out element.\n *\n * Why it matters: Radix positions overlays `position: fixed` and, by default,\n * flips/shifts them against the VIEWPORT. A menu opened near the top of a\n * panel therefore happily grows upward past the panel's edge and lands on top\n * of the app header — visually detached from the surface it belongs to. Handing\n * Radix the panel element instead keeps flip/shift (and the\n * `--radix-popper-available-height` a menu sizes itself by) inside that panel.\n *\n * Default `null` → viewport, i.e. Radix's own default, unchanged everywhere a\n * provider isn't present.\n */\nexport const CollisionBoundaryContext = createContext<HTMLElement | null>(null);\n\n/** Read the active collision boundary (or `null` for the viewport). */\nexport function useCollisionBoundary(): HTMLElement | null {\n  return useContext(CollisionBoundaryContext);\n}\n\n/** Padding (px) kept between an overlay and its boundary edge. Matches the\n *  panel's own gutter so a shifted menu never sits flush against the edge. */\nexport const COLLISION_PADDING_PX = 8;\n","'use client';\n\nimport { type HTMLAttributes, forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\ninterface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n  className?: string;\n}\n\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(({ className, ...props }, ref) => {\n  return <div ref={ref} className={cn('animate-pulse rounded-md bg-ods-border', className)} {...props} />;\n});\nSkeleton.displayName = 'Skeleton';\n\ninterface SkeletonTextProps extends HTMLAttributes<HTMLDivElement> {\n  lines?: number;\n  className?: string;\n}\n\nconst SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(({ lines = 1, className, ...props }, ref) => {\n  return (\n    <div ref={ref} className={cn('space-y-2', className)} {...props}>\n      {Array.from({ length: lines }).map((_, i) => (\n        <Skeleton\n          key={i}\n          className={cn(\n            'h-4',\n            i === lines - 1 && lines > 1 && 'w-3/4', // Last line shorter for multi-line\n          )}\n        />\n      ))}\n    </div>\n  );\n});\nSkeletonText.displayName = 'SkeletonText';\n\ninterface SkeletonCardProps extends HTMLAttributes<HTMLDivElement> {\n  showImage?: boolean;\n  className?: string;\n}\n\nconst SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n  ({ showImage = false, className, ...props }, ref) => {\n    return (\n      <div ref={ref} className={cn('overflow-hidden rounded-lg border border-ods-border', className)} {...props}>\n        {showImage && <Skeleton className=\"h-48 w-full\" />}\n        <div className=\"p-6\">\n          <Skeleton className=\"mb-4 h-6 w-3/4\" />\n          <SkeletonText lines={3} />\n        </div>\n      </div>\n    );\n  },\n);\nSkeletonCard.displayName = 'SkeletonCard';\n\ninterface SkeletonGridProps extends HTMLAttributes<HTMLDivElement> {\n  columns?: number;\n  items?: number;\n  showImages?: boolean;\n  className?: string;\n}\n\nconst SkeletonGrid = forwardRef<HTMLDivElement, SkeletonGridProps>(\n  ({ columns = 3, items = 6, showImages = false, className, ...props }, ref) => {\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          `grid grid-cols-1 gap-6`,\n          columns === 2 && 'md:grid-cols-2',\n          columns === 3 && 'md:grid-cols-3',\n          columns === 4 && 'md:grid-cols-4',\n          className,\n        )}\n        {...props}\n      >\n        {Array.from({ length: items }).map((_, i) => (\n          <SkeletonCard key={i} showImage={showImages} />\n        ))}\n      </div>\n    );\n  },\n);\nSkeletonGrid.displayName = 'SkeletonGrid';\n\ninterface SkeletonButtonProps extends HTMLAttributes<HTMLDivElement> {\n  size?: 'sm' | 'default' | 'lg';\n  className?: string;\n}\n\nconst SkeletonButton = forwardRef<HTMLDivElement, SkeletonButtonProps>(\n  ({ size = 'default', className, ...props }, ref) => {\n    const sizeClasses = {\n      sm: 'h-8 w-20',\n      default: 'h-10 w-32',\n      lg: 'h-12 w-40',\n    };\n\n    return <Skeleton ref={ref} className={cn('rounded-lg', sizeClasses[size], className)} {...props} />;\n  },\n);\nSkeletonButton.displayName = 'SkeletonButton';\n\ninterface SkeletonHeadingProps extends HTMLAttributes<HTMLDivElement> {\n  level?: 1 | 2 | 3 | 4 | 5 | 6;\n  className?: string;\n}\n\nconst SkeletonHeading = forwardRef<HTMLDivElement, SkeletonHeadingProps>(({ level = 1, className, ...props }, ref) => {\n  const heightClasses = {\n    1: 'h-12',\n    2: 'h-10',\n    3: 'h-8',\n    4: 'h-7',\n    5: 'h-6',\n    6: 'h-5',\n  };\n\n  return <Skeleton ref={ref} className={cn(heightClasses[level], 'w-3/4', className)} {...props} />;\n});\nSkeletonHeading.displayName = 'SkeletonHeading';\n\ninterface SkeletonListProps extends HTMLAttributes<HTMLDivElement> {\n  items?: number;\n  className?: string;\n}\n\nconst SkeletonList = forwardRef<HTMLDivElement, SkeletonListProps>(({ items = 5, className, ...props }, ref) => {\n  return (\n    <div ref={ref} className={cn('space-y-3', className)} {...props}>\n      {Array.from({ length: items }).map((_, i) => (\n        <div key={i} className=\"flex items-center gap-3\">\n          <Skeleton className=\"h-10 w-10 flex-shrink-0 rounded-full\" />\n          <div className=\"flex-1\">\n            <Skeleton className=\"mb-1 h-4 w-1/3\" />\n            <Skeleton className=\"h-3 w-1/2\" />\n          </div>\n        </div>\n      ))}\n    </div>\n  );\n});\nSkeletonList.displayName = 'SkeletonList';\n\ninterface SkeletonNavigationProps extends HTMLAttributes<HTMLDivElement> {\n  items?: number;\n  className?: string;\n}\n\nconst SkeletonNavigation = forwardRef<HTMLDivElement, SkeletonNavigationProps>(\n  ({ items = 6, className, ...props }, ref) => {\n    return (\n      <div ref={ref} className={cn('flex items-center gap-6', className)} {...props}>\n        {Array.from({ length: items }).map((_, i) => (\n          <Skeleton key={i} className=\"h-5 w-20\" />\n        ))}\n      </div>\n    );\n  },\n);\nSkeletonNavigation.displayName = 'SkeletonNavigation';\n\nexport {\n  Skeleton,\n  SkeletonText,\n  SkeletonCard,\n  SkeletonGrid,\n  SkeletonButton,\n  SkeletonHeading,\n  SkeletonList,\n  SkeletonNavigation,\n};\n"]}