{"version":3,"file":"excited-ui.umd.cjs","sources":["../src/components/Button/tools.ts","../src/components/Button/Button.tsx","../src/presets/theme-default/index.ts","../src/componentResolver.ts","../src/index.ts"],"sourcesContent":["import { ExButton } from \"./index\";\n\nexport function getButtonClass(\n  props: InstanceType<typeof ExButton>[\"$props\"]\n): string | undefined {\n  const { color, type, outline, text } = props;\n  let className = \"\";\n  if (text) {\n    className += `text `;\n  }\n  if (color) {\n    className += `ex-button--colored `;\n  } else {\n    if (type) {\n      className += `ex-button--${type} `;\n    }\n  }\n\n  if (!outline) {\n    className += `border-none `;\n  } else {\n    className += `outline`;\n  }\n\n  return `${className} ${getButtonSize(props)}  ${getShadow(\n    props\n  )}${getButtonRound(props)} ${getDisabled(props)}`;\n}\n\nfunction getButtonSize(props: InstanceType<typeof ExButton>[\"$props\"]): string {\n  const { size } = props;\n  let className = \"\";\n  if (size) {\n    if (size === \"default\") {\n      className += \"text-base\";\n    }\n    if (size === \"small\") {\n      className += \"text-sm\";\n    }\n    if (size === \"medium\") {\n      className += \"text-xl\";\n    }\n    if (size === \"large\") {\n      className += \"text-2xl\";\n    }\n  }\n  return className;\n}\n\nfunction getButtonRound(\n  props: InstanceType<typeof ExButton>[\"$props\"]\n): string {\n  let className = \"\";\n  const { square } = props;\n  if (square) {\n    className += \"rounded-md\";\n  } else {\n    className += \"rounded-xl\";\n  }\n  return className;\n}\n\nfunction getDisabled(props: InstanceType<typeof ExButton>[\"$props\"]): string {\n  let className = \"\";\n  const { disabled } = props;\n  if (disabled) {\n    className += \" opacity-50 cursor-not-allowed \";\n  } else {\n    className += \" hover:opacity-80 focus:opacity-80 \";\n  }\n  return className;\n}\n\nfunction getShadow(props: InstanceType<typeof ExButton>[\"$props\"]): string {\n  let className = \"\";\n  const { text } = props;\n  if (!text) {\n    className += \" shadow-md  \";\n  }\n  return className;\n}\n","import { defineComponent } from \"vue\";\nimport { getButtonClass } from \"./tools\";\n\nexport const buttonTypes = [\n  \"default\",\n  \"primary\",\n  \"success\",\n  \"warning\",\n  \"info\",\n  \"danger\",\n] as const;\n\nexport const buttonSizes = [\"default\", \"mini\", \"medium\", \"large\"] as const;\n\nexport const props = {\n  color: {\n    type: String,\n  },\n  icon: {\n    type: String,\n    required: false,\n  },\n  type: {\n    type: String,\n    values: buttonTypes,\n    default: () => \"default\",\n  },\n  size: {\n    type: String,\n    values: buttonSizes,\n  },\n  square: {\n    type: Boolean,\n    default: false,\n  },\n  outline: {\n    type: Boolean,\n    default: false,\n  },\n  disabled: {\n    type: Boolean,\n    default: false,\n  },\n  text: {\n    type: Boolean,\n    default: false,\n  },\n};\n\nexport const ExButton = defineComponent({\n  name: \"ExButton\",\n  props,\n  setup(props, { slots }) {\n    return () => (\n      <button\n        class={`\n      ex-button\n      py-2\n      px-4\n      font-semibold \n      text-white \n      cursor-pointer \n      m-1\n      ${getButtonClass(props)}\n      `}\n        style={{ \"--ex-button-color\": props.color }}\n      >\n        {props.icon && !props.text && (\n          <i class={`i-ic-baseline-${String(props.icon)} p-3`}></i>\n        )}\n        {slots.default ? slots.default() : \"\"}\n      </button>\n    );\n  },\n});\n\nexport type ExButton = InstanceType<typeof ExButton>;\n","import type { Preset } from \"@unocss/core\";\n\nexport const eColors = [\"primary\", \"success\", \"info\", \"warning\", \"danger\"];\n\nexport function presetThemeDefault(): Preset {\n  return {\n    name: \"excited-ui/preset-theme-default\",\n    theme: {\n      colors: {\n        default: \"hsl(var(--ex-default))\",\n        primary: \"hsl(var(--ex-primary))\",\n        success: \"hsl(var(--ex-success))\",\n        info: \"hsl(var(--ex-info))\",\n        warning: \"hsl(var(--ex-warning))\",\n        danger: \"hsl(var(--ex-danger))\",\n        a: { border: \"hsla(var(--ex-base-color),var(--ex-border-opacity))\" },\n      },\n    },\n    safelist: [\n      ...eColors.map((c) => `bg-${c}`),\n      ...eColors.map((c) => `hover:bg-${c}`),\n\n      ...eColors.map((c) => `border-${c}`),\n      ...eColors.map((c) => `text-${c}`),\n      ...eColors.map((c) => `shadow-${c}`),\n      ...eColors.map((c) => `after:bg-${c}`),\n      ...eColors.map((c) => `next:checked:bg-${c}`),\n      ...eColors.map((c) => `next:checked:border-${c}`),\n    ],\n    rules: [\n      [\n        \"overlay\",\n        {\n          position: \"absolute\",\n          inset: 0,\n          content: \"''\",\n          background: \"currentColor\",\n          opacity: 0,\n        },\n      ],\n    ],\n  };\n}\n","import type { ComponentResolver } from \"unplugin-vue-components\";\n\nexport function ExComponentResolver(): ComponentResolver {\n  return {\n    type: \"component\",\n    resolve: (componentName: string) => {\n      if (componentName.match(/^Ex[A-Z]/))\n        return { name: componentName, from: \"excited-ui\" };\n    },\n  };\n}\n","import { App } from \"vue\";\nimport * as components from \"./components\";\nimport \"./presets/theme-default/scss/index.scss\";\n\nexport const ExcitedUI = {\n  install(app: App) {\n    for (const prop in components) {\n      // @ts-expect-error: I want to index import using string\n      const component = components[prop];\n      app.component(component.name, component);\n    }\n  },\n};\n\nexport {\n  eColors as defaultThemeColors,\n  presetThemeDefault,\n} from \"./presets/theme-default\";\n\nexport * from \"./components\";\nexport { ExComponentResolver } from \"./componentResolver\";\n"],"names":["props","buttonTypes","buttonSizes","color","type","String","icon","required","values","default","size","square","Boolean","outline","disabled","text","ExButton","defineComponent","name","setup","slots","_createVNode","getButtonClass"],"mappings":";;;;;AAEO,WAAS,eACdA,QACoB;AACpB,UAAM,EAAE,OAAO,MAAM,SAAS,SAASA;AACvC,QAAI,YAAY;AAChB,QAAI,MAAM;AACK,mBAAA;AAAA,IACf;AACA,QAAI,OAAO;AACI,mBAAA;AAAA,IAAA,OACR;AACL,UAAI,MAAM;AACR,qBAAa,cAAc;AAAA,MAC7B;AAAA,IACF;AAEA,QAAI,CAAC,SAAS;AACC,mBAAA;AAAA,IAAA,OACR;AACQ,mBAAA;AAAA,IACf;AAEA,WAAO,GAAG,aAAa,cAAcA,MAAK,MAAM;AAAA,MAC9CA;AAAA,IAAA,IACE,eAAeA,MAAK,KAAK,YAAYA,MAAK;AAAA,EAChD;AAEA,WAAS,cAAcA,QAAwD;AACvE,UAAA,EAAE,KAAS,IAAAA;AACjB,QAAI,YAAY;AAChB,QAAI,MAAM;AACR,UAAI,SAAS,WAAW;AACT,qBAAA;AAAA,MACf;AACA,UAAI,SAAS,SAAS;AACP,qBAAA;AAAA,MACf;AACA,UAAI,SAAS,UAAU;AACR,qBAAA;AAAA,MACf;AACA,UAAI,SAAS,SAAS;AACP,qBAAA;AAAA,MACf;AAAA,IACF;AACO,WAAA;AAAA,EACT;AAEA,WAAS,eACPA,QACQ;AACR,QAAI,YAAY;AACV,UAAA,EAAE,OAAW,IAAAA;AACnB,QAAI,QAAQ;AACG,mBAAA;AAAA,IAAA,OACR;AACQ,mBAAA;AAAA,IACf;AACO,WAAA;AAAA,EACT;AAEA,WAAS,YAAYA,QAAwD;AAC3E,QAAI,YAAY;AACV,UAAA,EAAE,SAAa,IAAAA;AACrB,QAAI,UAAU;AACC,mBAAA;AAAA,IAAA,OACR;AACQ,mBAAA;AAAA,IACf;AACO,WAAA;AAAA,EACT;AAEA,WAAS,UAAUA,QAAwD;AACzE,QAAI,YAAY;AACV,UAAA,EAAE,KAAS,IAAAA;AACjB,QAAI,CAAC,MAAM;AACI,mBAAA;AAAA,IACf;AACO,WAAA;AAAA,EACT;AC7EO,QAAMC,cAAc,CACzB,WACA,WACA,WACA,WACA,QACA,QANyB;AASpB,QAAMC,cAAc,CAAC,WAAW,QAAQ,UAAU,OAA9B;AAEpB,QAAMF,QAAQ;AAAA,IACnBG,OAAO;AAAA,MACLC,MAAMC;AAAAA,IAFW;AAAA,IAInBC,MAAM;AAAA,MACJF,MAAMC;AAAAA,MACNE,UAAU;AAAA,IANO;AAAA,IAQnBH,MAAM;AAAA,MACJA,MAAMC;AAAAA,MACNG,QAAQP;AAAAA,MACRQ,SAAS,MAAM;AAAA,IAXE;AAAA,IAanBC,MAAM;AAAA,MACJN,MAAMC;AAAAA,MACNG,QAAQN;AAAAA,IAfS;AAAA,IAiBnBS,QAAQ;AAAA,MACNP,MAAMQ;AAAAA,MACNH,SAAS;AAAA,IAnBQ;AAAA,IAqBnBI,SAAS;AAAA,MACPT,MAAMQ;AAAAA,MACNH,SAAS;AAAA,IAvBQ;AAAA,IAyBnBK,UAAU;AAAA,MACRV,MAAMQ;AAAAA,MACNH,SAAS;AAAA,IA3BQ;AAAA,IA6BnBM,MAAM;AAAA,MACJX,MAAMQ;AAAAA,MACNH,SAAS;AAAA,IAFL;AAAA,EA7Ba;AAmCRO,QAAAA,WAAWC,IAAAA,gBAAgB;AAAA,IACtCC,MAAM;AAAA,IACNlB;AAAAA,IACAmB,MAAMnB,QAAO;AAAA,MAAEoB;AAAAA,IAAF,GAAW;AACtB,aAAO,MAAAC,IAAA,YAAA,UAAA;AAAA,QAAA,SAEK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAQRC,eAAetB,MAAD;AAAA;AAAA,QAVX,SAYI;AAAA,UAAE,qBAAqBA,OAAMG;AAAAA,QAA7B;AAAA,MAZJ,GAAA,CAcFH,OAAMM,QAAQ,CAACN,OAAMe,QAArBM,IAAA,YAAA,KAAA;AAAA,QAAA,SACY,iBAAgBhB,OAAOL,OAAMM,IAAP;AAAA,SAfhC,IAAA,GAiBFc,MAAMX,UAAUW,MAAMX,QAAtB,IAAkC,EAjBhC,CAAP;AAAA,IAoBD;AAAA,EAxBqC,CAAD;;;;;;AC/ChC,QAAM,UAAU,CAAC,WAAW,WAAW,QAAQ,WAAW,QAAQ;AAElE,WAAS,qBAA6B;AACpC,WAAA;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,QACL,QAAQ;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,UACT,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,GAAG,EAAE,QAAQ,sDAAsD;AAAA,QACrE;AAAA,MACF;AAAA,MACA,UAAU;AAAA,QACR,GAAG,QAAQ,IAAI,CAAC,MAAM,MAAM,GAAG;AAAA,QAC/B,GAAG,QAAQ,IAAI,CAAC,MAAM,YAAY,GAAG;AAAA,QAErC,GAAG,QAAQ,IAAI,CAAC,MAAM,UAAU,GAAG;AAAA,QACnC,GAAG,QAAQ,IAAI,CAAC,MAAM,QAAQ,GAAG;AAAA,QACjC,GAAG,QAAQ,IAAI,CAAC,MAAM,UAAU,GAAG;AAAA,QACnC,GAAG,QAAQ,IAAI,CAAC,MAAM,YAAY,GAAG;AAAA,QACrC,GAAG,QAAQ,IAAI,CAAC,MAAM,mBAAmB,GAAG;AAAA,QAC5C,GAAG,QAAQ,IAAI,CAAC,MAAM,uBAAuB,GAAG;AAAA,MAClD;AAAA,MACA,OAAO;AAAA,QACL;AAAA,UACE;AAAA,UACA;AAAA,YACE,UAAU;AAAA,YACV,OAAO;AAAA,YACP,SAAS;AAAA,YACT,YAAY;AAAA,YACZ,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,IAAA;AAAA,EAEJ;ACxCO,WAAS,sBAAyC;AAChD,WAAA;AAAA,MACL,MAAM;AAAA,MACN,SAAS,CAAC,kBAA0B;AAC9B,YAAA,cAAc,MAAM,UAAU;AAChC,iBAAO,EAAE,MAAM,eAAe,MAAM,aAAa;AAAA,MACrD;AAAA,IAAA;AAAA,EAEJ;ACNO,QAAM,YAAY;AAAA,IACvB,QAAQ,KAAU;AAChB,iBAAW,QAAQ,YAAY;AAE7B,cAAM,YAAY,WAAW;AACzB,YAAA,UAAU,UAAU,MAAM,SAAS;AAAA,MACzC;AAAA,IACF;AAAA,EACF;;;;;;;;"}