{"version":3,"file":"variant.mjs","names":["useColor","computed","unref","getCurrentInstanceName","propsFactory","allowedVariants","genOverlays","isClickable","name","_createVNode","_Fragment","makeVariantProps","color","String","variant","type","default","validator","v","includes","useVariant","props","arguments","length","undefined","variantClasses","colorClasses","colorStyles"],"sources":["../../src/composables/variant.tsx"],"sourcesContent":["// Composables\nimport { useColor } from '@/composables/color'\n\n// Utilities\nimport { computed, unref } from 'vue'\nimport { getCurrentInstanceName, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport const allowedVariants = [\n  'elevated',\n  'flat',\n  'tonal',\n  'outlined',\n  'text',\n  'plain',\n] as const\n\nexport type Variant = typeof allowedVariants[number]\n\nexport interface VariantProps {\n  color?: string\n  variant: Variant\n}\n\nexport function genOverlays (isClickable: boolean, name: string) {\n  return (\n    <>\n      { isClickable && <span key=\"overlay\" class={ `${name}__overlay` } /> }\n\n      <span key=\"underlay\" class={ `${name}__underlay` } />\n    </>\n  )\n}\n\nexport const makeVariantProps = propsFactory({\n  color: String,\n  variant: {\n    type: String as PropType<Variant>,\n    default: 'elevated',\n    validator: (v: any) => allowedVariants.includes(v),\n  },\n}, 'variant')\n\nexport function useVariant (\n  props: MaybeRef<VariantProps>,\n  name = getCurrentInstanceName(),\n) {\n  const variantClasses = computed(() => {\n    const { variant } = unref(props)\n    return `${name}--variant-${variant}`\n  })\n\n  const { colorClasses, colorStyles } = useColor(computed(() => {\n    const { variant, color } = unref(props)\n    return {\n      [['elevated', 'flat'].includes(variant) ? 'background' : 'text']: color,\n    }\n  }))\n\n  return { colorClasses, colorStyles, variantClasses }\n}\n"],"mappings":";AAAA;AAAA,SACSA,QAAQ,uBAEjB;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,sBAAsB,EAAEC,YAAY,6BAE7C;AAIA,OAAO,MAAMC,eAAe,GAAG,CAC7B,UAAU,EACV,MAAM,EACN,OAAO,EACP,UAAU,EACV,MAAM,EACN,OAAO,CACC;AASV,OAAO,SAASC,WAAWA,CAAEC,WAAoB,EAAEC,IAAY,EAAE;EAC/D,OAAAC,YAAA,CAAAC,SAAA,SAEMH,WAAW,IAAAE,YAAA;IAAA;IAAA,SAAgC,GAAGD,IAAI;EAAW,QAAK,EAAAC,YAAA;IAAA;IAAA,SAEvC,GAAGD,IAAI;EAAY;AAGtD;AAEA,OAAO,MAAMG,gBAAgB,GAAGP,YAAY,CAAC;EAC3CQ,KAAK,EAAEC,MAAM;EACbC,OAAO,EAAE;IACPC,IAAI,EAAEF,MAA2B;IACjCG,OAAO,EAAE,UAAU;IACnBC,SAAS,EAAGC,CAAM,IAAKb,eAAe,CAACc,QAAQ,CAACD,CAAC;EACnD;AACF,CAAC,EAAE,SAAS,CAAC;AAEb,OAAO,SAASE,UAAUA,CACxBC,KAA6B,EAE7B;EAAA,IADAb,IAAI,GAAAc,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGnB,sBAAsB,CAAC,CAAC;EAE/B,MAAMsB,cAAc,GAAGxB,QAAQ,CAAC,MAAM;IACpC,MAAM;MAAEa;IAAQ,CAAC,GAAGZ,KAAK,CAACmB,KAAK,CAAC;IAChC,OAAO,GAAGb,IAAI,aAAaM,OAAO,EAAE;EACtC,CAAC,CAAC;EAEF,MAAM;IAAEY,YAAY;IAAEC;EAAY,CAAC,GAAG3B,QAAQ,CAACC,QAAQ,CAAC,MAAM;IAC5D,MAAM;MAAEa,OAAO;MAAEF;IAAM,CAAC,GAAGV,KAAK,CAACmB,KAAK,CAAC;IACvC,OAAO;MACL,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAACF,QAAQ,CAACL,OAAO,CAAC,GAAG,YAAY,GAAG,MAAM,GAAGF;IACpE,CAAC;EACH,CAAC,CAAC,CAAC;EAEH,OAAO;IAAEc,YAAY;IAAEC,WAAW;IAAEF;EAAe,CAAC;AACtD","ignoreList":[]}