{"version":3,"file":"VBadge.mjs","names":["VIcon","IconValue","makeLocationProps","useLocation","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","useTheme","makeTransitionProps","MaybeTransition","useBackgroundColor","useTextColor","useLocale","genericComponent","pick","useRender","toRef","VBadge","name","inheritAttrs","props","bordered","Boolean","color","String","content","Number","dot","floating","icon","inline","label","type","default","max","modelValue","offsetX","offsetY","textColor","location","transition","setup","ctx","backgroundColorClasses","backgroundColorStyles","roundedClasses","t","textColorClasses","textColorStyles","themeClasses","locationStyles","side","base","includes","value","isNaN","badgeAttrs","attrs","slots","undefined","badge"],"sources":["../../../src/components/VBadge/VBadge.tsx"],"sourcesContent":["// Styles\nimport './VBadge.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, useTheme } from '@/composables/theme'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { genericComponent, pick, useRender } from '@/util'\nimport { toRef } from 'vue'\n\n// Types\nimport type { MakeSlots } from '@/util'\n\nexport type VBadgeSlots = MakeSlots<{\n  default: []\n  badge: []\n}>\n\nexport const VBadge = genericComponent<VBadgeSlots>()({\n  name: 'VBadge',\n\n  inheritAttrs: false,\n\n  props: {\n    bordered: Boolean,\n    color: String,\n    content: [Number, String],\n    dot: Boolean,\n    floating: Boolean,\n    icon: IconValue,\n    inline: Boolean,\n    label: {\n      type: String,\n      default: '$vuetify.badge',\n    },\n    max: [Number, String],\n    modelValue: {\n      type: Boolean,\n      default: true,\n    },\n    offsetX: [Number, String],\n    offsetY: [Number, String],\n    textColor: String,\n\n    ...makeLocationProps({ location: 'top end' } as const),\n    ...makeRoundedProps(),\n    ...makeTagProps(),\n    ...makeThemeProps(),\n    ...makeTransitionProps({ transition: 'scale-rotate-transition' }),\n  },\n\n  setup (props, ctx) {\n    const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color'))\n    const { roundedClasses } = useRounded(props)\n    const { t } = useLocale()\n    const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'textColor'))\n    const { themeClasses } = useTheme()\n\n    const { locationStyles } = useLocation(props, true, side => {\n      const base = props.floating\n        ? (props.dot ? 2 : 4)\n        : (props.dot ? 8 : 12)\n\n      return base + (\n        ['top', 'bottom'].includes(side) ? +(props.offsetY ?? 0)\n        : ['left', 'right'].includes(side) ? +(props.offsetX ?? 0)\n        : 0\n      )\n    })\n\n    useRender(() => {\n      const value = Number(props.content)\n      const content = (!props.max || isNaN(value)) ? props.content\n        : value <= props.max ? value\n        : `${props.max}+`\n\n      const [badgeAttrs, attrs] = pick(ctx.attrs as Record<string, any>, [\n        'aria-atomic',\n        'aria-label',\n        'aria-live',\n        'role',\n        'title',\n      ])\n\n      return (\n        <props.tag\n          class={[\n            'v-badge',\n            {\n              'v-badge--bordered': props.bordered,\n              'v-badge--dot': props.dot,\n              'v-badge--floating': props.floating,\n              'v-badge--inline': props.inline,\n            },\n          ]}\n          { ...attrs }\n        >\n          <div class=\"v-badge__wrapper\">\n            { ctx.slots.default?.() }\n\n            <MaybeTransition transition={ props.transition }>\n              <span\n                v-show={ props.modelValue }\n                class={[\n                  'v-badge__badge',\n                  themeClasses.value,\n                  backgroundColorClasses.value,\n                  roundedClasses.value,\n                  textColorClasses.value,\n                ]}\n                style={[\n                  backgroundColorStyles.value,\n                  textColorStyles.value,\n                  props.inline ? {} : locationStyles.value,\n                ]}\n                aria-atomic=\"true\"\n                aria-label={ t(props.label, value) }\n                aria-live=\"polite\"\n                role=\"status\"\n                { ...badgeAttrs }\n              >\n                {\n                  props.dot ? undefined\n                  : ctx.slots.badge ? ctx.slots.badge?.()\n                  : props.icon ? <VIcon icon={ props.icon } />\n                  : content\n                }\n              </span>\n            </MaybeTransition>\n          </div>\n        </props.tag>\n      )\n    })\n\n    return {}\n  },\n})\n\nexport type VBadge = InstanceType<typeof VBadge>\n"],"mappings":"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"}