npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

itpc-ui-kit

v3.3.2

Published

## [Демонстрация storybook](https://tric-itpc.github.io/itpc-ui-kit)

Downloads

116

Readme

ITPC UI Kit

Демонстрация storybook

Установка

// with npm
npm install itpc-ui-kit

// with yarn
yarn add itpc-ui-kit

Запуск в режиме разработки

// with npm
npm i
npm run storybook

// with yarn
yarn
yarn storybook

Использование

import React, { useState } from "react"
import { Button } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  const [isOpen, setIsOpen] = useState<boolean>(false)

  return <Button onPress={() => setIsOpen(!isOpen)}>Click!</Button>
}

Описание компонентов

Accordion

Accordion состоит из нескольких элементов

1. Accordion - компонент-обертка, необходимая для рендера списка аккордионов 2. AccordionItem - элемент списка 3. AccordionHeader - заголовок 4. AccordionBody - тело аккордиона (выпадающая часть) 5. AccordionArrow - стилизованная стрелка

Props

<Accordion> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------- | ----------------------------- | --------- | --------------------- | ------------------ | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | children | | |

<AccordionItem> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | -------- | ----------------------------- | -------- | --------------------- | ------------------ | | children | React.ReactNode undefined | children | | |

<AccordionHeader> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | -------- | ------------------------------------------------------------------------ | --------------------------------- | -------------------------- | ------------------ | | id | string undefined | - | 'itpc-accordion-header' | Любая строка | | isOpened | boolean | Флаг открытия | - | true false | | isActive | boolean undefined | Флаг выбора (активный/неактивный) | false | true false | | onPress | (e?: React.MouseEvent<HTMLDivElement, MouseEvent>) => void undefined | Обработчик клика | - | Любая функция | | children | React.ReactNode undefined | children | | |

<AccordionBody> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | -------- | ----------------------------- | ------------- | --------------------- | ------------------ | | isOpened | boolean | Флаг открытия | - | true false | | children | React.ReactNode undefined | children | | |

<AccordionArrow> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | -------- | --------- | ------------- | --------------------- | ------------------ | | isOpened | boolean | Флаг открытия | - | true false |

Пример

import React, { useState } from "react"
import {
  Accordion,
  AccordionBody,
  AccordionHeader,
  AccordionItem,
  AccordionArrow,
} from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  const [opened, setOpened] = useState<boolean>(false)

  const handleOpened = (): void => {
    setOpened(!opened)
  }

  return (
    <Accordion>
      <AccordionItem>
        <AccordionHeader id={"1"} isOpened={opened} onPress={handleOpened}>
          Header
          <AccordionArrow isOpened={opened} />
        </AccordionHeader>
        <AccordionBody isOpened={opened}>Body</AccordionBody>
      </AccordionItem>
    </Accordion>
  )
}

Button

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------- | :-------------------------------------------------- | ---------------- | --------------------- | ------------------------------ | | type | string undefined | Тип | 'button' | 'button', 'submit', 'reset' | | variant | string undefined | Цвет | '' | 'white', 'red' | | disabled | boolean``undefined | Блокировка | false | 'true', 'false' | | onPress | (e?: React.MouseEvent<HTMLButtonElement>) => void | Обработчик клика | - | | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | | - | |

Пример

import React, { useState } from "react"
import { Button } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  const [isOpen, setIsOpen] = useState<boolean>(false)

  const onHandleIsOpen = (): void => {
    setIsOpen(!isOpen)
  }

  return (
    <Button onPress={onHandleIsOpen} variant={isOpen ? "purple" : "red"}>
      {isOpen ? "Purple" : "Red"} button
    </Button>
  )
}

ButtonRound

ButtonRound - это круглая кнопка. Она не предназначена для вставки в нее текста. Для корректной работы, в качестве children лучше использовать иконку

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------- | --------------------------------------------------------------- | --------------------- | --------------------- | ------------------------------ | | type | string undefined | Тип | 'button' | 'button', 'submit', 'reset' | | disabled | boolean undefined | Блокировка | false | 'true', 'false' | | tooltip | string undefined | Подпись при наведении | - | 'true', 'false' | | onPress | (e?: React.MouseEvent<HTMLButtonElement>) => void undefined | Обработчик клика | - | | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | | - | |

