@codemonster-ru/vueforge 0.62.0 → 0.64.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
@@ -70,6 +70,8 @@ import {
70
70
  Splitter,
71
71
  SplitterPanel,
72
72
  Stepper,
73
+ Wizard,
74
+ WizardStep,
73
75
  Timeline,
74
76
  Rating,
75
77
  Tree,
@@ -81,6 +83,7 @@ import {
81
83
  SplitButton,
82
84
  ContextMenu,
83
85
  CommandPalette,
86
+ Tour,
84
87
  } from '@codemonster-ru/vueforge';
85
88
  import '@codemonster-ru/vueforge/dist/index.css';
86
89
 
@@ -169,6 +172,10 @@ app.use(VueForge, {
169
172
  <SplitterPanel :min-size="20">Right panel</SplitterPanel>
170
173
  </Splitter>
171
174
  <Stepper v-model="step" :steps="steps" clickable />
175
+ <Wizard v-model="wizardStep" :steps="wizardSteps">
176
+ <WizardStep value="account">Account step</WizardStep>
177
+ <WizardStep value="confirm">Confirm step</WizardStep>
178
+ </Wizard>
172
179
  <Timeline :items="timelineItems" />
173
180
  <Rating v-model="rating" allow-half />
174
181
  <Tree v-model="selectedNode" v-model:expandedKeys="expandedKeys" :items="treeItems" />
@@ -221,6 +228,7 @@ app.use(VueForge, {
221
228
  { label: 'Save as draft', value: 'draft', group: 'Actions' },
222
229
  ]"
223
230
  />
231
+ <Tour v-model="tourOpen" :steps="tourSteps" />
224
232
  ```
225
233
 
226
234
  ## Components
@@ -265,6 +273,7 @@ app.use(VueForge, {
265
273
  - SplitButton
266
274
  - ContextMenu
267
275
  - CommandPalette
276
+ - Tour
268
277
  - Popover
269
278
  - Select
270
279
  - Autocomplete
@@ -290,6 +299,8 @@ app.use(VueForge, {
290
299
  - Splitter
291
300
  - SplitterPanel
292
301
  - Stepper
302
+ - Wizard
303
+ - WizardStep
293
304
  - Timeline
294
305
  - Rating
295
306
  - Tree
@@ -310,6 +321,8 @@ Input / InputGroup / Search / Password / Textarea (quick API):
310
321
  - `MaskedInput`: formatted input control with string/function masks and optional raw output (`unmask`).
311
322
  - `NumberInput`: numeric control, supports `v-model`, `min`, `max`, `step`, `precision`, `controls`, `size`, `variant`.
312
323
  - `Splitter`: resizable multi-panel container with draggable separators and `v-model` percentage sizes.
324
+ - `Tour`: guided step-by-step onboarding overlay anchored to target elements.
325
+ - `Wizard`: multi-step flow container with linear navigation, per-step validation, and completion events.
313
326
  - `Textarea`: multi-line control, same as Input plus `rows`.
314
327
  - `TagInput`: token/tag control, supports `v-model` (array), suggestions, custom tags, `maxTags`, `clearable`, `size`, `variant`.
315
328
  - `FilterChips`: compact chip-based filter toggles with single/multiple selection modes and optional clear action.
@@ -2044,6 +2057,74 @@ Component tokens (override via `theme.overrides.components.commandPalette`):
2044
2057
  - `shortcutBackgroundColor`, `shortcutTextColor`, `shortcutFontSize`
2045
2058
  - `emptyPadding`, `emptyColor`
2046
2059
 
2060
+ ## Tour
2061
+
2062
+ Props:
2063
+
2064
+ - `modelValue?: boolean` (v-model)
2065
+ - `steps?: Array<{ target?: string | HTMLElement; title?: string; content?: string; placement?: 'top' | 'bottom' | 'left' | 'right'; offset?: number }>`
2066
+ - `startIndex?: number` (default `0`)
2067
+ - `placement?: 'top' | 'bottom' | 'left' | 'right'` (default `bottom`)
2068
+ - `offset?: number` (default `10`)
2069
+ - `mask?: boolean` (default `true`)
2070
+ - `closeOnOverlay?: boolean` (default `true`)
2071
+ - `closeOnEsc?: boolean` (default `true`)
2072
+ - `showSkip?: boolean` (default `true`)
2073
+ - `showProgress?: boolean` (default `true`)
2074
+ - `spotlightPadding?: number` (default `6`)
2075
+ - `nextLabel?: string` (default `Next`)
2076
+ - `prevLabel?: string` (default `Back`)
2077
+ - `finishLabel?: string` (default `Finish`)
2078
+ - `skipLabel?: string` (default `Skip`)
2079
+ - `ariaLabel?: string` (default `Tour`)
2080
+
2081
+ Slots:
2082
+
2083
+ - `default` - step content with slot props `{ step, index }`
2084
+ - `title` (optional) - step title with slot props `{ step, index }`
2085
+ - `actions` (optional) - custom actions with slot props `{ step, index, isFirst, isLast, prev, next, skip }`
2086
+
2087
+ Events:
2088
+
2089
+ - `update:modelValue`
2090
+ - `open`
2091
+ - `close` (payload reason: `overlay | esc | complete | skip`)
2092
+ - `stepChange`
2093
+ - `next`
2094
+ - `prev`
2095
+ - `complete`
2096
+ - `skip`
2097
+
2098
+ Example:
2099
+
2100
+ ```vue
2101
+ <Tour
2102
+ v-model="tourOpen"
2103
+ :steps="[
2104
+ { target: '#tour-start', title: 'Start', content: 'Launch onboarding here.' },
2105
+ { target: '#tour-search', title: 'Search', content: 'Find projects quickly.', placement: 'bottom' },
2106
+ ]"
2107
+ />
2108
+ ```
2109
+
2110
+ ### Tour tokens
2111
+
2112
+ Component tokens (override via `theme.overrides.components.tour`):
2113
+
2114
+ - `zIndex`, `overlayBackgroundColor`
2115
+ - `width`, `maxWidth`, `padding`
2116
+ - `borderRadius`, `borderColor`
2117
+ - `backgroundColor`, `textColor`, `shadow`
2118
+ - `titleGap`, `titleFontSize`, `titleLineHeight`, `titleFontWeight`
2119
+ - `contentGap`, `contentFontSize`, `contentLineHeight`, `contentColor`
2120
+ - `progressGap`, `progressFontSize`, `progressColor`
2121
+ - `actionsGap`
2122
+ - `buttonMinWidth`, `buttonPadding`, `buttonRadius`
2123
+ - `buttonBorderColor`, `buttonBackgroundColor`, `buttonTextColor`, `buttonHoverBackgroundColor`
2124
+ - `secondaryButtonBorderColor`, `secondaryButtonBackgroundColor`, `secondaryButtonTextColor`, `secondaryButtonHoverBackgroundColor`
2125
+ - `spotlightRadius`, `spotlightBorderWidth`, `spotlightBorderColor`
2126
+ - `disabledOpacity`
2127
+
2047
2128
  ## Tooltip
2048
2129
 
2049
2130
  Props:
@@ -2405,6 +2486,74 @@ Component tokens (override via `theme.overrides.components.stepper`):
2405
2486
  - `small.indicatorSize`, `small.indicatorFontSize`, `small.labelFontSize`, `small.descriptionFontSize`, `small.lineLength`, `small.itemGap`
2406
2487
  - `large.indicatorSize`, `large.indicatorFontSize`, `large.labelFontSize`, `large.descriptionFontSize`, `large.lineLength`, `large.itemGap`
2407
2488
 
2489
+ ## Wizard / WizardStep
2490
+
2491
+ Props (`Wizard`):
2492
+
2493
+ - `modelValue?: string | number` (v-model active step value)
2494
+ - `steps?: Array<{ value: string | number; title?: string; description?: string; optional?: boolean; disabled?: boolean; validate?: (value, index) => boolean | string | Promise<...> }>`
2495
+ - `linear?: boolean` (default `true`)
2496
+ - `disabled?: boolean` (default `false`)
2497
+ - `nextLabel?: string` (default `Next`)
2498
+ - `prevLabel?: string` (default `Back`)
2499
+ - `finishLabel?: string` (default `Finish`)
2500
+ - `validateStep?: (step, index, value) => boolean | string | Promise<...>`
2501
+ - `ariaLabel?: string`
2502
+ - `ariaLabelledby?: string`
2503
+
2504
+ Props (`WizardStep`):
2505
+
2506
+ - `value: string | number` (must match one of `Wizard.steps[].value`)
2507
+
2508
+ Slots (`Wizard`):
2509
+
2510
+ - `default` - place `WizardStep` components
2511
+ - `indicator` (optional) - slot props `{ step, index }`
2512
+ - `actions` (optional) - slot props `{ step, index, isFirst, isLast, next, prev, complete }`
2513
+
2514
+ Events (`Wizard`):
2515
+
2516
+ - `update:modelValue`
2517
+ - `change`
2518
+ - `next`
2519
+ - `prev`
2520
+ - `complete`
2521
+ - `invalidStep`
2522
+
2523
+ Example:
2524
+
2525
+ ```vue
2526
+ <Wizard v-model="wizardStep" :steps="wizardSteps">
2527
+ <WizardStep value="account">
2528
+ <Input v-model="email" placeholder="Email" />
2529
+ </WizardStep>
2530
+ <WizardStep value="plan">
2531
+ <Select v-model="plan" :options="plans" />
2532
+ </WizardStep>
2533
+ <WizardStep value="confirm">
2534
+ Review and finish
2535
+ </WizardStep>
2536
+ </Wizard>
2537
+ ```
2538
+
2539
+ ### Wizard tokens
2540
+
2541
+ Component tokens (override via `theme.overrides.components.wizard`):
2542
+
2543
+ - `gap`, `borderColor`, `headerPaddingBottom`
2544
+ - `itemGap`, `stepGap`
2545
+ - `indicatorSize`, `indicatorBorderRadius`, `indicatorFontSize`
2546
+ - `indicatorBorderColor`, `indicatorBackgroundColor`, `indicatorTextColor`
2547
+ - `activeIndicatorBorderColor`, `activeIndicatorBackgroundColor`, `activeIndicatorTextColor`
2548
+ - `completedIndicatorBorderColor`, `completedIndicatorBackgroundColor`, `completedIndicatorTextColor`
2549
+ - `errorIndicatorBorderColor`, `errorIndicatorBackgroundColor`, `errorIndicatorTextColor`
2550
+ - `titleFontSize`, `titleColor`, `descriptionFontSize`, `descriptionColor`
2551
+ - `actionsGap`
2552
+ - `buttonMinWidth`, `buttonPadding`, `buttonBorderRadius`
2553
+ - `buttonBorderColor`, `buttonBackgroundColor`, `buttonTextColor`, `buttonHoverBackgroundColor`
2554
+ - `secondaryButtonBorderColor`, `secondaryButtonBackgroundColor`, `secondaryButtonTextColor`, `secondaryButtonHoverBackgroundColor`
2555
+ - `disabledOpacity`
2556
+
2408
2557
  ## Timeline
2409
2558
 
2410
2559
  Props:
@@ -2652,7 +2801,7 @@ VueForge exposes design tokens as CSS variables generated from the theme preset.
2652
2801
  Typed tokens:
2653
2802
 
2654
2803
  - `ThemeTokens`/`ThemeOptions`/`ThemePreset` are exported for type-safe theming in TS.
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).
2804
+ - `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/tour/select/autocomplete/combobox/multiselect/taginput/datepicker/calendar/daterangepicker/timepicker/datetimepicker/pagination/switch/segmentedControl/tooltip/skeleton/progress/badge/chip/filterChips/avatar/datatable/slider/splitter/stepper/wizard/rating/tree/treeselect/virtualScroller).
2656
2805
 
2657
2806
  Default core values (from `DefaultTheme`):
2658
2807