All Projects → Qvant-lab → Qui

Qvant-lab / Qui

Licence: mit
A Vue.js design-system for Web.

Projects that are alternatives of or similar to Qui

elements
Lovingly crafted ui components based on web components. Works well with all Frameworks - including Angular, React and Vue.
Stars: ✭ 42 (-74.55%)
Mutual labels:  components, storybook, design-system
Componentdriven.org
Static site and content for Component Driven
Stars: ✭ 237 (+43.64%)
Mutual labels:  design-system, components, storybook
Vuedarkmode
👩‍🎨👨‍🎨 A minimalist dark design system for Vue.js. Based components designed for the insomniacs who enjoy dark interfaces as much as we do.
Stars: ✭ 1,034 (+526.67%)
Mutual labels:  design-system, components
Matchbox
🔥 A react UI component library
Stars: ✭ 58 (-64.85%)
Mutual labels:  design-system, storybook
Vitamin Web
Decathlon Design System libraries for web applications
Stars: ✭ 70 (-57.58%)
Mutual labels:  design-system, components
Design System
Priceline.com Design System
Stars: ✭ 604 (+266.06%)
Mutual labels:  design-system, components
Shards React
⚛️A beautiful and modern React design system.
Stars: ✭ 639 (+287.27%)
Mutual labels:  design-system, components
Ivory
A modern CSS framework for developing powerful web interfaces faster and easier.
Stars: ✭ 61 (-63.03%)
Mutual labels:  design-system, components
Story2sketch
Convert Storybook into Sketch symbols 💎
Stars: ✭ 391 (+136.97%)
Mutual labels:  components, storybook
Shine Design
为开发者、设计师和产品经理准备的 UI 设计语言
Stars: ✭ 157 (-4.85%)
Mutual labels:  design-system, components
Calcite Components
Web Components for the Calcite Design System. Built with Stencil JS. Currently in Beta!
Stars: ✭ 96 (-41.82%)
Mutual labels:  design-system, components
Leaf Ui
🍃 Leaf-UI: A react component library built using styled-components
Stars: ✭ 98 (-40.61%)
Mutual labels:  design-system, components
React Storybook Addon Chapters
📒 Showcase multiple React components within a story
Stars: ✭ 149 (-9.7%)
Mutual labels:  components, storybook
React95
🌈🕹 Refreshed Windows 95 style UI components for your React app
Stars: ✭ 4,877 (+2855.76%)
Mutual labels:  design-system, components
Clarity
Clarity is a scalable, accessible, customizable, open source design system built with web components. Works with any JavaScript framework, built for enterprises, and designed to be inclusive.
Stars: ✭ 6,398 (+3777.58%)
Mutual labels:  design-system, components
Cuke Ui
🥒 黄瓜ui:一个即插即用的React UI 库
Stars: ✭ 402 (+143.64%)
Mutual labels:  components, storybook
Stylable
Stylable - CSS for components
Stars: ✭ 1,109 (+572.12%)
Mutual labels:  design-system, components
Vue Cion Design System
CION - Design system boilerplate for Vue.js
Stars: ✭ 119 (-27.88%)
Mutual labels:  design-system, components
Uiengine
Workbench for UI-driven development
Stars: ✭ 349 (+111.52%)
Mutual labels:  design-system, components
Alva
Create living prototypes with code components.
Stars: ✭ 3,734 (+2163.03%)
Mutual labels:  design-system, components

storybook NPM version NPM downloadsDependency Status Dev Dependency Status

A Vue.js Neumorphism Design System for Web

Responsive, user-friendly and lightweight library helping us build great products for our customers. This library for Vue 2.x, Qui for Vue 3 in our roadmap

Storybook (live demo)

What is it?

  • 🔩 30+ Vue components
  • 📦 icons pack
  • 🏳️‍🌈 colors & grid
  • 🥷 neumorphism styles
  • 📚 storybook sandbox

Some examples below:

buttons inputs icons tables datepicker other

Install

npm install @qvant/qui -S
yarn add @qvant/qui

You can import Qui entirely, or just import what you need. Let's start with fully import.

Quick setup

In main.js:

import Vue from 'vue';
import Qui from '@qvant/qui';
import '@qvant/qui/dist/qui.css';

// Setup all components
Vue.use(Qui);
// that's it! All components will be imported with styles