Пример

import React from "react"
import { ButtonRound } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  return (
    <ButtonRound disabled={disabled}>
      <i />
    </ButtonRound>
  )
}

Card

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | ---------- | ----------------------------- | --------------------------------------------- | --------------------- | ------------------ | | title | string undefined | Заголовок карточки | - | Любая строка | | isBordered | boolean undefined | Флаг выделения карточки. Поменяет цвет border | false | 'true', 'false' | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | | - | |

Пример

import React from "react"
import { Card } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  return (
    <Card isBordered title="My card">
      <form>
        <p>My form</p>
        <button>Test</button>
      </form>
    </Card>
  )
}

Checkbox

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | |------------------|----------------------------------------------------------------|-------------------------------------------------------------------|-----------------------|------------------------------------------| | id | string | - | - | Любая строка | | name | string | - | - | Любая строка | | type | string undefined | Тип кнопки | 'checkbox' | 'checkbox', 'radio' | | variant | InputCheckboxVariant | Вариант стилизации | 'android' | 'android' 'ios' 'round' 'square' | | labelPosition | InputCheckboxLabelPosition | Позиция подписи чекбокса | 'right' | 'left' 'right' 'all' | | disabled | boolean undefined | Блокировка чекбокса | false | true false | | labelLeft | string undefined | Значение левой подписи (если нет, то по дефолту возьмет из label) | undefined | Любая строка | | label | string undefined | Значение подписи | undefined | Любая строка | | isBlurLabelLeft | boolean undefined | Блюр левой подписи | false | true false | | isBlurLabelRight | boolean undefined | Блюр правой подписи | false | true false | | isBlurCheckbox | boolean undefined | Блюр всего чекбокса | false | true false | | isChecked | boolean undefined | Выбран ли чекбокс | false | true false | | onClick | (e: React.ChangeEvent<HTMLInputElement>) => void undefined | Обработчик клика | undefined | | | inputAttr | HTMLAttributes<HTMLInputElement> | Атрибуты input | undefined | | | labelAttr | HTMLAttributes<HTMLSpanElement> | Атрибуты label | undefined | | | className | string undefined | CSS класс | '' | Любая строка |

Пример

import React, { useState } from "react"
import { Checkbox } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  const [checkedFirst, setCheckedFirst] = useState<boolean>(false)
  const [checkedSecond, setCheckedSecond] = useState<boolean>(false)

  const handleCheckedFirst = (): void => {
    setCheckedFirst(!checkedFirst)
  }

  const handleCheckedSecond = (): void => {
    setCheckedSecond(!checkedSecond)
  }

  return (
    <>
      <Checkbox
        {...args}
        name="1"
        isChecked={checkedFirst}
        onClick={handleCheckedFirst}
      />
      <Checkbox
        {...args}
        name="1"
        isChecked={checkedSecond}
        onClick={handleCheckedSecond}
      />
    </>
  )
}

DatePicker

Компонент для ввода даты и времени. В качестве value необходимо передавать строку, состоящую только из чисел

Календарь основан на работе библиотеки react-number-format v.4.9.1

Например, если дата соответствует значению - 01.01.2000, то в качестве value необходимо передать 01012000.

Пример возвращаемого значения:

