@dskripchenko/ui 0.5.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Denis Skripchenko
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.de.md ADDED
@@ -0,0 +1,145 @@
1
+ # @dskripchenko/ui
2
+
3
+ Eine Bibliothek aus Vue-3-Komponenten, Tokens und Themes auf Basis von CSS Custom Properties.
4
+
5
+ [English](./README.md) · [Русский](./README.ru.md) · [**Deutsch**](./README.de.md) · [中文](./README.zh.md)
6
+
7
+ [![npm](https://img.shields.io/npm/v/@dskripchenko/ui.svg)](https://www.npmjs.com/package/@dskripchenko/ui)
8
+ [![bundle](https://img.shields.io/bundlephobia/minzip/@dskripchenko/ui)](https://bundlephobia.com/package/@dskripchenko/ui)
9
+ [![license](https://img.shields.io/npm/l/@dskripchenko/ui.svg)](./LICENSE)
10
+
11
+ > **Status:** stabil. SemVer-Garantien gelten — Breaking Changes nur in Major-Versionen.
12
+
13
+ 📖 **Storybook:** [dskripchenko.github.io/ui](https://dskripchenko.github.io/ui/)
14
+
15
+ ## Highlights
16
+
17
+ - **70+ Komponenten** — Formulare, Navigation, Overlays, Datenanzeige, Charts, Patterns, Layouts
18
+ - **Vue 3 + TypeScript** — Composition API, `<script setup>`, vollständig typisiert
19
+ - **CSS Custom Properties** — kein CSS-in-JS, kein Tailwind, keine Präprozessoren; alles über Variablen
20
+ - **Light / Dark Themes** — Umschalten über `data-theme` auf `:root`, einfach zu überschreiben
21
+ - **Tree-shakable** — Import pro Komponente, ESM + CJS Builds
22
+ - **A11y** — `:focus-visible`, ARIA-Attribute, Tastatur-Navigation in allen interaktiven Komponenten
23
+ - **i18n** — eingebaute `ru` + `en` Locales, `UidLocaleProvider` für partielle Überschreibungen und eigene Locales
24
+ - **~1500 Icons** — `lucide-vue-next` unter der Haube + Sub-Export `@dskripchenko/ui/icons`
25
+ - **Keine Runtime-Chart-Deps** — eingebaute SVG-Primitive (Sparkline, ProgressRing, Gauge, Heatmap)
26
+
27
+ ## Installation
28
+
29
+ ```bash
30
+ pnpm add @dskripchenko/ui
31
+ # oder
32
+ npm install @dskripchenko/ui
33
+ ```
34
+
35
+ ## Schnellstart
36
+
37
+ ```ts
38
+ // main.ts
39
+ import { createApp } from 'vue'
40
+ import App from './App.vue'
41
+
42
+ import '@dskripchenko/ui/styles/tokens.css'
43
+ import '@dskripchenko/ui/styles/themes.css'
44
+
45
+ createApp(App).mount('#app')
46
+ ```
47
+
48
+ ```vue
49
+ <!-- App.vue -->
50
+ <script setup lang="ts">
51
+ import { UidButton, UidIcon, UidLocaleProvider, en } from '@dskripchenko/ui'
52
+ import { Check } from '@dskripchenko/ui/icons'
53
+ </script>
54
+
55
+ <template>
56
+ <UidLocaleProvider :locale="en">
57
+ <UidButton variant="primary">
58
+ <UidIcon :icon="Check" /> Speichern
59
+ </UidButton>
60
+ </UidLocaleProvider>
61
+ </template>
62
+ ```
63
+
64
+ Theme über Attribut auf `<html>` umschalten:
65
+
66
+ ```html
67
+ <html data-theme="dark">
68
+ ```
69
+
70
+ ## Inhalt
71
+
72
+ Kurze Auswahl — vollständiger Katalog im [Storybook](https://dskripchenko.github.io/ui/).
73
+
74
+ **Formulare & Eingabe:** Button, Input, Textarea, NumberInput, Checkbox, Radio, Switch, Label, FormField, Select, Combobox, TagsInput, DatePicker, DateRangePicker, TimePicker, ColorPicker, Slider, Rating, FileUpload, Mention, TreeSelect, Cascader
75
+
76
+ **Feedback:** Spinner, Skeleton, Badge, Alert, Progress, Toast, Tour
77
+
78
+ **Overlays:** Modal, Drawer, Tooltip, Popover, Menu, Command
79
+
80
+ **Navigation:** Tabs, Breadcrumb, Link, Pagination (+ Cursor / LoadMore / InfiniteScroll / PageSize), BackTop, Affix, Anchor
81
+
82
+ **Datenanzeige:** Card, Avatar, AvatarGroup, Tag, Divider, Accordion, Table, VirtualList, Stat, DescriptionList, Timeline, TreeView, Code, Watermark, Carousel, Calendar, NotificationBadge
83
+
84
+ **Layout-Helfer:** Stack, Grid, Container, Splitter
85
+
86
+ **Charts:** Sparkline, ProgressRing, Gauge, Heatmap
87
+
88
+ **Wizards:** Stepper, Wizard, WizardStep
89
+
90
+ **Patterns:** Header, Footer, Sidebar, PageHeader, EmptyState, ErrorState, Result
91
+
92
+ **Layouts:** SimpleLayout, SidebarLayout, AuthLayout, WizardLayout
93
+
94
+ **Composables:** useTheme, useLocale, useField, useToast, useWizard, useSidebar, useCommandPalette, useFocusTrap, useScrollLock, usePopover
95
+
96
+ ## Dokumentation
97
+
98
+ Anwender-Dokumentation in vier Sprachen — wähle deine:
99
+
100
+ - 🇬🇧 **English** (default): [docs/en/](./docs/en/)
101
+ - 🇷🇺 **Русский**: [docs/ru/](./docs/ru/)
102
+ - 🇩🇪 **Deutsch**: [Erste Schritte](./docs/de/getting-started.md), [Theming](./docs/de/theming.md), [Tokens](./docs/de/tokens.md), [Icons](./docs/de/icons.md), [Patterns](./docs/de/patterns.md), [Validation](./docs/de/validation.md), [Charts](./docs/de/charts.md), [i18n](./docs/de/i18n.md)
103
+ - 🇨🇳 **中文**: [docs/zh/](./docs/zh/)
104
+
105
+ Mitwirkenden-Dokumentation (nur Englisch): [Architecture](./docs/ARCHITECTURE.md), [Component guidelines](./docs/COMPONENT_GUIDELINES.md), [Contributing](./docs/CONTRIBUTING.md), [Roadmap](./docs/ROADMAP.md).
106
+
107
+ ## Theming
108
+
109
+ Alle Farben, Abstände und Schriften sind CSS-Variablen. Theme überschreiben — Tokens auf `:root` oder einem Container setzen:
110
+
111
+ ```css
112
+ :root[data-theme='dark'] {
113
+ --uid-color-primary: #8b5cf6;
114
+ --uid-color-bg: #0a0a0a;
115
+ }
116
+ ```
117
+
118
+ Mehr in [Theming](./docs/de/theming.md) und [Tokens](./docs/de/tokens.md).
119
+
120
+ ## Icons
121
+
122
+ Sub-Export `@dskripchenko/ui/icons` re-exportiert alle ~1500 Lucide-Icons:
123
+
124
+ ```ts
125
+ import { UidIcon } from '@dskripchenko/ui'
126
+ import { Heart, Star } from '@dskripchenko/ui/icons'
127
+ ```
128
+
129
+ Mehr in [Icons](./docs/de/icons.md).
130
+
131
+ ## Entwicklung
132
+
133
+ ```bash
134
+ pnpm install
135
+ pnpm dev # Storybook auf :6006
136
+ pnpm test # Vitest
137
+ pnpm build # Library-Build
138
+ pnpm build-storybook # Storybook → storybook-static
139
+ pnpm build:analyze # Bundle-Visualizer
140
+ pnpm changeset # Änderung fürs nächste Release beschreiben
141
+ ```
142
+
143
+ ## Lizenz
144
+
145
+ MIT
package/README.md CHANGED
@@ -1,34 +1,38 @@
1
1
  # @dskripchenko/ui
2
2
 
3
- Набор Vue 3 компонентов, токенов и тем на CSS custom properties.
3
+ A Vue 3 component, token, and theme library on CSS custom properties.
4
+
5
+ [**English**](./README.md) · [Русский](./README.ru.md) · [Deutsch](./README.de.md) · [中文](./README.zh.md)
4
6
 
5
7
  [![npm](https://img.shields.io/npm/v/@dskripchenko/ui.svg)](https://www.npmjs.com/package/@dskripchenko/ui)
6
8
  [![bundle](https://img.shields.io/bundlephobia/minzip/@dskripchenko/ui)](https://bundlephobia.com/package/@dskripchenko/ui)
7
9
  [![license](https://img.shields.io/npm/l/@dskripchenko/ui.svg)](./LICENSE)
8
10
 
9
- > **Статус:** ранняя разработка. API нестабилен до `1.0`.
11
+ > **Status:** stable. SemVer guarantees apply — breaking changes only on a major bump.
10
12
 
11
13
  📖 **Storybook:** [dskripchenko.github.io/ui](https://dskripchenko.github.io/ui/)
12
14
 
13
- ## Особенности
15
+ ## Highlights
14
16
 
15
- - **59 компонентов** — формы, навигация, оверлеи, отображение данных, паттерны и лейауты
16
- - **Vue 3 + TypeScript** — Composition API, `<script setup>`, полная типизация
17
- - **CSS custom properties** — никакого CSS-in-JS, Tailwind или препроцессоров; всё через переменные
18
- - **Light / Dark темы** — через `data-theme` на `:root`, легко переопределяются
19
- - **Tree-shakeable** — импорт по компонентам, ESM + CJS сборки
20
- - **A11y** — `:focus-visible`, ARIA-атрибуты, keyboard-навигация во всех интерактивных компонентах
21
- - **~1500 иконок** — `lucide-vue-next` под капотом + sub-export `@dskripchenko/ui/icons`
17
+ - **70+ components** — forms, navigation, overlays, data display, charts, patterns, layouts
18
+ - **Vue 3 + TypeScript** — Composition API, `<script setup>`, fully typed
19
+ - **CSS custom properties** — no CSS-in-JS, no Tailwind, no preprocessors; everything is variables
20
+ - **Light / Dark themes** — toggled via `data-theme` on `:root`, easy to override
21
+ - **Tree-shakable** — per-component imports, ESM + CJS builds
22
+ - **A11y** — `:focus-visible`, ARIA attributes, keyboard navigation across every interactive component
23
+ - **i18n** — built-in `ru` + `en` locales, `UidLocaleProvider` for partial overrides or custom locales
24
+ - **~1500 icons** — `lucide-vue-next` under the hood + `@dskripchenko/ui/icons` sub-export
25
+ - **Zero runtime chart deps** — built-in SVG primitives (Sparkline, ProgressRing, Gauge, Heatmap)
22
26
 
23
- ## Установка
27
+ ## Install
24
28
 
25
29
  ```bash
26
30
  pnpm add @dskripchenko/ui
27
- # или
31
+ # or
28
32
  npm install @dskripchenko/ui
29
33
  ```
30
34
 
31
- ## Быстрый старт
35
+ ## Quick start
32
36
 
33
37
  ```ts
34
38
  // main.ts
@@ -44,70 +48,65 @@ createApp(App).mount('#app')
44
48
  ```vue
45
49
  <!-- App.vue -->
46
50
  <script setup lang="ts">
47
- import { UidButton, UidIcon } from '@dskripchenko/ui'
51
+ import { UidButton, UidIcon, UidLocaleProvider, en } from '@dskripchenko/ui'
48
52
  import { Check } from '@dskripchenko/ui/icons'
49
53
  </script>
50
54
 
51
55
  <template>
52
- <UidButton variant="primary">
53
- <UidIcon :icon="Check" /> Привет
54
- </UidButton>
56
+ <UidLocaleProvider :locale="en">
57
+ <UidButton variant="primary">
58
+ <UidIcon :icon="Check" /> Save
59
+ </UidButton>
60
+ </UidLocaleProvider>
55
61
  </template>
56
62
  ```
57
63
 
58
- Переключение темы — атрибут на `<html>`:
64
+ Switch theme by attribute on `<html>`:
59
65
 
60
66
  ```html
61
67
  <html data-theme="dark">
62
68
  ```
63
69
 
64
- ## Состав библиотеки
65
-
66
- ### Базовые формы и ввод
67
-
68
- `UidButton`, `UidInput`, `UidTextarea`, `UidNumberInput`, `UidCheckbox`, `UidRadio`, `UidRadioGroup`, `UidSwitch`, `UidLabel`, `UidFormField`, `UidSelect`, `UidCombobox`, `UidTagsInput`, `UidDatePicker`, `UidDateRangePicker`, `UidTimePicker`, `UidColorPicker`, `UidSlider`, `UidRating`, `UidFileUpload`, `UidMention`, `UidTreeSelect`
69
-
70
- ### Обратная связь
70
+ ## What's inside
71
71
 
72
- `UidSpinner`, `UidSkeleton`, `UidBadge`, `UidAlert`, `UidProgress`, `UidToast`, `UidToastProvider`, `UidTour`
72
+ A short selection — the full catalog is in [Storybook](https://dskripchenko.github.io/ui/).
73
73
 
74
- ### Оверлеи
74
+ **Forms & input:** Button, Input, Textarea, NumberInput, Checkbox, Radio, Switch, Label, FormField, Select, Combobox, TagsInput, DatePicker, DateRangePicker, TimePicker, ColorPicker, Slider, Rating, FileUpload, Mention, TreeSelect, Cascader
75
75
 
76
- `UidModal`, `UidDrawer`, `UidTooltip`, `UidPopover`, `UidMenu`, `UidMenuItem`, `UidCommand`
76
+ **Feedback:** Spinner, Skeleton, Badge, Alert, Progress, Toast, Tour
77
77
 
78
- ### Навигация
78
+ **Overlays:** Modal, Drawer, Tooltip, Popover, Menu, Command
79
79
 
80
- `UidTabs`, `UidTab`, `UidTabPanel`, `UidBreadcrumb`, `UidLink`, `UidPagination`, `UidPaginationCursor`, `UidLoadMore`, `UidInfiniteScroll`, `UidPageSize`, `UidBackTop`, `UidAffix`, `UidAnchor`
80
+ **Navigation:** Tabs, Breadcrumb, Link, Pagination (+ Cursor / LoadMore / InfiniteScroll / PageSize), BackTop, Affix, Anchor
81
81
 
82
- ### Отображение данных
82
+ **Data display:** Card, Avatar, AvatarGroup, Tag, Divider, Accordion, Table, VirtualList, Stat, DescriptionList, Timeline, TreeView, Code, Watermark, Carousel, Calendar, NotificationBadge
83
83
 
84
- `UidCard`, `UidAvatar`, `UidAvatarGroup`, `UidTag`, `UidDivider`, `UidAccordion`, `UidTable`, `UidVirtualList`, `UidStat`, `UidDescriptionList`, `UidDescriptionItem`, `UidTimeline`, `UidTimelineItem`, `UidTreeView`, `UidCode`, `UidWatermark`
84
+ **Layout helpers:** Stack, Grid, Container, Splitter
85
85
 
86
- ### Layout-помощники
86
+ **Charts:** Sparkline, ProgressRing, Gauge, Heatmap
87
87
 
88
- `UidStack`, `UidGrid`, `UidContainer`, `UidSplitter`
88
+ **Wizards:** Stepper, Wizard, WizardStep
89
89
 
90
- ### Wizards
90
+ **Patterns:** Header, Footer, Sidebar, PageHeader, EmptyState, ErrorState, Result
91
91
 
92
- `UidStepper`, `UidWizard`, `UidWizardStep`
92
+ **Layouts:** SimpleLayout, SidebarLayout, AuthLayout, WizardLayout
93
93
 
94
- ### Patterns
94
+ **Composables:** useTheme, useLocale, useField, useToast, useWizard, useSidebar, useCommandPalette, useFocusTrap, useScrollLock, usePopover
95
95
 
96
- `UidHeader`, `UidFooter`, `UidSidebar`, `UidPageHeader`, `UidEmptyState`, `UidErrorState`, `UidResult`
96
+ ## Documentation
97
97
 
98
- ### Layouts
98
+ User docs are translated into four languages — pick yours:
99
99
 
100
- `UidSimpleLayout`, `UidSidebarLayout`, `UidAuthLayout`, `UidWizardLayout`
100
+ - 🇬🇧 **English** (default): [getting-started](./docs/en/getting-started.md), [theming](./docs/en/theming.md), [tokens](./docs/en/tokens.md), [icons](./docs/en/icons.md), [patterns](./docs/en/patterns.md), [validation](./docs/en/validation.md), [charts](./docs/en/charts.md), [i18n](./docs/en/i18n.md)
101
+ - 🇷🇺 **Русский**: [docs/ru/](./docs/ru/)
102
+ - 🇩🇪 **Deutsch**: [docs/de/](./docs/de/)
103
+ - 🇨🇳 **中文**: [docs/zh/](./docs/zh/)
101
104
 
102
- ### Composables
105
+ Contributor docs (English only): [Architecture](./docs/ARCHITECTURE.md), [Component guidelines](./docs/COMPONENT_GUIDELINES.md), [Contributing](./docs/CONTRIBUTING.md), [Roadmap](./docs/ROADMAP.md).
103
106
 
104
- `useTheme`, `useField`, `useToast`, `useWizard`, `useSidebar`, `useCommandPalette`, `useFocusTrap`, `useScrollLock`, `usePopover`
107
+ ## Theming
105
108
 
106
- Полный каталог с интерактивными примерами — в **[Storybook](https://dskripchenko.github.io/ui/)**.
107
-
108
- ## Темизация
109
-
110
- Все цвета, отступы, шрифты — CSS-переменные. Переопределить тему — задать токены на `:root` или контейнере:
109
+ Every colour, spacing, and font is a CSS variable. Override the theme by setting tokens on `:root` or on a container:
111
110
 
112
111
  ```css
113
112
  :root[data-theme='dark'] {
@@ -116,42 +115,31 @@ import { Check } from '@dskripchenko/ui/icons'
116
115
  }
117
116
  ```
118
117
 
119
- Подробнее — [`docs/THEMING.md`](./docs/THEMING.md) и [`docs/TOKENS.md`](./docs/TOKENS.md).
118
+ See [theming](./docs/en/theming.md) and [tokens](./docs/en/tokens.md) for details.
120
119
 
121
- ## Иконки
120
+ ## Icons
122
121
 
123
- Sub-export `@dskripchenko/ui/icons` реэкспортирует все ~1500 иконок Lucide:
122
+ The `@dskripchenko/ui/icons` sub-export re-exports all ~1500 Lucide icons:
124
123
 
125
124
  ```ts
126
125
  import { UidIcon } from '@dskripchenko/ui'
127
126
  import { Heart, Star } from '@dskripchenko/ui/icons'
128
127
  ```
129
128
 
130
- Подробнее — [`docs/ICONS.md`](./docs/ICONS.md).
131
-
132
- ## Документация
133
-
134
- - [Архитектура](./docs/ARCHITECTURE.md) — структура пакета, сборка, экспорт
135
- - [Дизайн-токены](./docs/TOKENS.md) — система CSS-переменных
136
- - [Темизация](./docs/THEMING.md) — light/dark и кастомизация
137
- - [Иконки](./docs/ICONS.md) — `UidIcon` и реестр Lucide
138
- - [Валидация форм](./docs/VALIDATION.md) — `useField`, правила
139
- - [Patterns и Layouts](./docs/PATTERNS.md) — составные блоки и шаблоны страниц
140
- - [Гайдлайны компонентов](./docs/COMPONENT_GUIDELINES.md) — конвенции
141
- - [Roadmap](./docs/ROADMAP.md) — план развития
142
- - [Контрибьютинг](./docs/CONTRIBUTING.md) — workflow
129
+ See [icons](./docs/en/icons.md).
143
130
 
144
- ## Разработка
131
+ ## Development
145
132
 
146
133
  ```bash
147
134
  pnpm install
148
- pnpm dev # Storybook на :6006
149
- pnpm test # Vitest
150
- pnpm build # Сборка библиотеки
151
- pnpm build-storybook # Сборка Storybook → storybook-static
152
- pnpm changeset # Описать изменения для следующего релиза
135
+ pnpm dev # Storybook on :6006
136
+ pnpm test # Vitest
137
+ pnpm build # Library build
138
+ pnpm build-storybook # Storybook → storybook-static
139
+ pnpm build:analyze # Bundle visualizer
140
+ pnpm changeset # Describe a change for the next release
153
141
  ```
154
142
 
155
- ## Лицензия
143
+ ## License
156
144
 
157
145
  MIT
package/README.ru.md ADDED
@@ -0,0 +1,143 @@
1
+ # @dskripchenko/ui
2
+
3
+ Набор Vue 3 компонентов, токенов и тем на CSS custom properties.
4
+
5
+ [English](./README.md) · [**Русский**](./README.ru.md) · [Deutsch](./README.de.md) · [中文](./README.zh.md)
6
+
7
+ [![npm](https://img.shields.io/npm/v/@dskripchenko/ui.svg)](https://www.npmjs.com/package/@dskripchenko/ui)
8
+ [![bundle](https://img.shields.io/bundlephobia/minzip/@dskripchenko/ui)](https://bundlephobia.com/package/@dskripchenko/ui)
9
+ [![license](https://img.shields.io/npm/l/@dskripchenko/ui.svg)](./LICENSE)
10
+
11
+ > **Статус:** стабильно. Действуют гарантии SemVer — ломающие изменения только в major-версиях.
12
+
13
+ 📖 **Storybook:** [dskripchenko.github.io/ui](https://dskripchenko.github.io/ui/)
14
+
15
+ ## Особенности
16
+
17
+ - **70+ компонентов** — формы, навигация, оверлеи, отображение данных, графики, паттерны, лейауты
18
+ - **Vue 3 + TypeScript** — Composition API, `<script setup>`, полная типизация
19
+ - **CSS custom properties** — никакого CSS-in-JS, Tailwind или препроцессоров; всё через переменные
20
+ - **Light / Dark темы** — через `data-theme` на `:root`, легко переопределяются
21
+ - **Tree-shakeable** — импорт по компонентам, ESM + CJS сборки
22
+ - **A11y** — `:focus-visible`, ARIA-атрибуты, keyboard-навигация во всех интерактивных компонентах
23
+ - **i18n** — встроенные `ru` + `en` локали, `UidLocaleProvider` для частичных переопределений и кастомных локалей
24
+ - **~1500 иконок** — `lucide-vue-next` под капотом + sub-export `@dskripchenko/ui/icons`
25
+ - **Zero runtime chart deps** — встроенные SVG-примитивы (Sparkline, ProgressRing, Gauge, Heatmap)
26
+
27
+ ## Установка
28
+
29
+ ```bash
30
+ pnpm add @dskripchenko/ui
31
+ # или
32
+ npm install @dskripchenko/ui
33
+ ```
34
+
35
+ ## Быстрый старт
36
+
37
+ ```ts
38
+ // main.ts
39
+ import { createApp } from 'vue'
40
+ import App from './App.vue'
41
+
42
+ import '@dskripchenko/ui/styles/tokens.css'
43
+ import '@dskripchenko/ui/styles/themes.css'
44
+
45
+ createApp(App).mount('#app')
46
+ ```
47
+
48
+ ```vue
49
+ <!-- App.vue -->
50
+ <script setup lang="ts">
51
+ import { UidButton, UidIcon } from '@dskripchenko/ui'
52
+ import { Check } from '@dskripchenko/ui/icons'
53
+ </script>
54
+
55
+ <template>
56
+ <UidButton variant="primary">
57
+ <UidIcon :icon="Check" /> Сохранить
58
+ </UidButton>
59
+ </template>
60
+ ```
61
+
62
+ Переключение темы — атрибут на `<html>`:
63
+
64
+ ```html
65
+ <html data-theme="dark">
66
+ ```
67
+
68
+ ## Что внутри
69
+
70
+ Краткий список — полный каталог в [Storybook](https://dskripchenko.github.io/ui/).
71
+
72
+ **Формы и ввод:** Button, Input, Textarea, NumberInput, Checkbox, Radio, Switch, Label, FormField, Select, Combobox, TagsInput, DatePicker, DateRangePicker, TimePicker, ColorPicker, Slider, Rating, FileUpload, Mention, TreeSelect, Cascader
73
+
74
+ **Обратная связь:** Spinner, Skeleton, Badge, Alert, Progress, Toast, Tour
75
+
76
+ **Оверлеи:** Modal, Drawer, Tooltip, Popover, Menu, Command
77
+
78
+ **Навигация:** Tabs, Breadcrumb, Link, Pagination (+ Cursor / LoadMore / InfiniteScroll / PageSize), BackTop, Affix, Anchor
79
+
80
+ **Отображение данных:** Card, Avatar, AvatarGroup, Tag, Divider, Accordion, Table, VirtualList, Stat, DescriptionList, Timeline, TreeView, Code, Watermark, Carousel, Calendar, NotificationBadge
81
+
82
+ **Layout-помощники:** Stack, Grid, Container, Splitter
83
+
84
+ **Графики:** Sparkline, ProgressRing, Gauge, Heatmap
85
+
86
+ **Wizards:** Stepper, Wizard, WizardStep
87
+
88
+ **Patterns:** Header, Footer, Sidebar, PageHeader, EmptyState, ErrorState, Result
89
+
90
+ **Layouts:** SimpleLayout, SidebarLayout, AuthLayout, WizardLayout
91
+
92
+ **Composables:** useTheme, useLocale, useField, useToast, useWizard, useSidebar, useCommandPalette, useFocusTrap, useScrollLock, usePopover
93
+
94
+ ## Документация
95
+
96
+ Пользовательская документация переведена на 4 языка — выбери свой:
97
+
98
+ - 🇬🇧 **English** (default): [docs/en/](./docs/en/)
99
+ - 🇷🇺 **Русский**: [getting-started](./docs/ru/getting-started.md), [тема](./docs/ru/theming.md), [токены](./docs/ru/tokens.md), [иконки](./docs/ru/icons.md), [патерны](./docs/ru/patterns.md), [валидация](./docs/ru/validation.md), [графики](./docs/ru/charts.md), [i18n](./docs/ru/i18n.md)
100
+ - 🇩🇪 **Deutsch**: [docs/de/](./docs/de/)
101
+ - 🇨🇳 **中文**: [docs/zh/](./docs/zh/)
102
+
103
+ Документация для контрибьюторов (только английская): [Architecture](./docs/ARCHITECTURE.md), [Component guidelines](./docs/COMPONENT_GUIDELINES.md), [Contributing](./docs/CONTRIBUTING.md), [Roadmap](./docs/ROADMAP.md).
104
+
105
+ ## Темизация
106
+
107
+ Все цвета, отступы, шрифты — CSS-переменные. Переопределить тему — задать токены на `:root` или контейнере:
108
+
109
+ ```css
110
+ :root[data-theme='dark'] {
111
+ --uid-color-primary: #8b5cf6;
112
+ --uid-color-bg: #0a0a0a;
113
+ }
114
+ ```
115
+
116
+ Подробнее — [темизация](./docs/ru/theming.md) и [токены](./docs/ru/tokens.md).
117
+
118
+ ## Иконки
119
+
120
+ Sub-export `@dskripchenko/ui/icons` реэкспортирует все ~1500 иконок Lucide:
121
+
122
+ ```ts
123
+ import { UidIcon } from '@dskripchenko/ui'
124
+ import { Heart, Star } from '@dskripchenko/ui/icons'
125
+ ```
126
+
127
+ Подробнее — [иконки](./docs/ru/icons.md).
128
+
129
+ ## Разработка
130
+
131
+ ```bash
132
+ pnpm install
133
+ pnpm dev # Storybook на :6006
134
+ pnpm test # Vitest
135
+ pnpm build # Сборка библиотеки
136
+ pnpm build-storybook # Сборка Storybook → storybook-static
137
+ pnpm build:analyze # Bundle visualizer
138
+ pnpm changeset # Описать изменения для следующего релиза
139
+ ```
140
+
141
+ ## Лицензия
142
+
143
+ MIT
package/README.zh.md ADDED
@@ -0,0 +1,145 @@
1
+ # @dskripchenko/ui
2
+
3
+ 基于 CSS Custom Properties 的 Vue 3 组件、token 与主题库。
4
+
5
+ [English](./README.md) · [Русский](./README.ru.md) · [Deutsch](./README.de.md) · [**中文**](./README.zh.md)
6
+
7
+ [![npm](https://img.shields.io/npm/v/@dskripchenko/ui.svg)](https://www.npmjs.com/package/@dskripchenko/ui)
8
+ [![bundle](https://img.shields.io/bundlephobia/minzip/@dskripchenko/ui)](https://bundlephobia.com/package/@dskripchenko/ui)
9
+ [![license](https://img.shields.io/npm/l/@dskripchenko/ui.svg)](./LICENSE)
10
+
11
+ > **状态:** 稳定。遵循 SemVer 保障——破坏性变更仅在主版本中发布。
12
+
13
+ 📖 **Storybook:**[dskripchenko.github.io/ui](https://dskripchenko.github.io/ui/)
14
+
15
+ ## 亮点
16
+
17
+ - **70+ 组件** — 表单、导航、浮层、数据展示、图表、Patterns、Layouts
18
+ - **Vue 3 + TypeScript** — Composition API、`<script setup>`、完整类型
19
+ - **CSS 自定义属性** — 不用 CSS-in-JS、Tailwind 或预处理器;一切都是变量
20
+ - **Light / Dark 主题** — 通过 `:root` 上的 `data-theme` 切换,便于覆盖
21
+ - **可 tree-shake** — 按组件导入,ESM + CJS 构建
22
+ - **无障碍** — `:focus-visible`、ARIA 属性、所有交互组件支持键盘
23
+ - **i18n** — 内置 `ru` + `en` locale,`UidLocaleProvider` 支持部分覆盖与自定义 locale
24
+ - **~1500 图标** — 底层使用 `lucide-vue-next` + 子导出 `@dskripchenko/ui/icons`
25
+ - **零图表运行时依赖** — 内置 SVG 原语(Sparkline、ProgressRing、Gauge、Heatmap)
26
+
27
+ ## 安装
28
+
29
+ ```bash
30
+ pnpm add @dskripchenko/ui
31
+ # 或
32
+ npm install @dskripchenko/ui
33
+ ```
34
+
35
+ ## 快速开始
36
+
37
+ ```ts
38
+ // main.ts
39
+ import { createApp } from 'vue'
40
+ import App from './App.vue'
41
+
42
+ import '@dskripchenko/ui/styles/tokens.css'
43
+ import '@dskripchenko/ui/styles/themes.css'
44
+
45
+ createApp(App).mount('#app')
46
+ ```
47
+
48
+ ```vue
49
+ <!-- App.vue -->
50
+ <script setup lang="ts">
51
+ import { UidButton, UidIcon, UidLocaleProvider, en } from '@dskripchenko/ui'
52
+ import { Check } from '@dskripchenko/ui/icons'
53
+ </script>
54
+
55
+ <template>
56
+ <UidLocaleProvider :locale="en">
57
+ <UidButton variant="primary">
58
+ <UidIcon :icon="Check" /> 保存
59
+ </UidButton>
60
+ </UidLocaleProvider>
61
+ </template>
62
+ ```
63
+
64
+ 通过 `<html>` 上的属性切换主题:
65
+
66
+ ```html
67
+ <html data-theme="dark">
68
+ ```
69
+
70
+ ## 内容速览
71
+
72
+ 精简列表 — 完整目录在 [Storybook](https://dskripchenko.github.io/ui/)。
73
+
74
+ **表单与输入:** Button、Input、Textarea、NumberInput、Checkbox、Radio、Switch、Label、FormField、Select、Combobox、TagsInput、DatePicker、DateRangePicker、TimePicker、ColorPicker、Slider、Rating、FileUpload、Mention、TreeSelect、Cascader
75
+
76
+ **反馈:** Spinner、Skeleton、Badge、Alert、Progress、Toast、Tour
77
+
78
+ **浮层:** Modal、Drawer、Tooltip、Popover、Menu、Command
79
+
80
+ **导航:** Tabs、Breadcrumb、Link、Pagination(+ Cursor / LoadMore / InfiniteScroll / PageSize)、BackTop、Affix、Anchor
81
+
82
+ **数据展示:** Card、Avatar、AvatarGroup、Tag、Divider、Accordion、Table、VirtualList、Stat、DescriptionList、Timeline、TreeView、Code、Watermark、Carousel、Calendar、NotificationBadge
83
+
84
+ **布局辅助:** Stack、Grid、Container、Splitter
85
+
86
+ **图表:** Sparkline、ProgressRing、Gauge、Heatmap
87
+
88
+ **Wizards:** Stepper、Wizard、WizardStep
89
+
90
+ **Patterns:** Header、Footer、Sidebar、PageHeader、EmptyState、ErrorState、Result
91
+
92
+ **Layouts:** SimpleLayout、SidebarLayout、AuthLayout、WizardLayout
93
+
94
+ **Composables:** useTheme、useLocale、useField、useToast、useWizard、useSidebar、useCommandPalette、useFocusTrap、useScrollLock、usePopover
95
+
96
+ ## 文档
97
+
98
+ 用户文档已译为四种语言 — 选择你的:
99
+
100
+ - 🇬🇧 **English**(default):[docs/en/](./docs/en/)
101
+ - 🇷🇺 **Русский**:[docs/ru/](./docs/ru/)
102
+ - 🇩🇪 **Deutsch**:[docs/de/](./docs/de/)
103
+ - 🇨🇳 **中文**:[快速开始](./docs/zh/getting-started.md)、[主题](./docs/zh/theming.md)、[Tokens](./docs/zh/tokens.md)、[图标](./docs/zh/icons.md)、[Patterns](./docs/zh/patterns.md)、[表单校验](./docs/zh/validation.md)、[图表](./docs/zh/charts.md)、[i18n](./docs/zh/i18n.md)
104
+
105
+ 贡献者文档(仅英文):[Architecture](./docs/ARCHITECTURE.md)、[Component guidelines](./docs/COMPONENT_GUIDELINES.md)、[Contributing](./docs/CONTRIBUTING.md)、[Roadmap](./docs/ROADMAP.md)。
106
+
107
+ ## 主题
108
+
109
+ 所有颜色、间距、字体都是 CSS 变量。覆盖主题——在 `:root` 或容器上设置 token:
110
+
111
+ ```css
112
+ :root[data-theme='dark'] {
113
+ --uid-color-primary: #8b5cf6;
114
+ --uid-color-bg: #0a0a0a;
115
+ }
116
+ ```
117
+
118
+ 详见 [主题](./docs/zh/theming.md) 与 [Tokens](./docs/zh/tokens.md)。
119
+
120
+ ## 图标
121
+
122
+ 子导出 `@dskripchenko/ui/icons` re-export 了全部 ~1500 个 Lucide 图标:
123
+
124
+ ```ts
125
+ import { UidIcon } from '@dskripchenko/ui'
126
+ import { Heart, Star } from '@dskripchenko/ui/icons'
127
+ ```
128
+
129
+ 详见 [图标](./docs/zh/icons.md)。
130
+
131
+ ## 开发
132
+
133
+ ```bash
134
+ pnpm install
135
+ pnpm dev # Storybook,端口 6006
136
+ pnpm test # Vitest
137
+ pnpm build # 库构建
138
+ pnpm build-storybook # Storybook → storybook-static
139
+ pnpm build:analyze # Bundle visualizer
140
+ pnpm changeset # 描述下一次发布的变更
141
+ ```
142
+
143
+ ## 许可证
144
+
145
+ MIT