{
  "name": "bubble",
  "type": "registry:ui",
  "dependencies": [
    "class-variance-authority",
    "reka-ui"
  ],
  "registryDependencies": [],
  "files": [
    {
      "path": "ui/bubble/Bubble.vue",
      "type": "registry:ui",
      "content": "<script lang='ts' setup>\nimport type { PrimitiveProps } from \"reka-ui\"\nimport type { HTMLAttributes } from \"vue\"\nimport type { BubbleVariants } from \".\"\nimport { Primitive } from \"reka-ui\"\nimport { cn } from \"@/lib/utils\"\nimport { bubbleVariants } from \".\"\n\ninterface Props extends PrimitiveProps {\n  variant?: BubbleVariants[\"variant\"]\n  align?: \"start\" | \"end\"\n  class?: HTMLAttributes[\"class\"]\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  variant: \"default\",\n  align: \"start\",\n  as: \"div\",\n})\n</script>\n\n<template>\n  <Primitive\n    data-slot=\"bubble\"\n    :data-variant=\"variant\"\n    :data-align=\"align\"\n    :as=\"as\"\n    :as-child=\"asChild\"\n    :class=\"cn(bubbleVariants({ variant }), props.class)\"\n  >\n    <slot />\n  </Primitive>\n</template>\n"
    },
    {
      "path": "ui/bubble/BubbleContent.vue",
      "type": "registry:ui",
      "content": "<script lang='ts' setup>\nimport type { PrimitiveProps } from \"reka-ui\"\nimport type { HTMLAttributes } from \"vue\"\nimport { Primitive } from \"reka-ui\"\nimport { cn } from \"@/lib/utils\"\n\ninterface Props extends PrimitiveProps {\n  class?: HTMLAttributes[\"class\"]\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  as: \"div\",\n})\n</script>\n\n<template>\n  <Primitive\n    data-slot=\"bubble-content\"\n    :as=\"as\"\n    :as-child=\"asChild\"\n    :class=\"cn(\n      'cn-bubble-content w-fit max-w-full min-w-0 overflow-hidden wrap-break-word [button]:text-left [button,a]:transition-colors',\n      props.class,\n    )\"\n  >\n    <slot />\n  </Primitive>\n</template>\n"
    },
    {
      "path": "ui/bubble/BubbleGroup.vue",
      "type": "registry:ui",
      "content": "<script setup lang=\"ts\">\nimport type { PrimitiveProps } from \"reka-ui\"\nimport type { HTMLAttributes } from \"vue\"\nimport { Primitive } from \"reka-ui\"\nimport { cn } from \"@/lib/utils\"\n\ninterface Props extends PrimitiveProps {\n  class?: HTMLAttributes[\"class\"]\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  as: \"div\",\n})\n</script>\n\n<template>\n  <Primitive\n    data-slot=\"bubble-group\"\n    :as=\"as\"\n    :as-child=\"asChild\"\n    :class=\"cn('cn-bubble-group flex min-w-0 flex-col', props.class)\"\n  >\n    <slot />\n  </Primitive>\n</template>\n"
    },
    {
      "path": "ui/bubble/BubbleReactions.vue",
      "type": "registry:ui",
      "content": "<script lang='ts' setup>\nimport type { PrimitiveProps } from \"reka-ui\"\nimport type { HTMLAttributes } from \"vue\"\nimport type { BubbleReactionsVariants } from \".\"\nimport { Primitive } from \"reka-ui\"\nimport { cn } from \"@/lib/utils\"\nimport { bubbleReactionsVariants } from \".\"\n\ninterface Props extends PrimitiveProps {\n  side?: BubbleReactionsVariants[\"side\"]\n  align?: BubbleReactionsVariants[\"align\"]\n  class?: HTMLAttributes[\"class\"]\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  side: \"bottom\",\n  align: \"end\",\n  as: \"div\",\n})\n</script>\n\n<template>\n  <Primitive\n    data-slot=\"bubble-reactions\"\n    :data-side=\"side\"\n    :data-align=\"align\"\n    :as=\"as\"\n    :as-child=\"asChild\"\n    :class=\"cn(bubbleReactionsVariants({ side, align }), props.class)\"\n  >\n    <slot />\n  </Primitive>\n</template>\n"
    },
    {
      "path": "ui/bubble/index.ts",
      "type": "registry:ui",
      "content": "import type { VariantProps } from \"class-variance-authority\"\nimport { cva } from \"class-variance-authority\"\n\nexport { default as Bubble } from \"./Bubble.vue\"\nexport { default as BubbleContent } from \"./BubbleContent.vue\"\nexport { default as BubbleGroup } from \"./BubbleGroup.vue\"\nexport { default as BubbleReactions } from \"./BubbleReactions.vue\"\n\nexport const bubbleVariants = cva(\n  \"cn-bubble group/bubble relative flex w-fit min-w-0 flex-col\",\n  {\n    variants: {\n      variant: {\n        default: \"cn-bubble-variant-default\",\n        secondary: \"cn-bubble-variant-secondary\",\n        muted: \"cn-bubble-variant-muted\",\n        tinted: \"cn-bubble-variant-tinted\",\n        outline: \"cn-bubble-variant-outline\",\n        ghost: \"cn-bubble-variant-ghost\",\n        destructive: \"cn-bubble-variant-destructive\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  },\n)\nexport type BubbleVariants = VariantProps<typeof bubbleVariants>\n\nexport const bubbleReactionsVariants = cva(\n  \"cn-bubble-reactions absolute z-10 flex w-fit items-center justify-center\",\n  {\n    variants: {\n      side: {\n        top: \"cn-bubble-reactions-side-top\",\n        bottom: \"cn-bubble-reactions-side-bottom\",\n      },\n      align: {\n        start: \"cn-bubble-reactions-align-start\",\n        end: \"cn-bubble-reactions-align-end\",\n      },\n    },\n    defaultVariants: {\n      side: \"bottom\",\n      align: \"end\",\n    },\n  },\n)\nexport type BubbleReactionsVariants = VariantProps<typeof bubbleReactionsVariants>\n"
    }
  ]
}
