Blanc UI
Концепция
Vue модули
React модули
Концепция
Vue модули
React модули
  • Vue модули
    • Компоненты
      • Button
      • Checkbox
      • Dropdown
      • Icon
      • Input
      • Modal
      • Table
      • Toast
    • Плагины
      • view-layers

Концепции Vue модулей

Storybook текущего прогресса доступен по ссылке.

Установка компонентов

В пакете не содержится общего плагина глобальной регистрации всех компонентов, поскольку из коробки они не являются готовыми. Их можно использовать с базовыми стилями прямо на экранах интерфейса, но рекомендуется всё же на их основе сделать свои компоненты, в которых уже можно изолировать и установить свой CSS для каждого элемента.

Стандартные стили компонентов написаны на vanilla-extract. Все модули css.ts также экспортируемы, поэтому при его использовании в проекте вам доступен приём композиции для расширения базовых стилей.

import 'blanc-ui/vue/css'

Однако вы ничем не ограничены - можно применять CSS Modules, tailwind и вообще всё что захотите. Все свойства стилей и их вариантов - это обычные классы, то есть, строки.

Cоздание кнопки на базе Blanc UI c tailwindcss:

<script lang="ts" setup>
import { Button, Icon } from 'blanc-ui/vue'
import { type ButtonProps , type IconProps } from 'blanc-ui/vue/types'
const {
  size = 'medium',
  variant = 'primary',
  icon
} = defineProps<{
  icon?: IconProps['name']
  variant?: 'primary' | 'outlined'
} & Omit<ButtonProps, 'variant'>>()
const emit = defineEmits<{
  click: (e: MouseEvent) => void
}>()
</script>
<template>
  <Button
    :style="`inline-flex items-center`"
    :variants="{
      'primary': 'bg-blue-600 text-white hover:bg-blue-700',
      'outlined': 'border border-gray-300 text-gray-700 hover:border-gray-400 hover:text-gray-800',
      'small': 'py-1 px-2 text-sm',
      'medium': 'py-1.5 px-2.5',
      'large': 'py-2 px-3 text-lg'
    }"
    :size="size"
    :variant="variant"
    @click="(e) => $emit('click', e)"
  >
    <Icon v-if='icon' :name='icon' size='small' class='mr-2' />
    <slot />
  </Button>
</template>

Установка иконок

Чтобы в компонентах работал базовый набор иконок, нужно установить плагин их подгрузки.

import { IconifyPlugin } from 'blanc-ui/vue'
app.use(IconifyPlugin)

По умолчанию используется из cdn Remix SVG Sprite

Установка плагинов

Так же как и компоненты, плагины абстрактны и устанавливаются по отдельности. Они могут работать необязательно с компонентами Blanс UI. Вы можете с их помощью управлять любыми компонентами.

Пример установки

Для глобального провайда во всём проекте:

import { ViewLayersPlugin } from 'blanc-ui/vue'
...
Vue.use(ViewLayersPlugin)
...

Если вы хотите ограничить видимость плагина:

<script lang="ts" setup>
import { provide, getCurrentInstance } from 'vue'
import { EventBus, $eventBus, Notify, $notify } from 'blanc-ui/vue'
provide<EventBus>($eventBus, new EventBus())
provide<Notify>($notify, new Notify(getCurrentInstance()))
</script>
<template>
<div>
  ...
    <MyAwesomeComponent />
  ...
</div>
</template>
<script lang="ts" setup>
import { inject } from 'vue'
import { $eventBus, $notify } from 'blanc-ui/vue'
const eventBus = inject<EventBus>($eventBus)
const notify = inject<Notify>($notify)
</script>
Last Updated:
Contributors: Bejoy, Bejoy