in YourComponent.vue: (Example)

<template>
  <q-input v-model="value" />
</template>
<script>
export default {
  data() {
    return {
      value: ''
    };
  },
  mounted() {
    // the modals have shortcuts in your components:
    this.$notify({ ... }) // calls QNotification
    this.$message({ ... }) // calls QMessageBox
    this.$dialog({ ... }) // calls QDialog
  }
};
</script>

...or configure quick setup

In main.js:

import Vue from 'vue';
import Qui from '@qvant/qui';
import '@qvant/qui/dist/qui.css';

Vue.use(Qui, {
  localization: {
    locale: 'en', // Russian language by default, you can set `en` for English
    customI18nMessages: {
      // rewrite default texts, see the source: src/qComponents/constants/locales
      en: {
        QDatepicker: {
          placeholder: 'Pick your birthday!'
        }
      }
    },
    zIndexCounter: 3000, // zIndexCounter is being used by some components, (e.g QPopover, QSelect, QDialog ...etc), 2000 by default
    prefix: 'yo' // you can change component's prefix, e.g. must be used <yo-input /> instead of <q-input />
  }
});

in YourComponent.vue: (Example)

<template>
  <!-- placeholder is changed on 'Pick your birthday!' -->
  <yo-datepicker v-model="value" type="date" />
</template>
<script>
export default {
  data() {
    return {
      value: null
    };
  }
};
</script>

Now you have implemented Vue and Qui to your project, and it's time to write your code. Please refer to each component's Stories to learn how to use them.

Not quick setup

If you have a module bundler (e.g webpack), you can import components separately and take care about your bundle size

In main.js:

// import the main plugin from another place (it ensures Qui will be installed without any components, but instance will set required properties and directives)
import Qui from '@qvant/qui/src/onDemand';

// import the component you want
import QButton from '@qvant/qui/src/qComponents/QButton';
// ...or in async way
Vue.component('q-button', () =>
  import(/* webpackChunkName: "qui" */ '@qvant/qui/src/qComponents/QButton')
);

// init
Vue.use(Qui);
Vue.use(QButton);

In main.scss:

// need to set the path for files with statics
$--base-path: '[email protected]/qui/src';
// set main styles
@import '[email protected]/qui/src/main.scss';
// notice that you must use `fonts` and `icons` styles for some of components:
@import '[email protected]/qui/src/fonts/index.scss';
@import '[email protected]/qui/src/icons/index.scss';

import all styles:

@import '[email protected]/qui/src/components.scss';

...or components separately:

@import '[email protected]/qui/src/qComponents/QBreadcrumbs/src/q-breadcrumbs.scss';
@import '[email protected]/qui/src/qComponents/QButton/src/q-button.scss';
// ...etc

Optional

  • if you want use modals inside your components as property of 'this':
import { QMessageBox, QDialog, QNotification } from '@qvant/qui';
// or import separately
import QMessageBox from '@qvant/qui/src/qComponents/QMessageBox';
import QDialog from '@qvant/qui/src/qComponents/QDialog';
import QNotification from '@qvant/qui/src/qComponents/QNotification';

Vue.prototype.$message = QMessageBox;
Vue.prototype.$dialog = QDialog;
Vue.prototype.$notify = options =>
  QNotification({
    duration: 3000, // - ms
    ...options
  });
  • if you use VueI18n, you need to merge messages:
import VueI18n from 'vue-i18n';
import { en, ru } from '@qvant/qui/src/qComponents/constants/locales';

Vue.use(VueI18n);

const messages = {
  en: {
    message: {
      hello: 'hello world'
    },
    ...en
  },
  ru: {
    message: {
      hello: 'привет, мир'
    },
    ...ru
  }
};

const i18n = new VueI18n({
  locale: 'en',
  messages
});

new Vue({
  i18n
}).$mount('#your-app');

Supported languages

  • Russian ✅
  • English ✅
  • Also you can use any language by setting texts for components via 'customI18nMessages' property in the Qui instance. See the example above.

Browser Support

Modern browsers are recomended

  • safari: >11
  • chrome: >=61
  • firefox: >=58
  • opera: >=62
  • edge: >=16
  • yandex: >=18
  • ie: ? (we don't know :) and will not support it)

Development

Clone repository and run storybook

yarn storybook
npm run storybook

LICENSE

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].