{
  "name": "WidgetLauncher",
  "package": "@magicblocksai/ui",
  "file": "packages/ui/src/components/WidgetLauncher.tsx",
  "chapterTag": "25 Chat Widget",
  "chapter": "25-widget.html",
  "sectionId": "launcher",
  "elName": "WidgetLauncher",
  "demoUrl": "https://brand.magicblocks.ai/components/25-widget#launcher",
  "hasLiveDemo": false,
  "description": "",
  "useClient": false,
  "interactivity": "display",
  "namedExports": [
    {
      "name": "WidgetLauncher",
      "isPrincipal": true,
      "isType": false
    },
    {
      "name": "WidgetLauncherProps",
      "isPrincipal": false,
      "isType": true
    }
  ],
  "importStatement": "import { WidgetLauncher } from \"@magicblocksai/ui\";",
  "props": [
    {
      "name": "open",
      "optional": true,
      "type": "boolean",
      "doc": "Whether the chat panel is currently open. Drives icon swap (default → close X)."
    },
    {
      "name": "unread",
      "optional": true,
      "type": "number",
      "doc": "Optional unread message count."
    },
    {
      "name": "icon",
      "optional": true,
      "type": "ReactNode | null",
      "doc": "Override the theme icon. Pass `null` to suppress."
    },
    {
      "name": "label",
      "optional": true,
      "type": "string",
      "doc": "Override the theme aria-label."
    },
    {
      "name": "floating",
      "optional": true,
      "type": "boolean",
      "doc": "If `true`, the launcher renders as a `position: fixed` floating bubble. Default `true`. Pass `false` to render in-flow (useful for the `<WidgetStyleEditor>` preview pane)."
    }
  ],
  "classesUsed": [
    "widget-launcher",
    "widget-launcher-badge",
    "widget-launcher-disc",
    "widget-launcher-icon"
  ],
  "examples": {
    "react": null,
    "html": null,
    "css": ".widget-launcher {\n  appearance: none;\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  width: var(--w-launcher-size, 60px);\n  height: var(--w-launcher-size, 60px);\n  border-radius: 999px;\n  border: 0;\n  cursor: pointer;\n  color: var(--w-launcher-icon, #FFFFFF);\n  background: transparent;\n  transition: transform var(--dur-2) var(--ease), filter var(--dur-2) var(--ease);\n}\n\n.widget-launcher-badge {\n  position: absolute;\n  top: 0;\n  right: 0;\n  min-width: 20px;\n  height: 20px;\n  padding: 0 6px;\n  border-radius: 999px;\n  background: #EC4899;\n  color: #FFFFFF;\n  font: 700 11px/1 var(--f-mono);\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  border: 2px solid var(--w-launcher-bg, #18181B);\n  z-index: 2;\n}\n\n.widget-launcher-disc {\n  position: absolute;\n  inset: 0;\n  border-radius: 999px;\n  background: var(--w-launcher-bg, #18181B);\n  background-image: var(--w-launcher-image, none);\n  background-size: cover;\n  background-position: center;\n  box-shadow: 0 8px 20px color-mix(in oklab, #000 22%, transparent);\n  transition: background var(--dur-2) var(--ease);\n}\n\n.widget-launcher-icon {\n  position: relative;\n  z-index: 1;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  color: var(--w-launcher-icon, #FFFFFF);\n}"
  }
}