{
  value: '01012000',
  formattedValues: '01.01.2000'
}

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | |---------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------|---------------------------------------------| | id | string | - | - | Любая строка | | name | string | - | - | Любая строка | | value | string undefined | Значение инпута | '' | Строки, содержащие только числа: 10102010 | | activeDates | string[] undefined | Список дат, которые должны быть доступны. Остальные даты будут заблокированы для выбора | undefined | ["2000-01-01"] | | disabledDates | string[] undefined | Список дат, которые должны быть заблокированы. Остальные даты будут доступны для выбора | undefined | ["2000-01-01"] | | disabledAfterDate | string undefined | Дата, после которой необходимо заблокировать выбор дат (не включительно) | undefined | "2000-01-01" | | disabledBeforeDate | string undefined | Дата, перед которой необходимо заблокировать выбор дат (не включительно) | undefined | "2000-01-01" | | disabledDaysOfWeek | number[] undefined | Дни недели, которые необходимо заблокировать. Понедельник - 1, воскресенье - 7 | undefined | [6,7] | | disabled | boolean undefined | Флаг блокировки ввода | false | 'true', 'false' | | disabledSelectMonth | boolean undefined | Флаг блокировки выбора месяца | false | 'true', 'false' | | disabledSelectYear | boolean undefined | Флаг блокировки выбора года | false | 'true', 'false' | | placeholder | string undefined | Подпись инпута | '' | Любая строка | | validationState | ValidationState undefined | Значение, определяющее валидность значения инпута | 'valid' | 'valid' 'invalid' | | errorMessage | string undefined | Текст ошибки при не валидности значения инпута | '' | Любая строка | | className | string undefined | CSS класс | '' | Любая строка | | isIconClickable | boolean undefined | Флаг, определяющий возможность открытия календаря по клику на иконку | false | 'true', 'false' | | offsetYear | number undefined | Число, определяющее какое количество лет от текущего года показывать в календаре | 10 | Любое число | | withTime | boolean undefined | Флаг, определяющий будет ли значение в инпуте включать время | false | 'true', 'false' | | isShowIcon | boolean undefined | Флаг, определяющий будет показываться иконка календаря в инпуте | true | 'true', 'false' | | scrollToYear | number | Значение года, определяющее до какого года необходимо проскроллить список годов. По дефолту будет скроллить на текущее значение года и даты (value) | undefined | 2000 | | yearsFromTo | [number, number] | Список из двух годов. По нему определяется промежуток годов для выбора. "from" должно быть меньше или равно "to" | undefined | [2000, 2001], [2000, 2040] | | onBlur | () => void undefined | Событие onBlur, передаваемое инпуту | - | | | onFocus | () => void undefined | Событие onFocus, передаваемое инпуту | - | | | onChange | (values: FormattedValues, event: React.SyntheticEvent<HTMLInputElement> or React.SyntheticEvent<HTMLButtonElement> or React.SyntheticEvent<HTMLTableDataCellElement>, info: IInfo) => void undefined | Событие onChange, передаваемое инпуту | - | |

Пример

import React, { useState } from "react"
import { DatePicker } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  const [date, setDate] = useState<FormattedValues>({
    value: "",
    formattedValue: "",
  })

  const onChange = (inputValue: FormattedValues): void => {
    setDate(inputValue)
  }

  return <DatePicker value={date.value} onChange={onChange} offsetYear={100} />
}

ErrorMessage

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------- | ----------------------------- | --------- | --------------------- | ------------------ | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | | - | |

Пример

import React from "react"
import { ErrorMessage } from 'itpc-ui-kit'

const MyComponent: React.FC = () => <ErrorMessage>My error text<ErrorMessage/>

Modal

Modal состоит из нескольких элементов

1. Modal - модальное окно с заголовком 2. ModalContent - тело модального окна 3. ModalFooter - подвал модального окна

Props

<Modal> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | ------------------ | ----------------------------- | ------------------------------------------------------------------------- | --------------------- | ------------------ | | title | string | Заголовок модального окна | - | Любая строка | | isOpen | boolean | Флаг открытия модального окна | - | 'true', 'false' | | isOverlayClickable | boolean | Флаг, определяющий возможность закрыть модальное окно по клику на оверлей | '' | Любая строка | | onClose | () => void | Метод закрытия модального окна | '' | Любая строка | | iconClose | React.ReactNode undefined | Иконка крестика модального окна | '' | Любая строка | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | children | | |

<ModalContent> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------- | ----------------------------- | --------- | --------------------- | ------------------ | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | children | | |

<ModalFooter> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------- | ----------------------------- | --------- | --------------------- | ------------------ | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | children | | |

Пример

import React, { useState } from "react"
import { Button, Modal, ModalContent, ModalFooter } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  const [isOpenModal, setIsOpenModal] = useState<boolean>(false)

  const close = (): void => {
    setIsOpenModal(false)
  }

  return (
    <Modal isOpen={isOpenModal} onClose={close}>
      <ModalContent>
        Lorem ipsum dolor sit amet, consectetur adipiscing elit.
      </ModalContent>
      <ModalFooter>
        <Button variant="white" onPress={close}>
          Cancel
        </Button>
        <Button onPress={close}>Ok</Button>
      </ModalFooter>
    </Modal>
  )
}

