@egov3/system-design

中文文档
1.3.245发布于 2026/11/12ISCTypeScriptESM + CJS近 30 天下载 2393

A system-design NPM package in Typescript

原始使用文档
文档目录27 节
  1. О проекте
  2. Requirements
  3. Установка
  4. Использование
  5. legacy использование
  6. Запуск Storybook
  7. Линтинг + Форматирование + Исправление
  8. Поиск неиспользуемых CSS-стилей
  9. 1.3.217
  10. 1.3.95
  11. 🆕 Новые компоненты:
  12. 1.3.87
  13. 🆕 Новые компоненты:
  14. 1.3.75
  15. 🆕 Новые компоненты:
  16. 🚀 Улучшения:
  17. 1.2.65
  18. 1.2.56
  19. 1.1.45
  20. 🚀 Улучшения:
  21. 1.0.43
  22. 🆕 Новые компоненты:
  23. 🚀 Улучшения:
  24. 🔧 Новые утилиты:
  25. 1.0.42
  26. 1.0.41
  27. 1.0.40

Egov3/System-Design

npm license downloads

О проекте

Egov3/System-Design — это библиотека UI-компонентов с поддержкой Storybook. Включает в себя готовые элементы интерфейса, утилиты для работы с датами и улучшенные стили.

Requirements

  • Node.js >= 18
  • Yarn 1.x

Установка

С Yarn:

yarn add @egov3/system-design

С npm:

npm install @egov3/system-design

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

import { Typography } from '@egov3/system-design/baseComponents/Typography';

