vueless 0.0.253 → 0.0.255

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.
Files changed (33) hide show
  1. package/package.json +1 -1
  2. package/ui.button/index.stories.js +1 -1
  3. package/ui.button-link/index.stories.js +1 -1
  4. package/ui.button-toggle/index.stories.js +2 -2
  5. package/ui.button-toggle-item/index.stories.js +6 -2
  6. package/ui.container-card/index.stories.js +1 -1
  7. package/ui.dropdown-button/index.stories.js +3 -6
  8. package/ui.form-calendar/index.stories.js +4 -4
  9. package/ui.form-checkbox/index.stories.js +13 -26
  10. package/ui.form-checkbox-group/index.stories.js +28 -74
  11. package/ui.form-checkbox-multi-state/index.stories.js +17 -13
  12. package/ui.form-color-picker/index.stories.js +17 -13
  13. package/ui.form-date-picker/configs/default.config.js +1 -0
  14. package/ui.form-date-picker/index.stories.js +37 -51
  15. package/ui.form-date-picker-range/index.stories.js +23 -32
  16. package/ui.form-input/index.stories.js +1 -1
  17. package/ui.form-input-file/index.stories.js +1 -1
  18. package/ui.form-input-money/index.stories.js +1 -1
  19. package/ui.form-input-number/index.stories.js +3 -3
  20. package/ui.form-input-search/index.stories.js +1 -1
  21. package/ui.form-label/index.stories.js +28 -51
  22. package/ui.form-radio/index.stories.js +5 -17
  23. package/ui.form-radio-group/index.stories.js +45 -96
  24. package/ui.form-select/index.stories.js +62 -159
  25. package/ui.form-switch/index.stories.js +17 -33
  26. package/ui.form-textarea/index.stories.js +1 -3
  27. package/ui.image-icon/index.stories.js +1 -1
  28. package/ui.navigation-progress/index.stories.js +1 -1
  29. package/ui.navigation-tabs/index.stories.js +3 -3
  30. package/ui.text-badge/index.stories.js +2 -2
  31. package/ui.text-block/index.stories.js +2 -2
  32. package/ui.text-empty/index.stories.js +1 -1
  33. package/web-types.json +1 -1
@@ -1,4 +1,4 @@
1
- import { getArgTypes } from "../service.storybook";
1
+ import { getArgTypes, getSlotNames, getSlotsFragment } from "../service.storybook";
2
2
 
3
3
  import URadioGroup from "../ui.form-radio-group";
4
4
  import URadio from "../ui.form-radio";
@@ -14,113 +14,70 @@ export default {
14
14
  title: "Form Inputs & Controls / Radio Group",
15
15
  component: URadioGroup,
16
16
  args: {
17
- label: "Label",
18
- value: "One",
19
- radios: [
20
- { name: "radio", label: "Radio 1", value: "1" },
21
- { name: "radio", label: "Radio 2", value: "2" },
22
- { name: "radio", label: "Radio 3", value: "3" },
23
- ],
17
+ modelValue: "One",
24
18
  },
25
19
  argTypes: {
26
20
  ...getArgTypes(URadioGroup.name),
27
21
  },
28
22
  };
29
23
 
24
+ const defaultRadios = [
25
+ { name: "slotValues", label: "Boolean", value: false },
26
+ { name: "slotValues", label: "String", value: "One" },
27
+ { name: "slotValues", label: "Number", value: 3 },
28
+ { name: "slotValues", label: "Object", value: { key: "value" } },
29
+ { name: "slotValues", label: "Array", value: ["Array", 1] },
30
+ ];
31
+
30
32
  const DefaultTemplate = (args) => ({
31
33
  components: { URadioGroup, URadio, UAlert, URow, UCol },
32
34
  setup() {
33
- return { args };
34
- },
35
- data() {
36
- return {
37
- value: args.value,
38
- };
35
+ const slots = getSlotNames(URadioGroup.name);
36
+
37
+ const radios = args.radios ? args.radios : defaultRadios;
38
+
39
+ return { args, slots, radios };
39
40
  },
40
41
  template: `
41
42
  <UCol gap="2xl">
42
- <URadioGroup v-bind="args" v-model="value">
43
- <URadio v-for="(radio, index) in args.radios" :key="index" v-bind="radio" />
43
+ <URadioGroup v-bind="args" v-model="args.modelValue">
44
+ <URadio
45
+ v-for="(radio, index) in radios"
46
+ :key="index"
47
+ v-bind="radio"
48
+ >
49
+ ${args.slotTemplate || getSlotsFragment()}
50
+ </URadio>
44
51
  </URadioGroup>
45
52
  <UAlert color="gray" size="xs">
46
- <code>Selected value: <b>{{ value }}</b></code>
53
+ <code>Selected value: <b>{{ args.modelValue }}</b></code>
47
54
  </UAlert>
48
55
  </UCol>
49
56
  `,
50
57
  });