MultiSelectField

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | ------------- | ---------------------------- | --------------------------- | --------------------- | ------------------ | | items | Item[] | Список элементов для выбора | - | Item[] | | selectedItems | string undefined | Список выбранных элементов | '' | Любая строка | | placeholder | string undefined | Подпись | '' | Любая строка | | disabled | boolean undefined | Флаг блокировки выбора | false | 'true', 'false' | | className | string undefined | CSS класс | '' | Любая строка | | onChange | (values: string[]) => void | Метод выбора элементов | - | |

Пример

import React, { useState } from "react"
import { MultiSelectField, Item } from "itpc-ui-kit"

const mockItems: Item[] = [
  {
    id: "1",
    value: "Cat",
  },
  {
    id: "2",
    value: "Dog",
  },
  {
    id: "3",
    value: "Duck",
  },
  {
    id: "4",
    value: "Bear",
  },
  {
    id: "5",
    value: "Mouse",
  },
  {
    id: "6",
    value: "Tiger",
  },
  {
    id: "7",
    value: "Lion",
  },
]

const MyComponent: React.FC = () => {
  const [selectedItems, setSelectedItems] = useState<Item[] | []>([
    {
      id: "1",
      value: "Cat",
    },
  ])

  const onChange = (values: string[]): void => {
    setSelectedItems(mockItems.filter((item) => values.includes(item.id)))
  }

  return (
    <MultiSelectField
      {...args}
      items={mockItems}
      selectedItems={selectedItems.map((item) => item.id)}
      onChange={onChange}
    />
  )
}

NumberField

Компонент для ввода числовых значений. В качестве value необходимо передавать строку, состоящую только из чисел

NumberField основан на работе библиотеки react-number-format v.4.9.1

Например, если значение соответствует - 01.01.2000, то в качестве value необходимо передать 01012000.

Пример возвращаемого значения:

{
  value: '01012000',
  formattedValues: '01.01.2000'
}

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | -------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ------------------------------------------- | | id | string | - | - | Любая строка | | name | string | - | - | Любая строка | | value | string undefined | Значение инпута | '' | Строки, содержащие только числа: 10102010 | | disabled | boolean undefined | Флаг блокировки ввода | false | 'true', 'false' | | placeholder | string undefined | Подпись инпута | '' | Любая строка | | validationState | ValidationState undefined | Значение, определяющее валидность значения инпута | 'valid' | 'valid' 'invalid' | | errorMessage | string undefined | Текст ошибки при не валидности значения инпута | '' | Любая строка | | className | string undefined | CSS класс | '' | Любая строка | | format | string undefined 1 | Формат ввода. Определяет вид вводимого значения | '' | Любая строка (Например: '####-####-##') | | mask | string undefined | Маска ввода. Пустые значения заменит этой маской | '_' | Любая строка | | prefix | string undefined | Маска перед значением инпута. | '' | Любая строка | | suffix | string undefined | Маска после значением инпута. | '' | Любая строка | | allowEmptyFormatting | boolean undefined | Флаг, определяющий, показывать ли маску ввода при пустом значении | 'true' | 'true', 'false' | | allowNegative | boolean undefined | Флаг, определяющий, можно ли вводить отрицательные величины | 'false' | 'true', 'false' | | onBlur | () => void undefined | Событие onBlur, передаваемое инпуту | - | | | onFocus | () => void undefined | Событие onFocus, передаваемое инпуту | - | | | onChange | (values: FormattedValues, event?: React.SyntheticEvent<HTMLInputElement>) => void undefined | Событие onChange, передаваемое инпуту | - | | | getInputRef | ((el: HTMLInputElement) => void) React.Ref<any> undefined | Метод, возвращающий ref инпута | - | | | replaceValue | (value: string) => string undefined | Функция для замены значения, игнорируя маску. Например при вводе значения в инпут мы хотим удалять определенные символы. Тогда реализация будет такой (value: string) => value.replace(regexp, replacedValue) | (value: string) => value | |

Пример

