{"version":3,"sources":["../../src/tag/Tag.styles.tsx","../../src/tag/variants/default.ts","../../src/tag/variants/filled.ts","../../src/tag/variants/outlined.ts","../../src/tag/variants/tinted.ts","../../src/tag/Tag.tsx"],"sourcesContent":["import { makeVariants } from '@spark-ui/internal-utils'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { filledVariants, outlinedVariants, tintedVariants } from './variants'\n\nexport const tagStyles = cva(\n  [\n    'box-border inline-flex items-center justify-center gap-sm whitespace-nowrap',\n    'text-caption font-bold',\n    'h-sz-20 px-md',\n    'rounded-full',\n  ],\n  {\n    variants: {\n      /**\n       * Main style of the tag.\n       * - `filled`: Tag will be plain.\n       * - `outlined`: Tag will have a surface background with an colored outline/text.\n       * - `tinted`: Tag will be filled but using a lighter color scheme.\n       */\n      design: makeVariants<'design', ['filled', 'outlined', 'tinted']>({\n        filled: [],\n        outlined: ['border-sm', 'border-current'],\n        tinted: [],\n      }),\n      /**\n       * Color scheme of the tag.\n       */\n      intent: makeVariants<\n        'intent',\n        [\n          'main',\n          'support',\n          'accent',\n          'basic',\n          'success',\n          'alert',\n          'info',\n          'neutral',\n          'danger',\n          'surface',\n        ]\n      >({\n        main: [],\n        support: [],\n        accent: [],\n        basic: [],\n        success: [],\n        alert: [],\n        danger: [],\n        info: [],\n        neutral: [],\n        surface: [],\n      }),\n    },\n    compoundVariants: [...filledVariants, ...outlinedVariants, ...tintedVariants],\n    defaultVariants: {\n      design: 'filled',\n      intent: 'basic',\n    },\n  }\n)\n\nexport type TagStylesProps = VariantProps<typeof tagStyles>\n","export const tw = <T>(a: T): T => a\n","import { tw } from './default'\n\nexport const filledVariants = [\n  {\n    intent: 'main',\n    design: 'filled',\n    class: tw(['bg-main', 'text-on-main']),\n  },\n  {\n    intent: 'support',\n    design: 'filled',\n    class: tw(['bg-support', 'text-on-support']),\n  },\n  {\n    intent: 'accent',\n    design: 'filled',\n    class: tw(['bg-accent', 'text-on-accent']),\n  },\n  {\n    intent: 'basic',\n    design: 'filled',\n    class: tw(['bg-basic', 'text-on-basic']),\n  },\n  {\n    intent: 'success',\n    design: 'filled',\n    class: tw(['bg-success', 'text-on-success']),\n  },\n  {\n    intent: 'alert',\n    design: 'filled',\n    class: tw(['bg-alert', 'text-on-alert']),\n  },\n  {\n    intent: 'danger',\n    design: 'filled',\n    class: tw(['bg-error', 'text-on-error']),\n  },\n  {\n    intent: 'info',\n    design: 'filled',\n    class: tw(['bg-info', 'text-on-info']),\n  },\n  {\n    intent: 'neutral',\n    design: 'filled',\n    class: tw(['bg-neutral', 'text-on-neutral']),\n  },\n  {\n    intent: 'surface',\n    design: 'filled',\n    class: tw(['bg-surface', 'text-on-surface']),\n  },\n] as const\n","import { tw } from './default'\n\nexport const outlinedVariants = [\n  {\n    intent: 'main',\n    design: 'outlined',\n    class: tw(['text-main']),\n  },\n  {\n    intent: 'support',\n    design: 'outlined',\n    class: tw(['text-support']),\n  },\n  {\n    intent: 'accent',\n    design: 'outlined',\n    class: tw(['text-accent']),\n  },\n  {\n    intent: 'basic',\n    design: 'outlined',\n    class: tw(['text-basic']),\n  },\n  {\n    intent: 'success',\n    design: 'outlined',\n    class: tw(['text-success']),\n  },\n  {\n    intent: 'alert',\n    design: 'outlined',\n    class: tw(['text-alert']),\n  },\n  {\n    intent: 'danger',\n    design: 'outlined',\n    class: tw(['text-error']),\n  },\n  {\n    intent: 'info',\n    design: 'outlined',\n    class: tw(['text-info']),\n  },\n  {\n    intent: 'neutral',\n    design: 'outlined',\n    class: tw(['text-neutral']),\n  },\n] as const\n","import { tw } from './default'\n\nexport const tintedVariants = [\n  {\n    intent: 'main',\n    design: 'tinted',\n    class: tw(['bg-main-container', 'text-on-main-container']),\n  },\n  {\n    intent: 'support',\n    design: 'tinted',\n    class: tw(['bg-support-container', 'text-on-support-container']),\n  },\n  {\n    intent: 'accent',\n    design: 'tinted',\n    class: tw(['bg-accent-container', 'text-on-accent-container']),\n  },\n  {\n    intent: 'basic',\n    design: 'tinted',\n    class: tw(['bg-basic-container', 'text-on-basic-container']),\n  },\n  {\n    intent: 'success',\n    design: 'tinted',\n    class: tw(['bg-success-container', 'text-on-success-container']),\n  },\n  {\n    intent: 'alert',\n    design: 'tinted',\n    class: tw(['bg-alert-container', 'text-on-alert-container']),\n  },\n  {\n    intent: 'danger',\n    design: 'tinted',\n    class: tw(['bg-error-container', 'text-on-error-container']),\n  },\n  {\n    intent: 'info',\n    design: 'tinted',\n    class: tw(['bg-info-container', 'text-on-info-container']),\n  },\n  {\n    intent: 'neutral',\n    design: 'tinted',\n    class: tw(['bg-neutral-container', 'text-on-neutral-container']),\n  },\n] as const\n","import { ButtonHTMLAttributes, type PropsWithChildren, Ref } from 'react'\n\nimport { Slot } from '../slot'\nimport { tagStyles, type TagStylesProps } from './Tag.styles'\n\ninterface BaseTagProps\n  extends PropsWithChildren<ButtonHTMLAttributes<HTMLSpanElement>>,\n    TagStylesProps {\n  /**\n   * Change the component to the HTML tag or custom component of the only child.\n   */\n  asChild?: boolean\n}\n\ninterface FilteredDesignIntent<\n  Design extends TagProps['design'],\n  K extends TagStylesProps['intent'] | never = never,\n> {\n  design?: Design\n  intent?: Exclude<TagStylesProps['intent'], K>\n  ref?: Ref<HTMLButtonElement>\n}\n\nexport type ValidTagDesignIntent =\n  | FilteredDesignIntent<'tinted', 'surface'>\n  | FilteredDesignIntent<'outlined', 'surface'>\n  | FilteredDesignIntent<'filled'>\n\nexport type TagProps = BaseTagProps & ValidTagDesignIntent\n\nexport const Tag = ({\n  design = 'filled',\n  intent = 'basic',\n  asChild,\n  className,\n  ref,\n  ...others\n}: TagProps) => {\n  const Component = asChild ? Slot : 'span'\n\n  return (\n    <Component\n      data-spark-component=\"tag\"\n      ref={ref}\n      className={tagStyles({\n        className,\n        design,\n        intent,\n      })}\n      {...others}\n    />\n  )\n}\n"],"mappings":"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","names":[]}