@codemonster-ru/vueforge 0.51.0 → 0.53.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
@@ -42,6 +42,7 @@ import {
42
42
  MultiSelect,
43
43
  TagInput,
44
44
  DatePicker,
45
+ Calendar,
45
46
  DateRangePicker,
46
47
  TimePicker,
47
48
  DateTimePicker,
@@ -49,6 +50,7 @@ import {
49
50
  DataTable,
50
51
  Checkbox,
51
52
  Switch,
53
+ SegmentedControl,
52
54
  Alert,
53
55
  Skeleton,
54
56
  Progress,
@@ -99,6 +101,7 @@ app.use(VueForge, {
99
101
  <MultiSelect v-model="countries" :options="countryOptions" placeholder="Select countries" clearable />
100
102
  <TagInput v-model="skills" :options="skillOptions" placeholder="Add skills" clearable />
101
103
  <DatePicker v-model="birthday" placeholder="Pick birthday" />
104
+ <Calendar v-model="selectedDate" />
102
105
  <DateRangePicker v-model="range" placeholder="Pick range" />
103
106
  <TimePicker v-model="meetingTime" placeholder="Pick time" />
104
107
  <DateTimePicker v-model="meetingAt" placeholder="Pick date and time" />
@@ -106,6 +109,13 @@ app.use(VueForge, {
106
109
  <DataTable :columns="columns" :rows="rows" sortable striped />
107
110
  <Checkbox v-model="agreed" label="I agree" />
108
111
  <Switch v-model="darkMode" label="Dark mode" />
112
+ <SegmentedControl
113
+ v-model="view"
114
+ :options="[
115
+ { label: 'List', value: 'list' },
116
+ { label: 'Grid', value: 'grid' },
117
+ ]"
118
+ />
109
119
  <Alert severity="info" title="Heads up" message="Project settings were updated." />
110
120
  <Skeleton height="12px" width="140px" />
111
121
  <Progress :value="64" />
@@ -173,6 +183,7 @@ app.use(VueForge, {
173
183
  - Checkbox
174
184
  - RadioGroup
175
185
  - RadioButton
186
+ - SegmentedControl
176
187
  - Tabs
177
188
  - Tab
178
189
  - TabPanel
@@ -207,6 +218,7 @@ app.use(VueForge, {
207
218
  - MultiSelect
208
219
  - TagInput
209
220
  - DatePicker
221
+ - Calendar
210
222
  - DateRangePicker
211
223
  - TimePicker
212
224
  - DateTimePicker
@@ -237,7 +249,7 @@ Input / Search / Password / Textarea (quick API):
237
249
  - `NumberInput`: numeric control, supports `v-model`, `min`, `max`, `step`, `precision`, `controls`, `size`, `variant`.
238
250
  - `Textarea`: multi-line control, same as Input plus `rows`.
239
251
  - `TagInput`: token/tag control, supports `v-model` (array), suggestions, custom tags, `maxTags`, `clearable`, `size`, `variant`.
240
- - `SearchInput`, `OtpInput`, `ColorPicker`, `MaskedInput`, `Checkbox`, `Select`, `Autocomplete`, `MultiSelect`, `TagInput`, `DatePicker`, `DateRangePicker`, `DateTimePicker`, `Pagination`, `DataTable`, and `TreeSelect` also support `variant: 'filled' | 'outlined'`.
252
+ - `SearchInput`, `OtpInput`, `ColorPicker`, `MaskedInput`, `Checkbox`, `Select`, `Autocomplete`, `MultiSelect`, `TagInput`, `DatePicker`, `Calendar`, `DateRangePicker`, `DateTimePicker`, `Pagination`, `DataTable`, `SegmentedControl`, and `TreeSelect` also support `variant: 'filled' | 'outlined'`.
241
253
 
242
254
  ## FormField
243
255
 
@@ -443,6 +455,48 @@ Example:
443
455
  <DatePicker v-model="startDate" placeholder="Pick date" min="2026-01-01" max="2026-12-31" />
444
456
  ```
445
457
 
458
+ ## Calendar
459
+
460
+ Props:
461
+
462
+ - `modelValue?: string` (v-model, ISO date `YYYY-MM-DD`)
463
+ - `disabled?: boolean`
464
+ - `readonly?: boolean`
465
+ - `min?: string` (ISO date `YYYY-MM-DD`)
466
+ - `max?: string` (ISO date `YYYY-MM-DD`)
467
+ - `locale?: string` (default `en-US`)
468
+ - `firstDayOfWeek?: number` (default `0`, Sunday)
469
+ - `size?: 'small' | 'normal' | 'large'` (default `normal`)
470
+ - `variant?: 'filled' | 'outlined'` (default `filled`)
471
+
472
+ Events:
473
+
474
+ - `update:modelValue`
475
+ - `change`
476
+
477
+ Example:
478
+
479
+ ```vue
480
+ <Calendar v-model="selectedDate" min="2026-01-01" max="2026-12-31" />
481
+ <Calendar v-model="selectedDateAlt" variant="outlined" :first-day-of-week="1" />
482
+ ```
483
+
484
+ ### Calendar tokens
485
+
486
+ Component tokens (override via `theme.overrides.components.calendar`):
487
+
488
+ - `width`, `fontSize`, `padding`
489
+ - `borderRadius`, `borderColor`
490
+ - `backgroundColor`, `textColor`
491
+ - `disabledOpacity`
492
+ - `headerGap`, `headerPadding`, `monthLabelFontSize`, `monthLabelFontWeight`
493
+ - `navButtonSize`, `navButtonRadius`, `navButtonFontSize`
494
+ - `weekdayColor`, `weekdayFontSize`, `weekdaysMarginBottom`
495
+ - `daysGap`, `daySize`, `dayFontSize`, `dayBorderRadius`
496
+ - `dayHoverBackgroundColor`, `daySelectedBackgroundColor`, `daySelectedTextColor`, `dayMutedColor`, `dayTodayBorderColor`
497
+ - `small.fontSize`, `small.padding`, `small.daySize`
498
+ - `large.fontSize`, `large.padding`, `large.daySize`
499
+
446
500
  ## DateRangePicker
447
501
 
448
502
  Props:
@@ -1086,6 +1140,51 @@ Component tokens (override via `theme.overrides.components.breadcrumbs`):
1086
1140
  - `gap`, `fontSize`, `textColor`, `hoverColor`, `activeColor`
1087
1141
  - `separatorColor`, `disabledOpacity`
1088
1142
 
1143
+ ## SegmentedControl
1144
+
1145
+ Props:
1146
+
1147
+ - `modelValue?: string | number` (v-model)
1148
+ - `options?: Array<{ label: string; value: string | number; disabled?: boolean }>` (default `[]`)
1149
+ - `disabled?: boolean`
1150
+ - `fullWidth?: boolean` (default `false`)
1151
+ - `size?: 'small' | 'normal' | 'large'` (default `normal`)
1152
+ - `variant?: 'filled' | 'outlined'` (default `filled`)
1153
+ - `ariaLabel?: string`
1154
+ - `ariaLabelledby?: string`
1155
+
1156
+ Events:
1157
+
1158
+ - `update:modelValue`
1159
+ - `change`
1160
+ - `focus`
1161
+ - `blur`
1162
+
1163
+ Example:
1164
+
1165
+ ```vue
1166
+ <SegmentedControl
1167
+ v-model="view"
1168
+ :options="[
1169
+ { label: 'List', value: 'list' },
1170
+ { label: 'Grid', value: 'grid' },
1171
+ { label: 'Board', value: 'board' },
1172
+ ]"
1173
+ />
1174
+ ```
1175
+
1176
+ ### SegmentedControl tokens
1177
+
1178
+ Component tokens (override via `theme.overrides.components.segmentedControl`):
1179
+
1180
+ - `fontSize`, `padding`, `gap`
1181
+ - `borderRadius`, `borderColor`, `backgroundColor`, `textColor`
1182
+ - `hoverBackgroundColor`, `activeBackgroundColor`, `activeTextColor`
1183
+ - `focusRingShadow`, `disabledOpacity`
1184
+ - `segmentPadding`, `segmentRadius`, `segmentFontWeight`
1185
+ - `small.fontSize`, `small.padding`, `small.segmentPadding`
1186
+ - `large.fontSize`, `large.padding`, `large.segmentPadding`
1187
+
1089
1188
  ## Tabs / Tab / TabPanel
1090
1189
 
1091
1190
  Props (Tabs):
@@ -2055,7 +2154,7 @@ VueForge exposes design tokens as CSS variables generated from the theme preset.
2055
2154
  Typed tokens:
2056
2155
 
2057
2156
  - `ThemeTokens`/`ThemeOptions`/`ThemePreset` are exported for type-safe theming in TS.
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).
2157
+ - `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/calendar/daterangepicker/timepicker/datetimepicker/pagination/switch/segmentedControl/tooltip/skeleton/progress/badge/chip/avatar/datatable/slider/stepper/rating/tree/treeselect/virtualScroller).
2059
2158
 
2060
2159
  Default core values (from `DefaultTheme`):
2061
2160