import React, { useState } from "react"
import { FormattedValues, NumberField } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  const [date, setDate] = useState<FormattedValues>({
    value: "",
    formattedValue: "",
  })

  const onChange = (inputValue: FormattedValues): void => {
    setDate(inputValue)
  }

  return (
    <NumberField
      id="itpc-number-field-id"
      name="itpc-number-field-name"
      value={date.value}
      onChange={onChange}
    />
  )
}

Pagination

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | ---------- | ---------------------------------------- | ---------------------------------------------------------------------------------- | --------------------- | ------------------ | | step | number undefined | Шаг пагинации | 10 | Любое число | | dataLength | number | Длина массива, данные которого необходимо разделить | - | Любое число | | className | string undefined | CSS класс | '' | Любая строка | | callback | (pagination: PaginationResult) => void | Результат пагинации. Возвращает значения, на основании которого разделяется массив | - | |

Пример

import React, { useState } from "react"
import { Pagination, PaginationResult } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  const [start, setStart] = useState<number>(0)
  const [end, setEnd] = useState<number>(0)

  const paginationResult = (pagination: PaginationResult): void => {
    setStart(pagination.start)
    setEnd(pagination.end)
  }

  return (
    <Pagination
      step={10}
      dataLength={mockItems.length}
      callback={paginationResult}
    />
  )
}

Popup

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | title | string | Заголовок поп-апа | - | Любая строка | | isOpen | boolean | Флаг открытия поп-апа | - | 'true', 'false' | | size | PopupSize | Определяет размер поп-апа. С телом или без. | 'normal' | 'small' 'normal' | | variant | PopupVariant | Определяет тип поп-апа. По-умолчанию, ошибка, предупреждение или успех. В зависимости от типа, будет соответствующий цвет поп-апа. | 'default' | 'default' 'error' 'warning' 'success' | | position | PopupPosition | Определяет позицию поп-апа | 'center-center' | 'top-left' 'top-center' 'top-right' 'center-left' 'center-center' 'center-right' 'bottom-left' 'bottom-center' 'bottom-right' | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | children | | | | onClose | () => void | Метод закрытия поп-апа | | |

Пример

import React, { useState } from "react"
import { Popup } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  const [isOpen, setIsOpen] = useState<boolean>(false)

  const close = (): void => {
    setIsOpen(false)
  }

  return (
    <Popup title="My popup" isOpen={isOpen} onClose={close}>
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ipsum est
      sagittis, odio tincidunt ipsum, lorem cras mollis.
    </Popup>
  )
}

Preloader

Индикация загрузки в виде круга

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------- | -------------------- | --------- | --------------------- | ------------------ | | className | string undefined | CSS класс | '' | Любая строка |

Пример

import React, { useState } from "react"
import { Preloader } from "itpc-ui-kit"

const MyComponent: React.FC = () => <Preloader />

SearchField

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | ----------- | ---------------------------------------------- | ---------------------------------------------------- | --------------------- | --------------------- | | defaultItem | string undefined | Id выбранного элемента по умолчанию | - | Id элемента из списка | | items | Item[] | Список элементов для выбора | - | Item[] | | placeholder | string undefined | Подпись | '' | Любая строка | | isLoading | boolean | Флаг статуса загрузки | - | 'true', 'false' | | isClear | boolean undefined | Флаг принудительного очищения | false | 'true', 'false' | | className | string undefined | CSS класс | '' | Любая строка | | handleClear | () => void undefined | Метод очищения элементов | - | | | fetchData | (value: string) => Promise<void> undefined | Метод отправки запроса на получение списка элементов | - | | | onChange | (id: string) => void | Метод выбора элемента | - | |

Пример

import React, { useState } from "react"
import { SearchField, Item } from "itpc-ui-kit"

const mockItems: Item[] = [
  {
    id: "1",
    value: "Cat",
  },
  {
    id: "2",
    value: "Dog",
  },
  {
    id: "3",
    value: "Duck",
  },
  {
    id: "4",
    value: "Bear",
  },
  {
    id: "5",
    value: "Mouse",
  },
  {
    id: "6",
    value: "Tiger",
  },
  {
    id: "7",
    value: "Lion",
  },
]

