@codemonster-ru/vueforge 0.60.0 → 0.62.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/README.md CHANGED
@@ -58,6 +58,7 @@ import {
58
58
  Switch,
59
59
  SegmentedControl,
60
60
  Alert,
61
+ EmptyState,
61
62
  Skeleton,
62
63
  Progress,
63
64
  Badge,
@@ -66,6 +67,8 @@ import {
66
67
  Accordion,
67
68
  AccordionItem,
68
69
  Slider,
70
+ Splitter,
71
+ SplitterPanel,
69
72
  Stepper,
70
73
  Timeline,
71
74
  Rating,
@@ -147,6 +150,7 @@ app.use(VueForge, {
147
150
  ]"
148
151
  />
149
152
  <Alert severity="info" title="Heads up" message="Project settings were updated." />
153
+ <EmptyState title="No projects yet" description="Create your first project to get started." icon="📂" />
150
154
  <Skeleton height="12px" width="140px" />
151
155
  <Progress :value="64" />
152
156
  <Badge label="Beta" />
@@ -160,6 +164,10 @@ app.use(VueForge, {
160
164
  clearable
161
165
  />
162
166
  <Slider v-model="volume" :min="0" :max="100" :step="5" show-value />
167
+ <Splitter v-model="splitSizes" style="height: 280px">
168
+ <SplitterPanel :min-size="20">Left panel</SplitterPanel>
169
+ <SplitterPanel :min-size="20">Right panel</SplitterPanel>
170
+ </Splitter>
163
171
  <Stepper v-model="step" :steps="steps" clickable />
164
172
  <Timeline :items="timelineItems" />
165
173
  <Rating v-model="rating" allow-half />
@@ -231,6 +239,7 @@ app.use(VueForge, {
231
239
  - Toast
232
240
  - ToastContainer
233
241
  - Alert
242
+ - EmptyState
234
243
  - Input
235
244
  - InputGroup
236
245
  - InputAddon
@@ -278,6 +287,8 @@ app.use(VueForge, {
278
287
  - FilterChips
279
288
  - Avatar
280
289
  - Slider
290
+ - Splitter
291
+ - SplitterPanel
281
292
  - Stepper
282
293
  - Timeline
283
294
  - Rating
@@ -289,6 +300,7 @@ Input / InputGroup / Search / Password / Textarea (quick API):
289
300
 
290
301
  - `Input`: single-line control, supports `v-model`, `size`, `variant`, `disabled`, `readonly`.
291
302
  - `InputGroup`: horizontal control combiner for field/addon/button layouts with unified corners and borders.
303
+ - `EmptyState`: reusable empty-data block with icon/title/description/actions for table/list/search blank states.
292
304
  - `InlineEdit`: inline value editing with view/edit states, save/cancel actions, and text/number modes.
293
305
  - `SearchInput`: search-focused control with `debounce`, `clearable`, `loading`, `size`, and `variant`.
294
306
  - `MentionInput`: text input with `@`/`#` triggers, suggestions panel, keyboard selection, and mention insertion events.
@@ -297,6 +309,7 @@ Input / InputGroup / Search / Password / Textarea (quick API):
297
309
  - `ColorPicker`: color control with presets, optional alpha channel, and output formats (`hex`/`rgb`/`hsl`).
298
310
  - `MaskedInput`: formatted input control with string/function masks and optional raw output (`unmask`).
299
311
  - `NumberInput`: numeric control, supports `v-model`, `min`, `max`, `step`, `precision`, `controls`, `size`, `variant`.
312
+ - `Splitter`: resizable multi-panel container with draggable separators and `v-model` percentage sizes.
300
313
  - `Textarea`: multi-line control, same as Input plus `rows`.
301
314
  - `TagInput`: token/tag control, supports `v-model` (array), suggestions, custom tags, `maxTags`, `clearable`, `size`, `variant`.
302
315
  - `FilterChips`: compact chip-based filter toggles with single/multiple selection modes and optional clear action.
@@ -1666,6 +1679,47 @@ Component tokens (override via `theme.overrides.components.alert`):
1666
1679
  - `actionsGap`, `closeSize`, `closeRadius`, `closeFontSize`, `closeHoverBackgroundColor`
1667
1680
  - `info.*`, `success.*`, `warn.*`, `danger.*` (backgroundColor/borderColor/textColor)
1668
1681
 
1682
+ ## EmptyState
1683
+
1684
+ Props:
1685
+
1686
+ - `title?: string`
1687
+ - `description?: string`
1688
+ - `icon?: string`
1689
+ - `size?: 'small' | 'normal' | 'large'` (default `normal`)
1690
+ - `variant?: 'filled' | 'outlined'` (default `filled`)
1691
+
1692
+ Slots:
1693
+
1694
+ - `default` - description content (fallbacks to `description`)
1695
+ - `title` (optional)
1696
+ - `icon` (optional)
1697
+ - `actions` (optional)
1698
+
1699
+ Example:
1700
+
1701
+ ```vue
1702
+ <EmptyState title="No projects yet" description="Create your first project to get started." icon="📂">
1703
+ <template #actions>
1704
+ <Button label="Create project" size="small" />
1705
+ <Button label="Import" size="small" severity="secondary" />
1706
+ </template>
1707
+ </EmptyState>
1708
+ ```
1709
+
1710
+ ### EmptyState tokens
1711
+
1712
+ Component tokens (override via `theme.overrides.components.emptyState`):
1713
+
1714
+ - `gap`, `bodyGap`, `padding`, `borderRadius`
1715
+ - `borderColor`, `backgroundColor`, `textColor`, `maxWidth`
1716
+ - `iconSize`, `iconColor`
1717
+ - `titleFontSize`, `titleLineHeight`, `titleFontWeight`, `titleColor`
1718
+ - `descriptionFontSize`, `descriptionLineHeight`, `descriptionColor`
1719
+ - `actionsGap`
1720
+ - `small.padding`, `small.iconSize`, `small.titleFontSize`, `small.descriptionFontSize`
1721
+ - `large.padding`, `large.iconSize`, `large.titleFontSize`, `large.descriptionFontSize`
1722
+
1669
1723
  ### Textarea tokens
1670
1724
 
1671
1725
  Component tokens (override via `theme.overrides.components.textarea`):
@@ -2273,6 +2327,45 @@ Component tokens (override via `theme.overrides.components.slider`):
2273
2327
  - `small.trackHeight`, `small.thumbSize`, `small.valueFontSize`
2274
2328
  - `large.trackHeight`, `large.thumbSize`, `large.valueFontSize`
2275
2329
 
2330
+ ## Splitter / SplitterPanel
2331
+
2332
+ Props (`Splitter`):
2333
+
2334
+ - `modelValue?: number[]` (v-model panel sizes in %)
2335
+ - `minSizes?: number[]` (panel minimum sizes in %)
2336
+ - `direction?: 'horizontal' | 'vertical'` (default `horizontal`)
2337
+ - `gutterSize?: number | string` (default `8`)
2338
+ - `disabled?: boolean` (default `false`)
2339
+
2340
+ Props (`SplitterPanel`):
2341
+
2342
+ - `size?: number` (initial panel size in % when `v-model` is not provided)
2343
+ - `minSize?: number` (minimum panel size in %)
2344
+
2345
+ Events (`Splitter`):
2346
+
2347
+ - `update:modelValue`
2348
+ - `change`
2349
+
2350
+ Example:
2351
+
2352
+ ```vue
2353
+ <Splitter v-model="splitSizes" :min-sizes="[20, 20]" style="height: 280px">
2354
+ <SplitterPanel>Navigation</SplitterPanel>
2355
+ <SplitterPanel>Content</SplitterPanel>
2356
+ </Splitter>
2357
+ ```
2358
+
2359
+ ### Splitter tokens
2360
+
2361
+ Component tokens (override via `theme.overrides.components.splitter`):
2362
+
2363
+ - `borderColor`, `borderRadius`
2364
+ - `panelBackgroundColor`
2365
+ - `handleWidth`, `handleHeight`, `handleRadius`, `handleColor`
2366
+ - `gutterActiveBackgroundColor`
2367
+ - `disabledOpacity`
2368
+
2276
2369
  ## Stepper
2277
2370
 
2278
2371
  Props:
@@ -2559,7 +2652,7 @@ VueForge exposes design tokens as CSS variables generated from the theme preset.
2559
2652
  Typed tokens:
2560
2653
 
2561
2654
  - `ThemeTokens`/`ThemeOptions`/`ThemePreset` are exported for type-safe theming in TS.
2562
- - `components.*` accepts component-specific tokens (typed keys: button/card/checkbox/radio/tabs/accordion/toast/alert/input/inputGroup/inlineEdit/searchInput/mentionInput/passwordInput/otpInput/colorPicker/maskedInput/numberInput/form/formField/textarea/link/breadcrumbs/menu/modal/confirmDialog/drawer/popover/dropdown/contextMenu/commandPalette/select/autocomplete/combobox/multiselect/taginput/datepicker/calendar/daterangepicker/timepicker/datetimepicker/pagination/switch/segmentedControl/tooltip/skeleton/progress/badge/chip/filterChips/avatar/datatable/slider/stepper/rating/tree/treeselect/virtualScroller).
2655
+ - `components.*` accepts component-specific tokens (typed keys: button/card/checkbox/radio/tabs/accordion/toast/alert/emptyState/input/inputGroup/inlineEdit/searchInput/mentionInput/passwordInput/otpInput/colorPicker/maskedInput/numberInput/form/formField/textarea/link/breadcrumbs/menu/modal/confirmDialog/drawer/popover/dropdown/contextMenu/commandPalette/select/autocomplete/combobox/multiselect/taginput/datepicker/calendar/daterangepicker/timepicker/datetimepicker/pagination/switch/segmentedControl/tooltip/skeleton/progress/badge/chip/filterChips/avatar/datatable/slider/splitter/stepper/rating/tree/treeselect/virtualScroller).
2563
2656
 
2564
2657
  Default core values (from `DefaultTheme`):
2565
2658