@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 +21 -0
- package/README.de.md +145 -0
- package/README.md +58 -70
- package/README.ru.md +143 -0
- package/README.zh.md +145 -0
- package/dist/components/Gauge/UidGauge.vue.d.ts +36 -0
- package/dist/components/Gauge/index.d.ts +2 -0
- package/dist/components/Heatmap/UidHeatmap.vue.d.ts +31 -0
- package/dist/components/Heatmap/index.d.ts +2 -0
- package/dist/components/ProgressRing/UidProgressRing.vue.d.ts +40 -0
- package/dist/components/ProgressRing/index.d.ts +2 -0
- package/dist/components/Sparkline/UidSparkline.vue.d.ts +25 -0
- package/dist/components/Sparkline/index.d.ts +2 -0
- package/dist/components/Stat/UidStat.vue.d.ts +2 -0
- package/dist/components/TreeView/UidTreeItem.vue.d.ts +3 -1
- package/dist/components/TreeView/context.d.ts +6 -0
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +8 -0
- package/dist/index.mjs +1255 -572
- package/dist/styles/index.css +1 -1
- package/package.json +34 -1
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
|
+
[](https://www.npmjs.com/package/@dskripchenko/ui)
|
|
8
|
+
[](https://bundlephobia.com/package/@dskripchenko/ui)
|
|
9
|
+
[](./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
|
-
|
|
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
|
[](https://www.npmjs.com/package/@dskripchenko/ui)
|
|
6
8
|
[](https://bundlephobia.com/package/@dskripchenko/ui)
|
|
7
9
|
[](./LICENSE)
|
|
8
10
|
|
|
9
|
-
>
|
|
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
|
-
- **
|
|
16
|
-
- **Vue 3 + TypeScript** — Composition API, `<script setup>`,
|
|
17
|
-
- **CSS custom properties** —
|
|
18
|
-
- **Light / Dark
|
|
19
|
-
- **Tree-
|
|
20
|
-
- **A11y** — `:focus-visible`, ARIA
|
|
21
|
-
-
|
|
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
|
-
<
|
|
53
|
-
<
|
|
54
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
76
|
+
**Feedback:** Spinner, Skeleton, Badge, Alert, Progress, Toast, Tour
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
**Overlays:** Modal, Drawer, Tooltip, Popover, Menu, Command
|
|
79
79
|
|
|
80
|
-
|
|
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
|
-
|
|
84
|
+
**Layout helpers:** Stack, Grid, Container, Splitter
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
**Charts:** Sparkline, ProgressRing, Gauge, Heatmap
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
**Wizards:** Stepper, Wizard, WizardStep
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
**Patterns:** Header, Footer, Sidebar, PageHeader, EmptyState, ErrorState, Result
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
**Layouts:** SimpleLayout, SidebarLayout, AuthLayout, WizardLayout
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
**Composables:** useTheme, useLocale, useField, useToast, useWizard, useSidebar, useCommandPalette, useFocusTrap, useScrollLock, usePopover
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
## Documentation
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
User docs are translated into four languages — pick yours:
|
|
99
99
|
|
|
100
|
-
|
|
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
|
-
|
|
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
|
-
|
|
107
|
+
## Theming
|
|
105
108
|
|
|
106
|
-
|
|
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
|
-
|
|
118
|
+
See [theming](./docs/en/theming.md) and [tokens](./docs/en/tokens.md) for details.
|
|
120
119
|
|
|
121
|
-
##
|
|
120
|
+
## Icons
|
|
122
121
|
|
|
123
|
-
|
|
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
|
-
|
|
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
|
|
149
|
-
pnpm test
|
|
150
|
-
pnpm build
|
|
151
|
-
pnpm build-storybook
|
|
152
|
-
pnpm
|
|
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
|
+
[](https://www.npmjs.com/package/@dskripchenko/ui)
|
|
8
|
+
[](https://bundlephobia.com/package/@dskripchenko/ui)
|
|
9
|
+
[](./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
|
+
[](https://www.npmjs.com/package/@dskripchenko/ui)
|
|
8
|
+
[](https://bundlephobia.com/package/@dskripchenko/ui)
|
|
9
|
+
[](./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
|