const MyComponent: React.FC = () => {
  const [items, setItems] = useState<Item[]>([])
  const [isLoading, setIsLoading] = useState<boolean>(false)
  const [selectedItem, setSelectedItem] = useState<Item | null>(null)

  const onChange = (id: string): void => {
    setSelectedItem(items.find((item) => item.id === id) ?? null)
  }

  const fetchData = async (value: string) => {
    setIsLoading(true)
    await setTimeout(() => {
      setItems(mockItems)
      setIsLoading(false)
    }, 2000)
  }

  const clear = (): void => {
    setSelectedItem(null)
    setItems([])
  }

  return (
    <SearchField
      items={items}
      isLoading={isLoading}
      onChange={onChange}
      fetchData={fetchData}
      handleClear={clear}
    />
  )
}

SelectField

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | ------------- | ------------------------- | ----------------------------------- | --------------------- | --------------------- | | defaultItemId | string undefined | Id выбранного элемента по умолчанию | - | Id элемента из списка | | items | Item[] | Список элементов для выбора | - | Item[] | | placeholder | string undefined | Подпись | '' | Любая строка | | disabled | boolean undefined | Флаг блокировки выбора | false | 'true', 'false' | | className | string undefined | CSS класс | '' | Любая строка | | onChange | (value: string) => void | Метод выбора элемента | - | |

Пример

import React, { useState } from "react"
import { SearchField, Item } from "itpc-ui-kit"

const mockItems: Item[] = [
  {
    id: "1",
    value: "Cat",
  },
  {
    id: "2",
    value: "Dog",
  },
  {
    id: "3",
    value: "Duck",
  },
  {
    id: "4",
    value: "Bear",
  },
  {
    id: "5",
    value: "Mouse",
  },
  {
    id: "6",
    value: "Tiger",
  },
  {
    id: "7",
    value: "Lion",
  },
]

const MyComponent: React.FC = () => {
  const [selectedItem, setSelectedItem] = useState<Item | null>(null)

  const onChange = (id: string): void => {
    setSelectedItem(mockItems.find((item) => item.id === id) ?? null)
  }

  return (
    <SelectField
      items={mockItems}
      defaultItemId={selectedItem?.id}
      onChange={onChange}
    />
  )
}

Table

Table состоит из нескольких элементов

1. Table - таблица 2. TableHeader - заголовок таблицы 3. TableBody - тело таблицы 4. TableFooter - подвал таблицы 5. Row - строка таблицы 6. Column - ячейка заголовка таблицы 7. Cell - ячейка тела таблицы

Props

<Table> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------- | ----------------------------- | --------------- | --------------------- | ------------------ | | id | string undefined | - | '' | Любая строка | | title | string undefined | Подпись таблицы | - | Любая строка | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | children | | |

<TableHeader> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | -------- | ----------------------------- | -------- | --------------------- | ------------------ | | id | string undefined | - | '' | Любая строка | | children | React.ReactNode undefined | children | | |

<TableBody> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | -------- | ----------------------------- | -------- | --------------------- | ------------------ | | children | React.ReactNode undefined | children | | |

<TableFooter> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | -------- | ----------------------------- | -------- | --------------------- | ------------------ | | children | React.ReactNode undefined | children | | |

<Row> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | ---------- | --------------------------------------------------------------------- | -------------------------- | --------------------- | ------------------ | | id | string undefined | - | '' | Любая строка | | children | React.ReactNode undefined | children | | | | onPressRow | (event?: React.MouseEvent<HTMLTableRowElement>) => void undefined | Обработчик клика по строке | | |

<Column> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | ------------- | ---------------------------------------------------------------------- | -------------------------------------------- | --------------------- | ------------------ | | id | string undefined | - | '' | Любая строка | | children | React.ReactNode undefined | children | | | | onPressColumn | (event?: React.MouseEvent<HTMLTableCellElement>) => void undefined | Обработчик клика по ячейке заголовка таблицы | | |

<Cell> Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | ----------- | ---------------------------------------------------------------------- | --------------------------------------- | --------------------- | ------------------ | | id | string undefined | - | '' | Любая строка | | children | React.ReactNode undefined | children | | | | onPressCell | (event?: React.MouseEvent<HTMLTableCellElement>) => void undefined | Обработчик клика по ячейке тела таблицы | | |

Пример