function App() {
  return (
    <Typography
      tag="span"
      fontClass="caption1Medium"
      data-testid="DocCard_TITLE"
      className={styles.title}
    >
      {title}
    </Typography>
  );

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

import SystemDesign from '@egov3/system-design';

function App() {
  return (
    <SystemDesign.BaseComponents.Typography
      tag="span"
      fontClass="caption1Medium"
      data-testid="DocCard_TITLE"
      className={styles.title}
    >
      {title}
    </SystemDesign.BaseComponents.Typography>
  );
}

Запуск Storybook

yarn sb

Линтинг + Форматирование + Исправление

yarn lint:fix

Поиск неиспользуемых CSS-стилей

yarn dead-css

Release Notes

1.3.217

1.3.95

🆕 Новые компоненты:

  • SearchBar — поле поиска с иконкой:
    • варианты оформления: default, shadow, slim;
    • дебаунс для handleOnChange (настраивается через debounceDelay, по умолчанию 300 мс);
    • handleOnEnter при нажатии Enter;

1.3.87

🆕 Новые компоненты:

  • InputFieldGroup — группа текстовых полей (для OTP):
  • длина (кол-во) полей length;
  • handleOnChange при изменении значения;
  • handleKeyDown при нажатии;

1.3.75

🆕 Новые компоненты:

  • Label
  • WarningText
  • TabButtons

🚀 Улучшения:

  • обновлен компонент SelectBoxButton

1.2.65

  • Добавлен вариант black для Button
  • Исправлена толщина иконки в Accordion

1.2.56

  • добавлены глобалные стили

1.1.45

🚀 Улучшения:

  • Переименован combineClassNames → joinClasses

1.0.43

🆕 Новые компоненты:

  • Calendar
  • Modal
  • SelectBoxButton

🚀 Улучшения:

  • Добавлены global.scss и normalize.scss
  • Добавлен colors.module.css
  • Добавлены утилиты getDaysRange, getMonthRange, getYearRange
  • Переименован CombineClassNames → combineClassNames

🔧 Новые утилиты:

getDaysRange(day, month, year)

Возвращает массив из 5 дней, включая переданный день, два дня до и два после. Примеры:

getDaysRange({ day: 15, month: 2, year: 2020 }); // [13, 14, 15, 16, 17]
getDaysRange({ day: 2, month: 2, year: 2020 });  // [1, 2, 3, 4]
getDaysRange({ day: 31, month: 2, year: 2020 }); // [29, 30, 31]

getMonthRange(month, year)

Возвращает массив из 5 месяцев (2 до, текущий, 2 после). Индексация месяцев: [0...11]. Примеры:

getMonthRange(5, 2020);  // [3, 4, 5, 6, 7]
getMonthRange(0, 2020);  // [0, 1, 2]
getMonthRange(11, 2020); // [9, 10, 11]

getYearRange(year)

Возвращает массив из 5 лет (2 до, текущий, 2 после). Года [1970...2025]. Примеры:

getYearRange(2020); // [2018, 2019, 2020, 2021, 2022]
getYearRange(1970); // [1970, 1971, 1972]
getYearRange(2025); // [2023, 2024, 2025]

isValidDateRange(from, to)

Проверяет, является ли диапазон дат корректным. Примеры:

isValidDateRange({ from: { day: 25, month: 2, year: 2020 }, to: { day: 25, month: 2, year: 2023 } }); // true
isValidDateRange({ from: { day: 25, month: 6, year: 2023 }, to: { day: 25, month: 2, year: 2023 } }); // false

isInvalidDateRange(from, to)

Обратная функция isValidDateRange.

convertType

Функции для преобразования типов данных даты. Примеры:

convertType.day.toString(2);  // "02"
convertType.day.toNumber("02"); // 2
convertType.month.toString(2);  // "03"
convertType.month.toNumber("02"); // 1
convertType.year.toString(2020);  // "2020"
convertType.year.toNumber("2020"); // 2020
convertType.date.toNumber({ day: "25", month: "02", year: "2019" }); // { "day": 25, "month": 1, "year": 2019 } 
convertType.date.toString({ "day": 25, "month": 1, "year": 2019 }); // { "day": "25", "month": "02", "year": "2019" }
convertType.dateRange.toString({ from: { "day": 25, "month": 1, "year": 2019 }, to: { "day": 25, "month": 1, "year": 2019 } }) // { "from": { "day": "25", "month": "02", "year": "2019" }, "to": { "day": "25", "month": "02", "year": "2019" }} 
convertType.dateRange.toNumber({ from: { day: "25", month: "02", year: "2019" }, to: { day: "25", month: "02", year: "2019" } }) // { "from": { "day": 25, "month": 1, "year": 2019 }, "to": { "day": 25, "month": 1, "year": 2019 }}

formatDate(date)

Форматирует дату Примеры:

formatDate(new Date()) // "2025-03-01" 

getDaysInMonth(month, year)

Возвращает количество дней в месяце Примеры:

getDaysInMonth(1, 2020) // 29

getMonthNameProper(month, year)

Возвращает название месяца по индексу[0..11] Примеры:

getMonthNameProper(1) // "Февраль"

getValideMonthAndDay({ day, month, year })

Возвращает исправленную дату, которая не больше текущей даты Примеры:

getValideMonthAndDay({ day: 30, month: 1, year: 2020 }) // { "day": 29, "month": 1, "year": 2020 } 
getValideMonthAndDay({ day: 30, month: 11, year: 2020 }) // { "day": 1, "month": 2, "year": 2025 } 

isValidateDate({ day, month, year})

Проверяет дату меньше текущего дня Примеры:

isValidateDate({ day: 25, month: 1, year: 2026}) // false
isValidateDate({ day: 25, month: 1, year: 2024}) // екгу

isInvalidateDate({ day, month, year})

Обратная функция от isValidateDate.

isValidateDate({ day, month, year})

Проверяет дату меньше текущего дня Примеры:

normalizeDayAndMonth({ day: 30, month: 1, year: 2024}) // 29

toPascalCase(word)

Делает строчным буквы кроме первой Примеры:

toPascalCase("hello") // "Hello" 
toPascalCase("HELLO") // "Hello" 

GenerateArray(length, start)

Создает массив Примеры:

GenerateArray(2, 5) // [5, 6] 
GenerateArray(2) // [1, 2] 

1.0.42

  • Добавлены компоненты Modal, SelectBoxButton, Calendar

1.0.41

  • Исправлено название Components в латиницу

1.0.40

  • Typography теперь поддерживает jsx-стили
  • Обновлён Storybook и его зависимости
  • Удалён addon-mdx-gfm
  • Добавлены утилиты CreateArray, SetCharAt
  • Добавлен InputGroup (группа InputField)
  • Расширен InputField через стандартный интерфейс React

📬 Контакты

Если у вас есть вопросы или предложения, создавайте Issue в репозитории или пишите в командный чат проекта.

test

版本与发布记录

@egov3/system-design 共发布 235 个版本,首次发布于 2024/10/22;过去 12 个月发布了 146 个版本。

版本发布日期距今
1.3.245latest2026/11/121 天前
1.3.2442026/11/112 天前
1.3.2432026/11/112 天前
1.3.2422026/11/103 天前
1.3.2412026/11/0310 天前
1.3.2402026/11/0211 天前

关于 @egov3/system-design 的常见问题

@egov3/system-design 是什么?

A system-design NPM package in Typescript

如何安装 @egov3/system-design?

在项目目录运行 npm install @egov3/system-design,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(>=18.0.0 <20.0.0)、react-dom(>=18.0.0 <20.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@egov3/system-design 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@egov3/system-design 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@egov3/system-design 可以商用吗?

@egov3/system-design 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@egov3/system-design 的下载量有多少?

根据 npm 官方下载统计,@egov3/system-design 在 2026/10/13 – 2026/11/11 这 30 天内被下载 2,393 次,日均约 80 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@egov3/system-design 还在维护吗?

最新版本 1.3.245 发布于 2026/11/12(1 天前);至今共发布 235 个版本,其中过去 12 个月发布了 146 个;首次发布于 2024/10/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。