{
  "schemaVersion": "1.0.0",
  "readme": "README.md",
  "modules": [
    {
      "kind": "javascript-module",
      "path": "lib/jb-popover.ts",
      "declarations": [
        {
          "kind": "class",
          "description": "Responsive anchored desktop popover, centered tablet panel, and mobile bottom sheet with optional touch dismissal at viewport widths up to 40rem.",
          "name": "JBPopoverWebComponent",
          "tagName": "jb-popover",
          "customElement": true,
          "superclass": {
            "name": "HTMLElement"
          },
          "attributes": [
            {
              "name": "is-open",
              "description": "Opens the popover when set to true. Any other value closes it.",
              "type": {
                "text": "boolean"
              }
            },
            {
              "name": "id",
              "description": "Element id. On mobile, an id enables URL hash state while the popover is open.",
              "type": {
                "text": "string"
              }
            },
            {
              "name": "aria-label",
              "type": {
                "text": "string"
              },
              "description": "Accessible label applied to the internal dialog when modal behavior is active."
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "isOpen",
              "description": "True until dismissal animation finishes; closed reports completion.",
              "type": {
                "text": "boolean"
              },
              "readonly": true
            },
            {
              "kind": "field",
              "name": "positionArea",
              "description": "Preferred anchor alignment used after bindTarget().",
              "type": {
                "text": "{ inline?: 'start' | 'end' | 'center' | 'center-before' | 'center-after'; block?: 'after' | 'before' }"
              }
            },
            {
              "kind": "field",
              "name": "overflowHandler",
              "description": "Overflow handling mode. SLIDE moves the content upward when it overflows.",
              "type": {
                "text": "'NONE' | 'SLIDE'"
              },
              "default": "NONE"
            },
            {
              "kind": "field",
              "name": "overflowDom",
              "description": "Element used as the overflow boundary. Defaults to the window height.",
              "type": {
                "text": "HTMLElement | null"
              }
            },
            {
              "kind": "field",
              "name": "PopoverHashPath",
              "description": "Hash path generated from id, such as #actions-popover.",
              "type": {
                "text": "string | null"
              },
              "readonly": true
            },
            {
              "kind": "field",
              "name": "JBID",
              "description": "Internal unique symbol for this popover instance.",
              "type": {
                "text": "symbol"
              },
              "readonly": true
            },
            {
              "kind": "field",
              "name": "swipeToClose",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enable downward touch dismissal from the backdrop or mobile bottom-sheet handle and, when opted in, content. Applies only at widths up to 40rem. Set as a JavaScript property, not an HTML attribute."
            },
            {
              "kind": "field",
              "name": "dragFromContent",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Opt in to downward gestures starting in content. Scrollable ancestors must already be at the top when touch starts; scrolling to the top requires a new gesture. Interactive controls, horizontal gestures, and regions marked data-jb-popover-no-drag are excluded. Requires swipeToClose."
            },
            {
              "kind": "field",
              "name": "autoPlacement",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Flip and shift desktop placement inside the viewport; false requests exact alignment."
            },
            {
              "kind": "field",
              "name": "modal",
              "type": {
                "text": "boolean | 'auto'"
              },
              "default": "'auto'",
              "description": "Auto enables modal focus containment, inert background, and scroll locking on mobile/tablet. Set false for non-modal pickers or true for modal desktop popovers."
            },
            {
              "kind": "field",
              "name": "closeOnEscape",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Allow Escape to request dismissal of the topmost popover."
            },
            {
              "kind": "field",
              "name": "restoreFocus",
              "type": { "text": "boolean" },
              "default": "false",
              "description": "Opt in to restoring the previously focused element on close. Leave disabled for triggers that open on focus."
            },
            {
              "kind": "field",
              "name": "autoCloseOnBackgroundClick",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Automatically close after an allowed backdrop click request."
            },
            {
              "kind": "field",
              "name": "isMobileMode",
              "type": {
                "text": "boolean"
              },
              "readonly": true,
              "description": "True at widths up to 48rem, including tablets."
            },
            {
              "kind": "field",
              "name": "isBottomSheet",
              "type": {
                "text": "boolean"
              },
              "readonly": true,
              "description": "True at widths up to 40rem."
            }
          ],
          "methods": [
            {
              "name": "open",
              "description": "Opens the popover, updates anchor position, and pushes mobile hash history when id is set."
            },
            {
              "name": "close",
              "description": "Animate dismissal, release focus/scroll/history ownership, and emit closed on completion. Programmatic calls bypass close-request events."
            },
            {
              "name": "bindTarget",
              "description": "Bind or replace the desktop anchor, restarting size and scroll observation when open."
            },
            {
              "name": "unBindTarget",
              "description": "Removes the bound anchor and resets positioning."
            },
            {
              "name": "checkInitialOpenness",
              "description": "Opens the popover when the current URL hash matches its id."
            }
          ],
          "events": [
            {
              "name": "load",
              "description": "Dispatched from connectedCallback before event listeners are registered."
            },
            {
              "name": "init",
              "description": "Dispatched from connectedCallback after initialization."
            },
            {
              "name": "url-open",
              "description": "Dispatched when the popover opens itself because the current URL hash matches its id."
            },
            {
              "name": "close",
              "description": "Cancelable bubbling/composed swipe, backdrop, or Escape request after cancel. HISTORY_BACK_EVENT is a notification; use closed for animation completion.",
              "type": {
                "text": "CustomEvent<{ eventType: JBPopoverCloseEventType }>"
              }
            },
            {
              "name": "cancel",
              "description": "Cancelable bubbling/composed request for SWIPE_DOWN, BACKGROUND_CLICK, or ESCAPE_KEY. preventDefault keeps the popover open.",
              "type": {
                "text": "CustomEvent<{ eventType: 'SWIPE_DOWN' | 'BACKGROUND_CLICK' | 'ESCAPE_KEY' }>"
              }
            },
            {
              "name": "closed",
              "description": "Bubbling/composed completion event after any close animation. isOpen is now false; focus and scroll state have been restored.",
              "type": {
                "text": "CustomEvent"
              }
            }
          ],
          "slots": [
            {
              "name": "",
              "description": "Popover content."
            }
          ],
          "cssParts": [
            {
              "name": "content",
              "description": "The popover content wrapper."
            },
            {
              "name": "drag-handle",
              "description": "Mobile bottom-sheet touch handle."
            },
            {
              "name": "backdrop",
              "description": "Mobile and tablet overlay backdrop. Owns background color, blur, and opacity; supports backdrop clicks and mobile swipe gestures."
            }
          ],
          "cssProperties": [
            {
              "name": "--jb-popover-z-index",
              "description": "Z-index of the opened popover."
            },
            {
              "name": "--jb-popover-bg-color",
              "description": "Background color of the content wrapper."
            },
            {
              "name": "--jb-popover-border-radius",
              "description": "Border radius of the content wrapper."
            },
            {
              "name": "--jb-popover-top",
              "description": "Top position in desktop mode when not bound to an anchor."
            },
            {
              "name": "--jb-popover-padding",
              "description": "Padding of the content wrapper."
            },
            {
              "name": "--jb-popover-back-bg-color",
              "description": "Mobile backdrop background color."
            },
            {
              "name": "--jb-popover-margin-top",
              "description": "Desktop margin above the popover."
            },
            {
              "name": "--jb-popover-box-shadow",
              "description": "Box shadow of the popover content wrapper."
            },
            {
              "name": "--jb-popover-handle-color",
              "description": "Color of the bottom-sheet handle."
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "JBPopoverWebComponent",
          "declaration": {
            "name": "JBPopoverWebComponent",
            "module": "lib/jb-popover.ts"
          }
        },
        {
          "kind": "custom-element-definition",
          "name": "jb-popover",
          "declaration": {
            "name": "JBPopoverWebComponent",
            "module": "lib/jb-popover.ts"
          }
        }
      ]
    }
  ]
}