51
58
 
52
- const OptionsTemplate = (args) => ({
53
- components: { URadioGroup, URadio, UAlert, URow },
54
- setup() {
55
- return { args };
56
- },
57
- data() {
58
- return {
59
- value: args.value,
60
- };
61
- },
62
- template: `
63
- <URow class="!flex-col">
64
- <URadioGroup v-bind="args" v-model="value" :options="args.radios" />
65
-
66
- <URow>
67
- <UAlert color="blue">
68
- <p>Selected value: {{ value }}</p>
69
- </UAlert>
70
- </URow>
71
- </URow>
72
- `,
73
- });
74
-
75
- const ColorsTemplate = (args, { argTypes } = {}) => ({
59
+ const EnumVariantTemplate = (args, { argTypes } = {}) => ({
76
60
  components: { URadioGroup, URow },
77
61
  setup() {
78
- return { args };
79
- },
80
- data() {
81
- return {
82
- value: args.value,
83
- colors: argTypes.color.options,
84
- };
85
- },
86
- template: `
87
- <URow class="!flex-col">
88
- <URadioGroup
89
- v-bind="args"
90
- v-for="color in colors"
91
- :key="color"
92
- :label="color"
93
- :color="color"
94
- :options="args.radios"
95
- :name="color"
96
- v-model="value"
97
- />
98
- </URow>
99
- `,
100
- });
62
+ const radios = defaultRadios;
101
63
 
102
- const SizesTemplate = (args, { argTypes } = {}) => ({
103
- components: { URadioGroup, URow },
104
- setup() {
105
- return { args };
106
- },
107
- data() {
108
64
  return {
109
- value: args.value,
110
- sizes: argTypes.size.options,
65
+ args,
66
+ options: argTypes[args.enum].options,
67
+ radios,
111
68
  };
112
69
  },
113
70
  template: `
114
71
  <URow class="!flex-col">
115
72
  <URadioGroup
73
+ v-for="(option, index) in options"
74
+ :key="index"
116
75
  v-bind="args"
117
- v-for="size in sizes"
118
- :key="size"
119
- :label="size"
120
- :size="size"
121
- :options="args.radios"
122
- :name="size"
123
- v-model="value"
76
+ v-model="args.modelValue"
77
+ :[args.enum]="option"
78
+ :label="option"
79
+ :options="radios"
80
+ :name="option"
124
81
  />
125
82
  </URow>
126
83
  `,
@@ -129,30 +86,22 @@ const SizesTemplate = (args, { argTypes } = {}) => ({
129
86
  export const Default = DefaultTemplate.bind({});
130
87
  Default.args = {
131
88
  name: "Default",
132
- isDefaultStory: true,
133
- radios: [
134
- { name: "slotValues", label: "Boolean", value: false },
135
- { name: "slotValues", label: "String", value: "One" },
136
- { name: "slotValues", label: "Number", value: 3 },
137
- { name: "slotValues", label: "Object", value: { key: "value" } },
138
- { name: "slotValues", label: "Array", value: ["Array", 1] },
139
- ],
140
89
  };
141
90
 
142
- export const Options = OptionsTemplate.bind({});
91
+ export const Options = DefaultTemplate.bind({});
143
92
  Options.args = {
144
93
  name: "Options",
145
94
  radios: [
146
95
  { name: "radioValues", label: "Boolean", value: false },
147
- { name: "radioValues", label: "String", value: "One" },
148
- { name: "radioValues", label: "Number", value: 3 },
149
- { name: "radioValues", label: "Object", value: { key: "value" } },
150
- { name: "radioValues", label: "Array", value: ["Array", 1] },
96
+ { name: "radioValues", label: "String", value: "Custom string value" },
97
+ { name: "radioValues", label: "Number", value: 4 },
98
+ { name: "radioValues", label: "Object", value: { key: "Custom object value" } },
99
+ { name: "radioValues", label: "Array", value: ["Custom array value", 2] },
151
100
  ],
152
101
  };
153
102
 
154
- export const Colors = ColorsTemplate.bind({});
155
- Colors.args = { name: "Colors" };
103
+ export const Colors = EnumVariantTemplate.bind({});
104
+ Colors.args = { enum: "color", name: "Colors" };
156
105
 
157
- export const Sizes = SizesTemplate.bind({});
158
- Sizes.args = { name: "Sizes" };
106
+ export const Sizes = EnumVariantTemplate.bind({});
107
+ Sizes.args = { enum: "size", name: "Sizes" };
@@ -1,4 +1,4 @@
1
- import { getArgTypes, getSlotNames, allSlotsFragment } from "../service.storybook";
1
+ import { getArgTypes, getSlotNames, getSlotsFragment } from "../service.storybook";
2
2
 
3
3
  import USelect from "../ui.form-select";
4
4
  import URow from "../ui.container-row";
@@ -36,66 +36,42 @@ export default {
36
36
  };
37
37
 
38
38
  const DefaultTemplate = (args) => ({
39
- components: { USelect },
39
+ components: { USelect, UIcon, UBadge },
40
40
  setup() {
41
- const slots = getSlotNames(USelect.name);
42
-
43
- return { args, slots };
44
- },
45
- template: `
46
- <USelect v-bind="args" v-model="args.modelValue">
47
- ${allSlotsFragment}
48
- </USelect>
49
- `,
50
- });
41
+ function getSelectedBadge(options, currentValue) {
42
+ return options?.find((option) => option.id === currentValue);
43
+ }
51
44
 
52
- const multipleTemplate = (args) => ({
53
- components: { USelect },
54
- setup() {
55
45
  const slots = getSlotNames(USelect.name);
56
46
 
57
- return { args, slots };
47
+ return { args, slots, getSelectedBadge };
58
48
  },
59
49
  template: `
60
- <USelect v-bind="args" multiple v-model="args.modelValue">
61
- <template v-for="(slot, index) of slots" :key="index" v-slot:[slot]>
62
- <template v-if="args[slot]">{{ args[slot] }}</template>
63
- </template>
50
+ <USelect v-bind="args" v-model="args.modelValue">
51
+ ${args.slotTemplate || getSlotsFragment()}
64
52
  </USelect>
65
53
  `,
66
54
  });
67
55
 
68
- const OpenDirectionsTemplate = (args, { argTypes } = {}) => ({
56
+ const EnumVariantTemplate = (args, { argTypes } = {}) => ({
69
57
  components: { USelect, URow },
70
58
  setup() {
71
59
  return {
72
60
  args,
73
- openDirections: argTypes.openDirection.options,
61
+ options: argTypes[args.enum].options,
74
62
  };
75
63
  },
76
64
  template: `
77
- <div class="flex flex-col gap-6">
78
- <URow>
79
- <USelect
80
- v-for="(openDirection, index) in openDirections"
81
- :key="index"
82
- v-bind="args"
83
- :open-direction="openDirection"
84
- :label="openDirection"
85
- v-model="args.modelValue"
86
- />
87
- </URow>
88
- <URow>
89
- <USelect
90
- v-for="(openDirection, index) in openDirections"
91
- :key="index"
92
- v-bind="args"
93
- :open-direction="openDirection"
94
- v-model="args.modelValue"
95
- label=""
96
- />
97
- </URow>
98
- </div>
65
+ <URow>
66
+ <USelect
67
+ v-for="(option, index) in options"
68
+ :key="index"
69
+ v-bind="args"
70
+ v-model="args.modelValue"
71
+ :[args.enum]="option"
72
+ :label="option"
73
+ />
74
+ </URow>
99
75
  `,
100
76
  });
101
77
 
@@ -109,8 +85,8 @@ const GroupValuesTemplate = (args) => ({
109
85
  template: `
110
86
  <USelect
111
87
  v-bind="args"
112
- label="Single"
113
88
  v-model="args.modelValue"
89
+ label="Single"
114
90
  />
115
91
  <USelect
116
92
  class="mt-5"
@@ -122,104 +98,14 @@ const GroupValuesTemplate = (args) => ({
122
98
  `,
123
99
  });
124
100
 
125
- const SizesTemplate = (args, { argTypes } = {}) => ({
126
- components: { USelect, URow },
127
- setup() {
128
- return {
129
- args,
130
- sizes: argTypes.size.options,
131
- };
132
- },
133
- template: `
134
- <div class="flex flex-col gap-6">
135
- <URow>
136
- <USelect
137
- v-for="(size, index) in sizes"
138
- v-bind="args"
139
- :key="index"
140
- :size="size"
141
- :label="size"
142
- v-model="args.modelValue"
143
- />
144
- </URow>
145
- <URow>
146
- <USelect
147
- v-for="(size, index) in sizes"
148
- v-bind="args"
149
- :key="index"
150
- :size="size"
151
- :label="size"
152
- label-outside
153
- v-model="args.modelValue"
154
- />
155
- </URow>
156
- <URow>
157
- <USelect
158
- v-for="(size, index) in sizes"
159
- v-bind="args"
160
- :key="index"
161
- :label="size"
162
- :size="size"
163
- multiple
164
- v-model="args.multipleModelValue"
165
- />
166
- </URow>
167
- </div>
168
- `,
169
- });
170
-
171
- const SlotTemplate = (args) => ({
172
- components: { USelect, UIcon },
173
- setup() {
174
- return { args };
175
- },
176
- template: `
177
- <USelect
178
- v-bind="args"
179
- v-model="args.modelValue"
180
- >
181
- ${args.slotTemplate}
182
- </USelect>
183
- `,
184
- });
185
-
186
- const BadgeTemplate = (args) => ({
187
- components: { USelect, UBadge },
188
- setup() {
189
- return { args };
190
- },
191
- methods: {
192
- getSelectedBadge(options, currentValue) {
193
- return options?.find((option) => option.id === currentValue);
194
- },
195
- },
196
- template: `
197
- <USelect
198
- v-bind="args"
199
- v-model="args.modelValue"
200
- >
201
- <template #after-caret="{ scopeProps }">
202
- <UBadge
203
- v-show="scopeProps?.modelValue"
204
- :label="getSelectedBadge(scopeProps?.options, scopeProps?.modelValue)?.badge"
205
- />
206
- </template>
207
- <template #option="{ option }">
208
- {{ option.label }}
209
- <UBadge :label="option.badge" />
210
- </template>
211
- </USelect>
212
- `,
213
- });
214
-
215
101
  export const Default = DefaultTemplate.bind({});
216
102
  Default.args = {};
217
103
 
218
- export const Multiple = multipleTemplate.bind({});
219
- Multiple.args = { modelValue: [] };
104
+ export const Multiple = DefaultTemplate.bind({});
105
+ Multiple.args = { multiple: true, modelValue: [] };
220
106
 
221
- export const openDirection = OpenDirectionsTemplate.bind({});
222
- openDirection.args = {};
107
+ export const openDirection = EnumVariantTemplate.bind({});
108
+ openDirection.args = { enum: "openDirection" };
223
109
 
224
110
  export const groupValue = GroupValuesTemplate.bind({});
225
111
  groupValue.args = {
@@ -280,53 +166,70 @@ optionIsHidden.args = {
280
166
  ],
281
167
  };
282
168
 
283
- export const sizes = SizesTemplate.bind({});
284
- sizes.args = { multipleModelValue: [] };
169
+ export const sizes = EnumVariantTemplate.bind({});
170
+ sizes.args = {
171
+ enum: "size",
172
+ multiple: true,
173
+ multipleModelValue: [],
174
+ };
285
175
 
286
- export const slotSelectedValueLabel = SlotTemplate.bind({});
176
+ export const slotSelectedValueLabel = DefaultTemplate.bind({});
287
177
  slotSelectedValueLabel.args = {
288
178
  slotTemplate: `
289
179
  <template #selected-label>
290
- 🤘🤘🤘
180
+ 🤘🤘🤘
291
181
  </template>
292
182
  `,
293
183
  };
294
184
 
295
- export const slotSelectedValueLabelAfter = SlotTemplate.bind({});
185
+ export const slotSelectedValueLabelAfter = DefaultTemplate.bind({});
296
186
  slotSelectedValueLabelAfter.args = {
297
187
  slotTemplate: `
298
188
  <template #selected-label-after>
299
- 🤘🤘🤘
189
+ 🤘🤘🤘
300
190
  </template>
301
191
  `,
302
192
  };
303
193
 
304
- export const slotOption = SlotTemplate.bind({});
194
+ export const slotOption = DefaultTemplate.bind({});
305
195
  slotOption.args = {
306
196
  slotTemplate: `
307
197
  <template #option>
308
- 🤘🤘🤘
198
+ 🤘🤘🤘
309
199
  </template>
310
200
  `,
311
201
  };
312
202
 
313
- export const slotAfterCaret = BadgeTemplate.bind({});
314
- slotAfterCaret.args = {};
203
+ export const slotAfterCaret = DefaultTemplate.bind({});
204
+ slotAfterCaret.args = {
205
+ slotTemplate: `
206
+ <template #after-caret="{ scopeProps }">
207
+ <UBadge
208
+ v-show="scopeProps?.modelValue"
209
+ :label="getSelectedBadge(scopeProps?.options, scopeProps?.modelValue)?.badge"
210
+ />
211
+ </template>
212
+ <template #option="{ option }">
213
+ {{ option.label }}
214
+ <UBadge :label="option.badge" />
215
+ </template>
216
+ `,
217
+ };
315
218
 
316
- export const slotBeforeCaret = SlotTemplate.bind({});
219
+ export const slotBeforeCaret = DefaultTemplate.bind({});
317
220
  slotBeforeCaret.args = {
318
221
  slotTemplate: `
319
222
  <template #before-caret>
320
- 🤘
223
+ 🤘
321
224
  </template>
322
225
  `,
323
226
  };
324
227
 
325
- export const slotBeforeOption = SlotTemplate.bind({});
228
+ export const slotBeforeOption = DefaultTemplate.bind({});
326
229
  slotBeforeOption.args = {
327
230
  slotTemplate: `
328
231
  <template #before-option>
329
- 🤘
232
+ 🤘
330
233
  </template>
331
234
  `,
332
235
  };
@@ -341,7 +244,7 @@ iconRight.args = {
341
244
  iconRight: "star",
342
245
  };
343
246
 
344
- export const iconLeftSlot = SlotTemplate.bind({});
247
+ export const iconLeftSlot = DefaultTemplate.bind({});
345
248
  iconLeftSlot.args = {
346
249
  slotTemplate: `
347
250
  <template #icon-left>
@@ -350,7 +253,7 @@ iconLeftSlot.args = {
350
253
  `,
351
254
  };
352
255
 
353
- export const iconRightSlot = SlotTemplate.bind({});
256
+ export const iconRightSlot = DefaultTemplate.bind({});
354
257
  iconRightSlot.args = {
355
258
  slotTemplate: `
356
259
  <template #icon-right>
@@ -359,20 +262,20 @@ iconRightSlot.args = {
359
262
  `,
360
263
  };
361
264
 
362
- export const slotLeft = SlotTemplate.bind({});
265
+ export const slotLeft = DefaultTemplate.bind({});
363
266
  slotLeft.args = {
364
267
  slotTemplate: `
365
268
  <template #left>
366
- 🤘
269
+ 🤘
367
270
  </template>
368
271
  `,
369
272
  };
370
273
 
371
- export const slotRight = SlotTemplate.bind({});
274
+ export const slotRight = DefaultTemplate.bind({});
372
275
  slotRight.args = {
373
276
  slotTemplate: `
374
277
  <template #right>
375
- 🤘
278
+ 🤘
376
279
  </template>
377
280
  `,
378
281
  };
@@ -1,4 +1,4 @@
1
- import { getArgTypes } from "../service.storybook";
1
+ import { getArgTypes, getSlotNames, getSlotsFragment } from "../service.storybook";
2
2
 
3
3
  import USwitch from "../ui.form-switch";
4
4
  import UIcon from "../ui.image-icon";
@@ -22,50 +22,34 @@ export default {
22
22
  const DefaultTemplate = (args) => ({
23
23
  components: { USwitch, UIcon },
24
24
  setup() {
25
- return { args };
26
- },
27
- template: `
28
- <USwitch v-bind="args" v-model="args.value" />
29
- `,
30
- });
25
+ const slots = getSlotNames(USwitch.name);
31
26
 
32
- const ColorsTemplate = (args, { argTypes } = {}) => ({
33
- components: { USwitch, URow },
34
- setup() {
35
- return {
36
- args,
37
- colors: argTypes.color.options,
38
- };
27
+ return { args, slots };
39
28
  },
40
29
  template: `
41
- <URow>
42
- <USwitch
43
- v-for="(color, index) in colors"
44
- v-bind="args"
45
- :color="color"
46
- v-model="args.value"
47
- :key="index"
48
- />
49
- </URow>
30
+ <USwitch v-bind="args" v-model="args.modelValue">
31
+ ${args.slotTemplate || getSlotsFragment()}
32
+ </USwitch>
50
33
  `,
51
34
  });
52
35
 
53
- const SizesTemplate = (args, { argTypes } = {}) => ({
36
+ const EnumVariantTemplate = (args, { argTypes } = {}) => ({
54
37
  components: { USwitch, URow },
55
38
  setup() {
56
39
  return {
57
40
  args,
58
- sizes: argTypes.size.options,
41
+ options: argTypes[args.enum].options,
59
42
  };
60
43
  },
61
44
  template: `
62
45
  <URow>
63
46
  <USwitch
64
- v-for="(size, index) in sizes"
65
- v-bind="args"
66
- :size="size"
67
- v-model="args.value"
47
+ v-for="(option, index) in options"
68
48
  :key="index"
49
+ v-bind="args"
50
+ v-model="args.modelValue"
51
+ :[args.enum]="option"
52
+ :label="option"
69
53
  />
70
54
  </URow>
71
55
  `,
@@ -80,14 +64,14 @@ label.args = { label: "Some label" };
80
64
  export const description = DefaultTemplate.bind({});
81
65
  description.args = { label: "Label", description: "Some description" };
82
66
 
83
- export const colors = ColorsTemplate.bind({});
84
- colors.args = { modelValue: true };
67
+ export const colors = EnumVariantTemplate.bind({});
68
+ colors.args = { enum: "color", modelValue: true };
85
69
 
86
70
  export const toggleLabel = DefaultTemplate.bind({});
87
71
  toggleLabel.args = { toggleLabel: true };
88
72
 
89
- export const sizes = SizesTemplate.bind({});
90
- sizes.args = { color: "yellow" };
73
+ export const sizes = EnumVariantTemplate.bind({});
74
+ sizes.args = { enum: "size", color: "yellow" };
91
75
 
92
76
  export const icon = DefaultTemplate.bind({});
93
77
  icon.args = { toggleIcon: true, color: "yellow" };
@@ -28,9 +28,7 @@ const DefaultTemplate = (args) => ({
28
28
  return { args, slots };
29
29
  },
30
30
  template: `
31
- <UTextarea
32
- v-bind="args"
33
- >
31
+ <UTextarea v-bind="args">
34
32
  ${args.slotTemplate || getSlotsFragment()}
35
33
  </UTextarea>
36
34
  `,
@@ -44,9 +44,9 @@ const EnumVariantTemplate = (args, { argTypes } = {}) => ({
44
44
  <URow>
45
45
  <UIcon
46
46
  v-for="(option, index) in options"
47
+ :key="index"
47
48
  v-bind="args"
48
49
  :[args.enum]="option"
49
- :key="index"
50
50
  />
51
51
  </URow>
52
52
  `,
@@ -56,8 +56,8 @@ const EnumVariantTemplate = (args, { argTypes } = {}) => ({
56
56
  <UProgress
57
57
  v-for="(option, index) in options"
58
58
  :key="index"
59
- :[args.enum]="option"
60
59
  v-bind="args"
60
+ :[args.enum]="option"
61
61
  :value="args.progress"
62
62
  />
63
63
  </UCol>
@@ -30,7 +30,7 @@ const DefaultTemplate = (args) => ({
30
30
  return { args, slots };
31
31
  },
32
32
  template: `
33
- <UTabs v-model="args.modelValue" v-bind="args">
33
+ <UTabs v-bind="args" v-model="args.modelValue">
34
34
  ${args.slotTemplate || getSlotsFragment()}
35
35
  </UTabs>
36
36
  `,
@@ -47,11 +47,11 @@ const EnumVariantTemplate = (args, { argTypes } = {}) => ({
47
47
  template: `
48
48
  <div class="space-y-16">
49
49
  <UTabs
50
- v-model="args.modelValue"
51
50
  v-for="(option, index) in options"
51
+ :key="index"
52
52
  v-bind="args"
53
+ v-model="args.modelValue"
53
54
  :[args.enum]="option"
54
- :key="index"
55
55
  />
56
56
  </div>
57
57
  `,