@codemonster-ru/vueforge 0.49.0 → 0.51.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
+ SearchInput,
30
31
  PasswordInput,
31
32
  OtpInput,
32
33
  ColorPicker,
@@ -43,6 +44,7 @@ import {
43
44
  DatePicker,
44
45
  DateRangePicker,
45
46
  TimePicker,
47
+ DateTimePicker,
46
48
  Pagination,
47
49
  DataTable,
48
50
  Checkbox,
@@ -83,6 +85,7 @@ app.use(VueForge, {
83
85
  <FormField label="Name" hint="Required field">
84
86
  <Input v-model="name" placeholder="Your name" />
85
87
  </FormField>
88
+ <SearchInput v-model="query" placeholder="Search components" clearable />
86
89
  <PasswordInput v-model="password" placeholder="Enter password" show-strength />
87
90
  <OtpInput v-model="otp" :length="6" />
88
91
  <ColorPicker v-model="brandColor" :presets="['#2b6cb0', '#0cbc87', '#d6293e']" />
@@ -98,6 +101,7 @@ app.use(VueForge, {
98
101
  <DatePicker v-model="birthday" placeholder="Pick birthday" />
99
102
  <DateRangePicker v-model="range" placeholder="Pick range" />
100
103
  <TimePicker v-model="meetingTime" placeholder="Pick time" />
104
+ <DateTimePicker v-model="meetingAt" placeholder="Pick date and time" />
101
105
  <Pagination v-model="page" :total-items="240" :page-size="20" />
102
106
  <DataTable :columns="columns" :rows="rows" sortable striped />
103
107
  <Checkbox v-model="agreed" label="I agree" />
@@ -178,6 +182,7 @@ app.use(VueForge, {
178
182
  - ToastContainer
179
183
  - Alert
180
184
  - Input
185
+ - SearchInput
181
186
  - PasswordInput
182
187
  - OtpInput
183
188
  - ColorPicker
@@ -204,6 +209,7 @@ app.use(VueForge, {
204
209
  - DatePicker
205
210
  - DateRangePicker
206
211
  - TimePicker
212
+ - DateTimePicker
207
213
  - Pagination
208
214
  - DataTable
209
215
  - Switch
@@ -220,9 +226,10 @@ app.use(VueForge, {
220
226
  - TreeSelect
221
227
  - VirtualScroller
222
228
 
223
- Input / Password / Textarea (quick API):
229
+ Input / Search / Password / Textarea (quick API):
224
230
 
225
231
  - `Input`: single-line control, supports `v-model`, `size`, `variant`, `disabled`, `readonly`.
232
+ - `SearchInput`: search-focused control with `debounce`, `clearable`, `loading`, `size`, and `variant`.
226
233
  - `PasswordInput`: password control, supports visibility toggle, strength meter, CapsLock hint, `size`, and `variant`.
227
234
  - `OtpInput`: one-time code control, supports fixed length, paste handling, numeric/alphanumeric modes, `size`, and `variant`.
228
235
  - `ColorPicker`: color control with presets, optional alpha channel, and output formats (`hex`/`rgb`/`hsl`).
@@ -230,7 +237,7 @@ Input / Password / Textarea (quick API):
230
237
  - `NumberInput`: numeric control, supports `v-model`, `min`, `max`, `step`, `precision`, `controls`, `size`, `variant`.
231
238
  - `Textarea`: multi-line control, same as Input plus `rows`.
232
239
  - `TagInput`: token/tag control, supports `v-model` (array), suggestions, custom tags, `maxTags`, `clearable`, `size`, `variant`.
233
- - `OtpInput`, `ColorPicker`, `MaskedInput`, `Checkbox`, `Select`, `Autocomplete`, `MultiSelect`, `TagInput`, `DatePicker`, `DateRangePicker`, `Pagination`, `DataTable`, and `TreeSelect` also support `variant: 'filled' | 'outlined'`.
240
+ - `SearchInput`, `OtpInput`, `ColorPicker`, `MaskedInput`, `Checkbox`, `Select`, `Autocomplete`, `MultiSelect`, `TagInput`, `DatePicker`, `DateRangePicker`, `DateTimePicker`, `Pagination`, `DataTable`, and `TreeSelect` also support `variant: 'filled' | 'outlined'`.
234
241
 
235
242
  ## FormField
236
243
 
@@ -510,6 +517,65 @@ Component tokens (override via `theme.overrides.components.timepicker`):
510
517
  - `small.fontSize`, `small.padding`
511
518
  - `large.fontSize`, `large.padding`
512
519
 
520
+ ## DateTimePicker
521
+
522
+ Props:
523
+
524
+ - `modelValue?: string` (v-model, ISO datetime `YYYY-MM-DDTHH:mm`)
525
+ - `placeholder?: string`
526
+ - `disabled?: boolean`
527
+ - `readonly?: boolean`
528
+ - `min?: string` (ISO datetime `YYYY-MM-DDTHH:mm`)
529
+ - `max?: string` (ISO datetime `YYYY-MM-DDTHH:mm`)
530
+ - `locale?: string` (default `en-US`)
531
+ - `firstDayOfWeek?: number` (default `0`, Sunday)
532
+ - `minuteStep?: number` (default `30`)
533
+ - `format?: '24h' | '12h'` (default `24h`)
534
+ - `size?: 'small' | 'normal' | 'large'` (default `normal`)
535
+ - `variant?: 'filled' | 'outlined'` (default `filled`)
536
+
537
+ Events:
538
+
539
+ - `update:modelValue`
540
+ - `change`
541
+ - `focus`
542
+ - `blur`
543
+
544
+ Example:
545
+
546
+ ```vue
547
+ <DateTimePicker v-model="meetingAt" placeholder="Pick date and time" />
548
+ <DateTimePicker
549
+ v-model="meetingAtAlt"
550
+ variant="outlined"
551
+ min="2026-01-10T09:00"
552
+ max="2026-12-31T18:00"
553
+ :minute-step="15"
554
+ format="12h"
555
+ />
556
+ ```
557
+
558
+ ### DateTimePicker tokens
559
+
560
+ Component tokens (override via `theme.overrides.components.datetimepicker`):
561
+
562
+ - `minWidth`, `fontSize`, `controlGap`, `chevronSize`
563
+ - `padding`, `borderRadius`, `borderColor`
564
+ - `backgroundColor`, `textColor`, `placeholderColor`
565
+ - `focusBorderColor`, `focusRingShadow`, `hoverBorderColor`
566
+ - `disabledOpacity`
567
+ - `panelWidth`, `panelBackgroundColor`, `panelBorderColor`, `panelPadding`, `panelRadiusOffset`, `panelShadow`, `panelGap`
568
+ - `headerGap`, `headerPadding`, `monthLabelFontSize`, `monthLabelFontWeight`
569
+ - `navButtonSize`, `navButtonRadius`, `navButtonFontSize`
570
+ - `weekdayColor`, `weekdayFontSize`, `weekdaysMarginBottom`
571
+ - `daysGap`, `daySize`, `dayFontSize`, `dayBorderRadius`
572
+ - `dayHoverBackgroundColor`, `daySelectedBackgroundColor`, `daySelectedTextColor`, `dayMutedColor`, `dayTodayBorderColor`
573
+ - `timesWidth`, `timesMaxHeight`, `timesPaddingLeft`, `timesBorderColor`
574
+ - `timeOptionPadding`, `timeOptionBorderRadius`, `timeOptionFontSize`
575
+ - `timeOptionHoverBackgroundColor`, `timeOptionActiveBackgroundColor`, `timeOptionActiveTextColor`
576
+ - `small.fontSize`, `small.padding`, `small.daySize`
577
+ - `large.fontSize`, `large.padding`, `large.daySize`
578
+
513
579
  ## Pagination
514
580
 
515
581
  Props:
@@ -696,6 +762,53 @@ Component tokens (override via `theme.overrides.components.fileUpload`):
696
762
  - `small.fontSize`, `small.padding`, `small.buttonPadding`
697
763
  - `large.fontSize`, `large.padding`, `large.buttonPadding`
698
764
 
765
+ ## SearchInput
766
+
767
+ Props:
768
+
769
+ - `modelValue?: string` (v-model)
770
+ - `placeholder?: string`
771
+ - `disabled?: boolean`
772
+ - `readonly?: boolean`
773
+ - `debounce?: number` (default `300`)
774
+ - `loading?: boolean` (default `false`)
775
+ - `clearable?: boolean` (default `false`)
776
+ - `size?: 'small' | 'normal' | 'large'` (default `normal`)
777
+ - `variant?: 'filled' | 'outlined'` (default `filled`)
778
+ - `ariaLabel?: string` (default `Search input`)
779
+
780
+ Events:
781
+
782
+ - `update:modelValue`
783
+ - `input`
784
+ - `change`
785
+ - `search`
786
+ - `clear`
787
+ - `focus`
788
+ - `blur`
789
+
790
+ Example:
791
+
792
+ ```vue
793
+ <SearchInput v-model="query" placeholder="Search..." clearable />
794
+ <SearchInput v-model="query" placeholder="Search..." :debounce="500" loading variant="outlined" />
795
+ ```
796
+
797
+ ### SearchInput tokens
798
+
799
+ Component tokens (override via `theme.overrides.components.searchInput`):
800
+
801
+ - `gap`, `fontSize`, `padding`
802
+ - `borderRadius`, `borderColor`
803
+ - `backgroundColor`, `textColor`, `placeholderColor`
804
+ - `focusBorderColor`, `focusRingShadow`, `hoverBorderColor`
805
+ - `disabledOpacity`
806
+ - `iconSize`, `iconColor`
807
+ - `clearSize`, `clearRadius`, `clearHoverBackgroundColor`
808
+ - `loadingSize`, `loadingBorderColor`, `loadingTopBorderColor`
809
+ - `small.fontSize`, `small.padding`, `small.iconSize`, `small.clearSize`
810
+ - `large.fontSize`, `large.padding`, `large.iconSize`, `large.clearSize`
811
+
699
812
  ## NumberInput
700
813
 
701
814
  Props:
@@ -1942,7 +2055,7 @@ VueForge exposes design tokens as CSS variables generated from the theme preset.
1942
2055
  Typed tokens:
1943
2056
 
1944
2057
  - `ThemeTokens`/`ThemeOptions`/`ThemePreset` are exported for type-safe theming in TS.
1945
- - `components.*` accepts component-specific tokens (typed keys: button/card/checkbox/radio/tabs/accordion/toast/alert/input/passwordInput/otpInput/colorPicker/maskedInput/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).
2058
+ - `components.*` accepts component-specific tokens (typed keys: button/card/checkbox/radio/tabs/accordion/toast/alert/input/searchInput/passwordInput/otpInput/colorPicker/maskedInput/numberInput/formField/textarea/link/breadcrumbs/menu/modal/confirmDialog/drawer/popover/dropdown/contextMenu/commandPalette/select/autocomplete/multiselect/taginput/datepicker/daterangepicker/timepicker/datetimepicker/pagination/switch/tooltip/skeleton/progress/badge/chip/avatar/datatable/slider/stepper/rating/tree/treeselect/virtualScroller).
1946
2059
 
1947
2060
  Default core values (from `DefaultTheme`):
1948
2061