import React from "react"
import {
  Cell,
  Column,
  Row,
  Table,
  TableBody,
  TableHeader,
  TableProps,
} from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  return (
    <Table>
      <TableHeader>
        <Row>
          <Column>#</Column>
          <Column>Head 2</Column>
          <Column>Head 3</Column>
        </Row>
      </TableHeader>
      <TableBody>
        <Row>
          <Cell>1</Cell>
          <Cell>Column 2</Cell>
          <Cell>Column 3</Cell>
        </Row>
        <Row>
          <Cell>2</Cell>
          <Cell>Column 2</Cell>
          <Cell>Column 3</Cell>
        </Row>
        <Row>
          <Cell>3</Cell>
          <Cell>Column 2</Cell>
          <Cell>Column 3</Cell>
        </Row>
      </TableBody>
    </Table>
  )
}

Tabs

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------------- | ------------------------ | ---------------------------------------------- | --------------------- | ------------------ | | items | TabsItem[] | Список элементов для переключения | - | Item[] | | disabled | boolean undefined | Флаг блокировки переключения | false | 'true', 'false' | | className | string undefined | CSS класс | '' | Любая строка | | changeActiveTab | (value: id) => void | Метод переключения вкладок | - | | | ...props | [key: string]: unknown | Пропсы, которые передаются компоненту TabsItem | - | |

Пример

import React, { useState } from "react"
import { Tabs, TabsItem } from "itpc-ui-kit"

const items: TabsItem[] = [
  {
    title: "First",
    content: <div>First tab</div>,
  },
  {
    title: "Second",
    content: <div>Second tab</div>,
  },
  {
    title: "Third",
    content: <div>Third tab</div>,
  },
]

const MyComponent: React.FC = () => <Tabs items={items} />

Text

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------- | ----------------------------- | --------- | --------------------- | ------------------ | | className | string undefined | CSS класс | '' | Любая строка | | children | React.ReactNode undefined | children | | |

Пример

import React from "react"
import { Text } from "itpc-ui-kit"

const MyComponent: React.FC = () => <Text>My text</Text>

TextAreaField

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------------- | ----------------------------------------------- | ------------------------------------------------- | --------------------- | --------------------- | | id | string | - | - | Любая строка | | name | string | - | - | Любая строка | | value | string undefined | Значение инпута | '' | Любая строка | | disabled | boolean undefined | Флаг блокировки ввода | false | 'true', 'false' | | placeholder | string undefined | Подпись инпута | '' | Любая строка | | validationState | ValidationState undefined | Значение, определяющее валидность значения инпута | 'valid' | 'valid' 'invalid' | | errorMessage | string undefined | Текст ошибки при не валидности значения инпута | '' | Любая строка | | maxHeight | number undefined | Максимальная высота поля в px | - | Любая строка | | className | string undefined | CSS класс | '' | Любая строка | | onBlur | () => void undefined | Событие onBlur, передаваемое инпуту | - | | | onFocus | () => void undefined | Событие onFocus, передаваемое инпуту | - | | | onChange | (values: FormattedValues) => void undefined | Событие onChange, передаваемое инпуту | - | |

Пример

import React, { useState } from "react"
import { TextAreaField } from "itpc-ui-kit"

const MyComponent: React.FC = () => {
  const [value, setValue] = useState<string>("")

  const onChange = (valueInput: string): void => {
    setValue(valueInput)
  }

  return <TextAreaField value={value} onChange={onChange} />
}

TextField

Props

| Название | Тип | Описание | Значение по умолчанию | Возможные значения | | --------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------ | --------------------- | ------------------------------------------------------ | | id | string | - | - | Любая строка | | name | string | - | - | Любая строка | | value | string undefined | Значение инпута | '' | Любая строка | | type | InputType undefined | Тип инпута | 'text' | 'password', 'text' | | state | InputState undefined | Состояние инпута инпута. В зависимости от состояния, будет показана соответствующая иконка | 'default' | 'default', 'cancel', 'loading', 'success', 'warning' | | disabled | boolean undefined | Флаг блокировки ввода | false | 'true', 'false' | | placeholder | string undefined | Подпись инпута | '' | Любая строка | | validationState | ValidationState undefined | Значение, определяющее валидность значения инпута | 'valid' | 'valid' 'invalid' | | errorMessage | string undefined | Текст ошибки при не валидности значения инпута | '' | Любая строка