Appearance
Getting started
HopeKit is a framework of UI components based on Vue3 and designed for Vite bundler.
NPM
You can install HopeKit through npm with the command:
bash
$ npm i @deeepvision/hope-component-kit --save
Use HopeKit base components
We use individual components installation. You can choose and install what you need:
/plugins/hope-component-kit.ts
ts
/* Hope Component Kit */
import { Plugin } from 'vue';
import {
  HcAvatar,
  HcIcon,
  HcButton,
  HcCheckbox,
  HcCheckboxGroup,
  HcIconButton,
  HcContenteditableInput,
  HcNumberInput,
  HcInput,
  HcSwitch,
  HcTextarea,
  HcSelect,
  HcImage,
  HcTooltip,
  HcTags,
  HcPagination,
  HcPopup,
  HcTabs,
  HcTiptap,
  HcTiptapView,
  HcLoader,
} from '@deeepvision/hope-component-kit';
export default {
  install(app) {
    app.component('HcIcon', HcIcon)
      .component('HcAvatar', HcAvatar)
      .component('HcCheckbox', HcCheckbox)
      .component('HcCheckboxGroup', HcCheckboxGroup)
      .component('HcButton', HcButton)
      .component('HcIconButton', HcIconButton)
      .component('HcContenteditableInput', HcContenteditableInput)
      .component('HcNumberInput', HcNumberInput)
      .component('HcInput', HcInput)
      .component('HcSwitch', HcSwitch)
      .component('HcTextarea', HcTextarea)
      .component('HcSelect', HcSelect)
      .component('HcImage', HcImage)
      .component('HcTooltip', HcTooltip)
      .component('HcTags', HcTags)
      .component('HcPagination', HcPagination)
      .component('HcPopup', HcPopup)
      .component('HcTabs', HcTabs)
      .component('HcTiptap', HcTiptap)
      .component('HcTiptapView', HcTiptapView)
      .component('HcLoader', HcLoader);
  },
} as Plugin;
Install Tailwind Theme
HopeKit uses Tailwind framework. You need to import default theme to tailwind.config.js:
js
const hopeKitTheme = require('@deeepvision/hope-component-kit/tailwind.theme.js');
module.exports = {
  darkMode: 'class',
  content: [
    './node_modules/@deeepvision/hope-component-kit/dist/hope-component-kit.es.js',
    './index.html',
    './src/**/*.vue',
  ],
  theme: {
    fontFamily: {
      ...hopeKitTheme.fontFamily,
    },
    extend: {
      colors: {
        ...hopeKitTheme.colors,
      },
      textColor: {
        ...hopeKitTheme.textColor,
      },
      fontSize: {
        ...hopeKitTheme.fontSize,
      },
      fontWeight: {
        ...hopeKitTheme.fontWeight,
      },
      borderRadius: {
        ...hopeKitTheme.borderRadius,
      },
    },
  },
};
Import HopeKit CSS
You need to import HopeKit CSS in your main.ts file:
css
/* /styles/main.pcss */
/* Element Plus */
@import 'element-plus/dist/index.css';
/* CropperJS */
@import 'cropperjs/dist/cropper.css';
/* HopeKit */
@import '@deeepvision/hope-component-kit/dist/style.css';
CSS theme variables
Add css variables to your main.css:
HEX Format Numbers Only
It is important that the colors are in HEX format and only the numerical value for example: rgb (17,78,246) is equivalent to 17,78,246
css
/* /styles/main.pcss */
/* Theme Vars */
:root {
  --color-primary: 17, 78, 246;
  --color-primary-dark: 6, 70, 165;
  --color-primary-light: 74, 156, 255;
  --color-accent: 255, 208, 54;
  --color-accent-dark:  255, 169, 40;
  --color-accent-light: 255, 229, 111;
  --color-accent2: 255, 92, 122;
  --color-accent2-dark: 217, 76, 99;
  --color-accent2-light: 255, 128, 149;
  --color-info: 6, 70, 165;
  --color-warning: 255, 208, 54;
  --color-danger: 255, 128, 149;
  --color-error: var(--color-danger);
  --color-success: 98, 217, 132;
  --color-success-dark: 8, 165, 52;
  --color-text-info: 255, 255, 255;
  --color-text-warning: 0, 0, 0;
  --color-text-danger: 255, 255, 255;
  --color-text-error: var(--color-text-danger);
  --color-overline: 127, 137, 172;
  --color-inactive: 167, 177, 204;
  --color-text-success: 255, 255, 255;
  --color-text-success-dark: 255, 255, 255;
  --color-gray: 193, 201, 222;
  --color-gray-light: 222, 226, 235;
  --color-gray-dark: 0, 19, 86;
  --color-text-default: 0, 19, 86;
  --color-link: 17, 78, 246;
}
Install i18n messages
HopeKit uses vue-i18n. You can import messages to your plugins/i18n.ts ant customize them when you need:
ts
// @/i18n/messages.ts
import { HopeComponentsI18nMessages } from '@deeepvision/hope-component-kit';
import { merge } from '@corex/deepmerge';
export default merge([HopeComponentsI18nMessages, {
  en: {
    ...
  }
}]);
ts
// @/plugins/i18n.ts
import { Plugin } from 'vue';
import i18nMessages from '@/i18n/messages';
import { createI18n } from 'vue-i18n';
export const i18nPlugin = {
  install(app) {
    const i18n = createI18n({
      locale: lang,
      legacy: false,
      allowComposition: true,
      fallbackLocale: 'en',
      messages: i18nMessages,
      globalInjection: true,
    });
    app.use(i18n);
  },
} as Plugin;