{"version":3,"file":"excited-ui.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":"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"}