{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "Marker",
  "dependencies": [
    "@base-ui/react",
    "cn",
    "rescript-base-ui"
  ],
  "files": [
    {
      "path": "registry/base/ui/Marker.res",
      "content": "@@jsxConfig({version: 4, mode: \"automatic\", module_: \"BaseUi.BaseUiJsxDOM\"})\n\n@module(\"cn\")\nexternal cn: (string, option<string>) => string = \"cn\"\n\nmodule Variant = {\n  @unboxed\n  type t =\n    | @as(\"default\") Default\n    | @as(\"separator\") Separator\n    | @as(\"border\") Border\n}\n\nlet variantClass = (~variant: Variant.t) =>\n  switch variant {\n  | Default => \"\"\n  | Separator => \"before:h-px before:min-w-0 before:flex-1 before:bg-border after:h-px after:min-w-0 after:flex-1 after:bg-border before:mr-1 after:ml-1\"\n  | Border => \"border-b border-border pb-2\"\n  }\n\ntype props = {variant?: Variant.t, ...BaseUi.Types.BaseUIComponentProps.t}\ntype renderState = {slot: string, variant: Variant.t}\nlet toDomProps: props => BaseUi.Types.DomProps.t = %raw(`({variant, className, render, ...props}) => props`)\n\n@react.componentWithProps(props)\nlet make = (props: props) => {\n  let variant = props.variant->Option.getOr(Default)\n  BaseUi.Render.use({\n    defaultTagName: \"div\",\n    props: BaseUi.Render.mergeProps(\n      {\n        className: cn(\n          `gap-2 text-sm text-muted-foreground [a]:hover:text-foreground [a]:underline-offset-3 [a]:underline [&_svg:not([class*='size-'])]:size-4 min-h-4 text-left group/marker relative flex w-full items-center ${variantClass(\n              ~variant,\n            )}`,\n          props.className,\n        ),\n      },\n      toDomProps(props),\n    ),\n    render: ?props.render,\n    state: {slot: \"marker\", variant},\n  })\n}\n\nmodule Icon = {\n  @react.componentWithProps(BaseUi.Types.DomProps.t)\n  let make = (props: BaseUi.Types.DomProps.t) =>\n    <span\n      {...props}\n      dataSlot={props.dataSlot->Option.getOr(\"marker-icon\")}\n      ariaHidden={props.ariaHidden->Option.getOr(true)}\n      className={cn(\"size-4 [&_svg:not([class*='size-'])]:size-4 shrink-0\", props.className)}\n    />\n}\n\nmodule Content = {\n  @react.componentWithProps(BaseUi.Types.DomProps.t)\n  let make = (props: BaseUi.Types.DomProps.t) =>\n    <span\n      {...props}\n      dataSlot={props.dataSlot->Option.getOr(\"marker-content\")}\n      className={cn(\n        \"group-data-[variant=separator]/marker:flex-none group-data-[variant=separator]/marker:text-center *:[a]:hover:text-foreground *:[a]:underline *:[a]:underline-offset-3 min-w-0 wrap-break-word\",\n        props.className,\n      )}\n    />\n}\n",
      "type": "registry:file",
      "target": "@ui/Marker.res"
    }
  ],
  "type": "registry:ui"
}