@codemonster-ru/vueforge 0.44.0 → 0.46.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
@@ -27,6 +27,7 @@ import {
27
27
  DefaultTheme,
28
28
  Button,
29
29
  Input,
30
+ PasswordInput,
30
31
  NumberInput,
31
32
  FormField,
32
33
  Textarea,
@@ -35,6 +36,7 @@ import {
35
36
  Select,
36
37
  Autocomplete,
37
38
  MultiSelect,
39
+ TagInput,
38
40
  DatePicker,
39
41
  DateRangePicker,
40
42
  TimePicker,
@@ -78,6 +80,7 @@ app.use(VueForge, {
78
80
  <FormField label="Name" hint="Required field">
79
81
  <Input v-model="name" placeholder="Your name" />
80
82
  </FormField>
83
+ <PasswordInput v-model="password" placeholder="Enter password" show-strength />
81
84
  <NumberInput v-model="age" :min="0" :max="120" :step="1" />
82
85
  <Textarea v-model="bio" placeholder="Tell us about yourself" />
83
86
  <FileUpload v-model="resume" accept=".pdf,.doc,.docx" />
@@ -85,6 +88,7 @@ app.use(VueForge, {
85
88
  <Select v-model="role" :options="roles" placeholder="Choose role" />
86
89
  <Autocomplete v-model="country" :options="countries" placeholder="Find country" />
87
90
  <MultiSelect v-model="countries" :options="countryOptions" placeholder="Select countries" clearable />
91
+ <TagInput v-model="skills" :options="skillOptions" placeholder="Add skills" clearable />
88
92
  <DatePicker v-model="birthday" placeholder="Pick birthday" />
89
93
  <DateRangePicker v-model="range" placeholder="Pick range" />
90
94
  <TimePicker v-model="meetingTime" placeholder="Pick time" />
@@ -168,6 +172,7 @@ app.use(VueForge, {
168
172
  - ToastContainer
169
173
  - Alert
170
174
  - Input
175
+ - PasswordInput
171
176
  - NumberInput
172
177
  - FormField
173
178
  - Textarea
@@ -186,6 +191,7 @@ app.use(VueForge, {
186
191
  - Select
187
192
  - Autocomplete
188
193
  - MultiSelect
194
+ - TagInput
189
195
  - DatePicker
190
196
  - DateRangePicker
191
197
  - TimePicker
@@ -205,12 +211,14 @@ app.use(VueForge, {
205
211
  - TreeSelect
206
212
  - VirtualScroller
207
213
 
208
- Input / Textarea (quick API):
214
+ Input / Password / Textarea (quick API):
209
215
 
210
216
  - `Input`: single-line control, supports `v-model`, `size`, `variant`, `disabled`, `readonly`.
217
+ - `PasswordInput`: password control, supports visibility toggle, strength meter, CapsLock hint, `size`, and `variant`.
211
218
  - `NumberInput`: numeric control, supports `v-model`, `min`, `max`, `step`, `precision`, `controls`, `size`, `variant`.
212
219
  - `Textarea`: multi-line control, same as Input plus `rows`.
213
- - `Checkbox`, `Select`, `Autocomplete`, `MultiSelect`, `DatePicker`, `DateRangePicker`, `Pagination`, `DataTable`, and `TreeSelect` also support `variant: 'filled' | 'outlined'`.
220
+ - `TagInput`: token/tag control, supports `v-model` (array), suggestions, custom tags, `maxTags`, `clearable`, `size`, `variant`.
221
+ - `Checkbox`, `Select`, `Autocomplete`, `MultiSelect`, `TagInput`, `DatePicker`, `DateRangePicker`, `Pagination`, `DataTable`, and `TreeSelect` also support `variant: 'filled' | 'outlined'`.
214
222
 
215
223
  ## FormField
216
224
 
@@ -309,6 +317,66 @@ Example:
309
317
  <MultiSelect v-model="countries" :options="countryOptions" placeholder="Select countries" clearable />
310
318
  ```
311
319
 
320
+ ## TagInput
321
+
322
+ Props:
323
+
324
+ - `modelValue?: Array<string | number>` (v-model)
325
+ - `options?: Array<{ label: string; value: string | number; disabled?: boolean }>`
326
+ - `optionLabel?: string` (default `label`)
327
+ - `optionValue?: string` (default `value`)
328
+ - `placeholder?: string`
329
+ - `disabled?: boolean`
330
+ - `readonly?: boolean`
331
+ - `loading?: boolean`
332
+ - `loadingText?: string` (default `Loading...`)
333
+ - `emptyText?: string` (default `No results`)
334
+ - `filter?: boolean` (default `true`)
335
+ - `allowCustom?: boolean` (default `true`)
336
+ - `maxTags?: number`
337
+ - `clearable?: boolean` (default `false`)
338
+ - `validateTag?: (value: string) => boolean`
339
+ - `size?: 'small' | 'normal' | 'large'` (default `normal`)
340
+ - `variant?: 'filled' | 'outlined'` (default `filled`)
341
+
342
+ Events:
343
+
344
+ - `update:modelValue`
345
+ - `change`
346
+ - `search`
347
+ - `add` (payload: `{ value: string | number; source: 'option' | 'custom' }`)
348
+ - `remove`
349
+ - `reject` (payload: `{ reason: 'duplicate' | 'maxTags' | 'invalid' | 'readonly'; value: string }`)
350
+ - `focus`
351
+ - `blur`
352
+
353
+ Example:
354
+
355
+ ```vue
356
+ <TagInput v-model="skills" :options="skillOptions" placeholder="Add skills" clearable />
357
+ ```
358
+
359
+ ### TagInput tokens
360
+
361
+ Component tokens (override via `theme.overrides.components.taginput`):
362
+
363
+ - `minWidth`, `minHeight`, `fontSize`, `controlGap`, `chevronSize`
364
+ - `padding`, `borderRadius`, `borderColor`
365
+ - `backgroundColor`, `textColor`, `placeholderColor`
366
+ - `focusBorderColor`, `focusRingShadow`, `hoverBorderColor`
367
+ - `disabledOpacity`
368
+ - `panelBackgroundColor`, `panelBorderColor`, `panelPadding`, `panelMaxHeight`, `panelRadiusOffset`, `panelShadow`
369
+ - `optionPadding`, `optionBorderRadius`
370
+ - `optionHoverBackgroundColor`, `optionHighlightedBackgroundColor`
371
+ - `emptyPadding`, `emptyColor`
372
+ - `loadingPadding`, `loadingColor`
373
+ - `inputMinWidth`
374
+ - `chipGap`, `chipPadding`, `chipRadius`, `chipBackgroundColor`, `chipTextColor`, `chipFontSize`
375
+ - `chipRemoveSize`, `chipRemoveRadius`, `chipRemoveHoverBackgroundColor`
376
+ - `clearSize`, `clearRadius`, `clearHoverBackgroundColor`
377
+ - `small.fontSize`, `small.padding`, `small.chipPadding`, `small.chipFontSize`
378
+ - `large.fontSize`, `large.padding`, `large.chipPadding`, `large.chipFontSize`
379
+
312
380
  ### MultiSelect tokens
313
381
 
314
382
  Component tokens (override via `theme.overrides.components.multiselect`):
@@ -647,6 +715,61 @@ Example:
647
715
  <NumberInput v-model="quantity" :min="0" :max="10" :step="1" />
648
716
  ```
649
717
 
718
+ ## PasswordInput
719
+
720
+ Props:
721
+
722
+ - `modelValue?: string` (v-model)
723
+ - `placeholder?: string`
724
+ - `disabled?: boolean`
725
+ - `readonly?: boolean`
726
+ - `autocomplete?: string` (default `current-password`)
727
+ - `showToggle?: boolean` (default `true`)
728
+ - `showStrength?: boolean` (default `false`)
729
+ - `showCapsLockHint?: boolean` (default `true`)
730
+ - `revealLabel?: string` (default `Show password`)
731
+ - `hideLabel?: string` (default `Hide password`)
732
+ - `revealText?: string` (default `Show`)
733
+ - `hideText?: string` (default `Hide`)
734
+ - `capsLockHint?: string` (default `Caps Lock is on`)
735
+ - `weakLabel?: string` (default `Weak password`)
736
+ - `mediumLabel?: string` (default `Medium password`)
737
+ - `strongLabel?: string` (default `Strong password`)
738
+ - `size?: 'small' | 'normal' | 'large'` (default `normal`)
739
+ - `variant?: 'filled' | 'outlined'` (default `filled`)
740
+ - `ariaLabel?: string` (default `Password input`)
741
+
742
+ Events:
743
+
744
+ - `update:modelValue`
745
+ - `input`
746
+ - `change`
747
+ - `focus`
748
+ - `blur`
749
+ - `toggleVisibility` (payload: `boolean`)
750
+
751
+ Example:
752
+
753
+ ```vue
754
+ <PasswordInput v-model="password" show-strength />
755
+ ```
756
+
757
+ ### PasswordInput tokens
758
+
759
+ Component tokens (override via `theme.overrides.components.passwordInput`):
760
+
761
+ - `gap`, `fontSize`, `padding`
762
+ - `borderRadius`, `borderColor`
763
+ - `backgroundColor`, `textColor`, `placeholderColor`
764
+ - `focusBorderColor`, `focusRingShadow`, `hoverBorderColor`
765
+ - `disabledOpacity`
766
+ - `toggleSize`, `toggleRadius`, `toggleColor`, `toggleHoverBackgroundColor`
767
+ - `strengthGap`, `strengthTrackHeight`, `strengthTrackRadius`, `strengthTrackBackgroundColor`
768
+ - `strengthWeakColor`, `strengthMediumColor`, `strengthStrongColor`
769
+ - `metaFontSize`, `hintColor`
770
+ - `small.fontSize`, `small.padding`
771
+ - `large.fontSize`, `large.padding`
772
+
650
773
  ## RadioGroup / RadioButton
651
774
 
652
775
  Props (RadioGroup):
@@ -1675,7 +1798,7 @@ VueForge exposes design tokens as CSS variables generated from the theme preset.
1675
1798
  Typed tokens:
1676
1799
 
1677
1800
  - `ThemeTokens`/`ThemeOptions`/`ThemePreset` are exported for type-safe theming in TS.
1678
- - `components.*` accepts component-specific tokens (typed keys: button/card/checkbox/radio/tabs/accordion/toast/alert/input/numberInput/formField/textarea/link/breadcrumbs/menu/modal/confirmDialog/drawer/popover/dropdown/contextMenu/commandPalette/select/autocomplete/multiselect/datepicker/daterangepicker/timepicker/pagination/switch/tooltip/skeleton/progress/badge/chip/avatar/datatable/slider/stepper/rating/tree/treeselect/virtualScroller).
1801
+ - `components.*` accepts component-specific tokens (typed keys: button/card/checkbox/radio/tabs/accordion/toast/alert/input/passwordInput/numberInput/formField/textarea/link/breadcrumbs/menu/modal/confirmDialog/drawer/popover/dropdown/contextMenu/commandPalette/select/autocomplete/multiselect/taginput/datepicker/daterangepicker/timepicker/pagination/switch/tooltip/skeleton/progress/badge/chip/avatar/datatable/slider/stepper/rating/tree/treeselect/virtualScroller).
1679
1802
 
1680
1803
  Default core values (from `DefaultTheme`):
1681
1804