@bagelink/vue 0.0.331 → 0.0.335

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 (53) hide show
  1. package/dist/components/MaterialIcon.vue.d.ts +4 -2
  2. package/dist/components/MaterialIcon.vue.d.ts.map +1 -1
  3. package/dist/components/form/inputs/SelectInput.vue.d.ts +22 -16
  4. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  5. package/dist/components/index.d.ts +0 -2
  6. package/dist/components/index.d.ts.map +1 -1
  7. package/dist/components/layout/Layout.vue.d.ts +8 -0
  8. package/dist/components/layout/Layout.vue.d.ts.map +1 -1
  9. package/dist/components/layout/SidebarMenu.vue.d.ts.map +1 -1
  10. package/dist/components/layout/TabbedLayout.vue.d.ts +38 -0
  11. package/dist/components/layout/TabbedLayout.vue.d.ts.map +1 -0
  12. package/dist/components/layout/Tabs.vue.d.ts +24 -0
  13. package/dist/components/layout/Tabs.vue.d.ts.map +1 -0
  14. package/dist/components/layout/TabsBody.vue.d.ts +21 -0
  15. package/dist/components/layout/TabsBody.vue.d.ts.map +1 -0
  16. package/dist/components/layout/TabsNav.vue.d.ts +25 -0
  17. package/dist/components/layout/TabsNav.vue.d.ts.map +1 -0
  18. package/dist/components/layout/index.d.ts +4 -0
  19. package/dist/components/layout/index.d.ts.map +1 -1
  20. package/dist/components/layout/tabsManager.d.ts +4 -0
  21. package/dist/components/layout/tabsManager.d.ts.map +1 -0
  22. package/dist/index.cjs +778 -2031
  23. package/dist/index.mjs +780 -2033
  24. package/dist/style.css +415 -499
  25. package/dist/types/index.d.ts +7 -1
  26. package/dist/types/index.d.ts.map +1 -1
  27. package/dist/types/materialIcons.d.ts +1 -1
  28. package/dist/types/materialIcons.d.ts.map +1 -1
  29. package/dist/utils/index.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/components/MaterialIcon.vue +3 -2
  32. package/src/components/PageTitle.vue +10 -20
  33. package/src/components/form/BglField.vue +2 -2
  34. package/src/components/form/BglForm.vue +0 -1
  35. package/src/components/form/inputs/SelectInput.vue +128 -484
  36. package/src/components/index.ts +0 -2
  37. package/src/components/layout/Layout.vue +34 -13
  38. package/src/components/layout/SidebarMenu.vue +22 -22
  39. package/src/components/layout/TabbedLayout.vue +79 -0
  40. package/src/components/layout/Tabs.vue +19 -0
  41. package/src/components/layout/TabsBody.vue +15 -0
  42. package/src/components/layout/TabsNav.vue +48 -0
  43. package/src/components/layout/index.ts +4 -0
  44. package/src/components/layout/tabsManager.ts +18 -0
  45. package/src/styles/appearance.css +42 -0
  46. package/src/styles/layout.css +74 -12
  47. package/src/styles/mobilLayout.css +77 -17
  48. package/src/styles/text.css +153 -1
  49. package/src/types/index.ts +9 -1
  50. package/src/types/materialIcons.ts +1180 -1178
  51. package/src/utils/index.ts +0 -1
  52. package/src/components/ComboBox.vue +0 -171
  53. package/src/components/TabbedLayout.vue +0 -87
@@ -1,527 +1,171 @@
1
1
  <template>
2
- <div>
3
- <label class="txt-start" :for="id">
4
- {{ label }}
5
- <Multiselect
6
- ref="multiselect" :id="id" label="label" trackBy="value" :options="optionList" :required="required"
7
- :placeholder="placeholder" v-model="seletValue" :close-on-select="true" v-bind="extraProps"
8
- />
9
- <!-- <input v-model="dataValue" type="hidden" :name="id" :required v-bind="extraProps"> -->
10
- </label>
11
- </div>
2
+ <Dropdown placement="bottom-start" class="bagel-input selectinput">
3
+ <label>
4
+ {{ label }}
5
+ <button :disabled="disabled" type="button" class="selectinput-btn" @click="toggle">
6
+ {{ valueToLabel(selectedItem) || placeholder || 'Select' }}
7
+ <MaterialIcon v-bind="{ 'icon': open ? 'unfold_less' : 'unfold_more' }" />
8
+ </button>
9
+ <input style="width: 0; height: 0; position: absolute; opacity: 0; z-index: -1;" v-if="required"
10
+ v-model="selectedItem" required>
11
+ </label>
12
+ <template #popper="{ hide }">
13
+ <Card class="selectinput-options p-05" :style="{ width: fullWidth ? '100%' : 'auto' }">
14
+ <TextInput v-if="searchable" ref="searchInput" dense :placeholder="'Search'" icon="search" v-model="search" />
15
+ <div class="selectinput-option hover gap-1" v-for="(option, i) in filteredOptions" :key="`${option}${i}`"
16
+ @click="() => {
17
+ select(option); hide();
18
+ }" :class="{ selected: option === selectedItem }">
19
+ <Icon v-if="isSelected(option)" icon="check" />
20
+ <Icon class="opacity-3" v-if="!isSelected(option)" icon="fiber_manual_record" />
21
+ <span>
22
+ {{ getLabel(option) }}
23
+ </span>
24
+ </div>
25
+ <slot name="last" />
26
+ </Card>
27
+ </template>
28
+ </Dropdown>
12
29
  </template>
13
30
 
14
31
  <script lang="ts" setup>
15
32
  import { watch } from 'vue';
16
- import Multiselect from 'vue-multiselect';
33
+ import { Dropdown } from 'floating-vue';
34
+ import 'floating-vue/style.css';
35
+ import {
36
+ TextInput, Card, Icon, MaterialIcon,
37
+ } from '@bagelink/vue';
17
38
 
18
- type Option = {
19
- label: string;
20
- value: string | number;
21
- };
22
- type RawOption = Option | string | number;
39
+ type Option = string | number | Record<string, any> | { label: string, value: string | number };
40
+ let open = $ref(false);
41
+
42
+ const searchInput = $ref<HTMLInputElement | null>(null);
23
43
 
24
44
  const props = defineProps<{
25
- required?: boolean,
26
- label?: string,
27
- id?: string,
28
- modelValue?: string | number,
29
- placeholder?: string,
30
- defaultValue?: string | number,
31
- options: RawOption[] | string
32
- extraProps?: Record<string, any>
45
+ options: Option[];
46
+ placeholder?: string;
47
+ disabled?: boolean;
48
+ modelValue?: Option;
49
+ searchable?: boolean;
50
+ required?: boolean;
51
+ label?: string;
52
+ fullWidth?: boolean;
33
53
  }>();
54
+ let selectedItem = $ref<Option>();
55
+ let search = $ref('');
34
56
 
35
- let dataValue = $ref<string | number | undefined>(props.modelValue || props.defaultValue);
36
- const multiselect = $ref<Multiselect>();
37
- const emit = defineEmits(['update:modelValue']);
38
- const optionList = $ref<Option[]>([]);
39
-
40
- const seletValue = $computed({
41
- get: () => optionList.find((opt) => opt.value === dataValue),
42
- set: (val?: Option) => {
43
- dataValue = val?.value;
44
- emit('update:modelValue', dataValue);
45
- },
46
- });
47
-
48
- function optnToValueLabel(option: RawOption): Option {
49
- if (typeof option === 'string' || typeof option === 'number') {
50
- return { label: `${option}`, value: option };
51
- }
52
- return option;
53
- }
54
-
55
- function updateOptionList() {
56
- const { options } = props;
57
- const optnLst = typeof options === 'string' ? options.split('\n|,') : options || [];
58
- optionList.push(...optnLst.map(optnToValueLabel));
59
- }
60
-
61
- watch(() => props.options, updateOptionList, { immediate: true });
62
- </script>
63
-
64
- <style>
65
- fieldset[disabled] .multiselect {
66
- pointer-events: none;
67
- }
68
-
69
- .multiselect__spinner {
70
- position: absolute;
71
- right: 1px;
72
- top: 1px;
73
- width: 40px;
74
- height: 38px;
75
- background: #fff;
76
- display: block;
77
- }
57
+ const toggle = () => {
58
+ open = !open;
59
+ if (!open) search = '';
60
+ if (open) setTimeout(() => (searchInput as any)?.$el?.querySelector('input')?.focus(), 100);
61
+ };
78
62
 
79
- .multiselect__spinner::before,
80
- .multiselect__spinner::after {
81
- position: absolute;
82
- content: "";
83
- top: 50%;
84
- left: 50%;
85
- margin: -8px 0 0 -8px;
86
- width: 16px;
87
- height: 16px;
88
- border-radius: 100%;
89
- border-color: var(--bgl-primary-tint) transparent transparent;
90
- border-style: solid;
91
- border-width: 2px;
92
- box-shadow: 0 0 0 1px transparent;
93
- }
63
+ const valueToLabel = (value?: Option) => {
64
+ if (!value) return '';
65
+ const option = props.options.find((option) => {
66
+ if (typeof option === 'string' || typeof option === 'number') return option === value;
67
+ return option.value === value;
68
+ });
69
+ if (!option) return value;
70
+ return getLabel(option);
71
+ };
94
72
 
95
- .multiselect__spinner::before {
96
- animation: spinning 2.4s cubic-bezier(0.41, 0.26, 0.2, 0.62);
97
- animation-iteration-count: infinite;
98
- }
73
+ const emit = defineEmits(['update:modelValue']);
99
74
 
100
- .multiselect__spinner::after {
101
- animation: spinning 2.4s cubic-bezier(0.51, 0.09, 0.21, 0.8);
102
- animation-iteration-count: infinite;
103
- }
75
+ const getLabel = (option: Option) => {
76
+ if (typeof option === 'string') return option;
77
+ if (typeof option === 'number') return `${option}`;
78
+ return option.label;
79
+ };
104
80
 
105
- .multiselect__loading-enter-active,
106
- .multiselect__loading-leave-active {
107
- transition: opacity 0.4s ease-in-out;
108
- opacity: 1;
109
- }
81
+ const isSelected = (option: Option) => {
82
+ if (typeof option === 'string' || typeof option === 'number') return option === selectedItem;
83
+ return option.value === selectedItem;
84
+ };
110
85
 
111
- .multiselect__loading-enter,
112
- .multiselect__loading-leave-active {
113
- opacity: 0;
114
- }
86
+ const filteredOptions = $computed(() => props.options.filter((option) => {
87
+ const searchTerm = new RegExp(search, 'gi');
88
+ if (typeof option === 'string') return option.match(searchTerm);
89
+ if (typeof option === 'number') return `${option}`.match(searchTerm);
90
+ return option.label.match(searchTerm);
91
+ }));
92
+
93
+ const select = (option: Option) => {
94
+ if (typeof option === 'string') selectedItem = option;
95
+ else if (typeof option === 'number') selectedItem = option;
96
+ else selectedItem = option.value;
97
+ emit('update:modelValue', selectedItem);
98
+ open = false;
99
+ };
115
100
 
116
- .multiselect,
117
- .multiselect__input,
118
- .multiselect__single {
119
- font-family: inherit;
120
- font-size: var(--input-font-size);
121
- touch-action: manipulation;
122
- }
101
+ watch(() => props.modelValue, (value) => {
102
+ if (value !== selectedItem) selectedItem = value;
103
+ }, { immediate: true });
104
+ </script>
123
105
 
124
- .multiselect {
125
- box-sizing: content-box;
126
- display: block;
127
- position: relative;
106
+ <style scoped>
107
+ .selectinput {
128
108
  width: 100%;
129
- min-height: var(--input-height);
130
- text-align: left;
131
- color: var(--input-color);
132
- }
133
-
134
- .multiselect * {
135
- box-sizing: border-box;
136
- }
137
-
138
- .multiselect:focus {
139
- outline: none;
140
- }
141
-
142
- .multiselect--disabled {
143
- background: #ededed;
144
- pointer-events: none;
145
- opacity: 0.6;
146
- }
147
-
148
- .multiselect--active {
149
- z-index: 50;
150
109
  }
151
110
 
152
- .multiselect--active:not(.multiselect--above) .multiselect__current,
153
- .multiselect--active:not(.multiselect--above) .multiselect__input,
154
- .multiselect--active:not(.multiselect--above) .multiselect__tags {
155
- border-bottom-left-radius: 0;
156
- border-bottom-right-radius: 0;
157
- }
158
-
159
- .multiselect--active:not(.multiselect--above) .multiselect__tags {
160
- box-shadow: inset 0 0 10px #00000012;
161
- }
162
-
163
- .multiselect--active .multiselect__select {
164
- transform: rotateZ(180deg);
165
- }
166
-
167
- .multiselect--above.multiselect--active .multiselect__current,
168
- .multiselect--above.multiselect--active .multiselect__input,
169
- .multiselect--above.multiselect--active .multiselect__tags {
170
- border-top-left-radius: 0;
171
- border-top-right-radius: 0;
172
- }
173
-
174
- .multiselect__input,
175
- .multiselect__single {
176
- position: relative;
177
- display: inline-block;
178
- border: none;
179
- background: var(--input-bg);
180
- width: calc(100%);
181
- transition: border 0.1s ease;
182
- box-sizing: border-box;
183
- vertical-align: top;
111
+ .selectinput-option {
112
+ padding: 6px 12px;
113
+ cursor: pointer;
114
+ border-radius: 5px;
115
+ transition: all 0.2s;
116
+ display: grid;
117
+ grid-template-columns: 10px 1fr;
118
+ justify-content: space-between;
119
+ width: 100%;
184
120
  font-size: var(--input-font-size);
185
- padding-inline-start: 0rem;
186
- }
187
-
188
- .multiselect--active .multiselect__input {
189
- margin-top: -0.6rem;
190
- }
191
-
192
- .multiselect__input::placeholder {
193
- color: var(--input-color);
194
- }
195
-
196
- .multiselect__tag~.multiselect__input,
197
- .multiselect__tag~.multiselect__single {
198
- width: auto;
199
121
  }
200
122
 
201
- .multiselect__input:hover,
202
- .multiselect__single:hover {
203
- border-color: #cfcfcf;
123
+ .selectinput-options {
124
+ max-height: 300px;
125
+ overflow-y: auto;
204
126
  }
205
127
 
206
- .multiselect__input:focus,
207
- .multiselect__single:focus {
208
- border-color: #a8a8a8;
209
- outline: none;
210
- }
211
-
212
- .multiselect__single {
213
- /* padding-left: 5px; */
214
- margin-bottom: 8px;
128
+ .selectinput-option:hover {
129
+ background: var(--bgl-gray-20);
215
130
  }
131
+ </style>
216
132
 
217
- .multiselect__tags-wrap {
218
- display: inline;
133
+ <style>
134
+ .bagel-input label {
135
+ font-size: var(--label-font-size);
219
136
  }
220
137
 
221
- .multiselect__tags {
222
- /* min-height: 40px; */
223
- display: block;
224
- /* padding: 0.7rem 40px 0.7rem 8px; */
138
+ .selectinput-btn {
139
+ display: flex;
140
+ justify-content: space-between;
141
+ align-items: center;
142
+ height: var(--input-height);
225
143
  border-radius: var(--input-border-radius);
144
+ border: none;
226
145
  background: var(--input-bg);
227
- font-size: var(--input-font-size);
228
- height: var(--input-height);
229
- line-height: 0;
230
- padding: calc(var(--input-height) / 2);
231
- padding-inline-end: 40px;
232
- padding-inline-start: 0.7rem;
233
- }
234
-
235
- .multiselect__tag {
236
- position: relative;
237
- display: inline-block;
238
- padding: 4px 26px 4px 10px;
239
- border-radius: 5px;
240
- margin-right: 10px;
241
- color: #fff;
242
- line-height: 1;
243
- background: var(--bgl-primary-tint);
244
- margin-bottom: 5px;
245
- white-space: nowrap;
246
- overflow: hidden;
247
- max-width: 100%;
248
- text-overflow: ellipsis;
249
- }
250
-
251
- .multiselect__tag-icon {
252
- cursor: pointer;
253
- margin-left: 7px;
254
- position: absolute;
255
- right: 0;
256
- top: 0;
257
- bottom: 0;
258
- font-weight: 700;
259
- font-style: initial;
260
- width: 22px;
261
- text-align: center;
262
- line-height: 22px;
263
- transition: all 0.2s ease;
264
- border-radius: 5px;
265
- }
266
-
267
- .multiselect__tag-icon::after {
268
- content: "×";
269
- color: #266d4d;
270
- font-size: 14px;
271
- }
272
-
273
- /* // Remove these lines to avoid green closing button
274
- //.multiselect__tag-icon:focus,
275
- //.multiselect__tag-icon:hover {
276
- // background: #369a6e;
277
- //} */
278
-
279
- .multiselect__tag-icon:focus::after,
280
- .multiselect__tag-icon:hover::after {
281
- color: white;
282
- }
283
-
284
- .multiselect__current {
285
- line-height: 16px;
286
- min-height: 40px;
287
- box-sizing: border-box;
288
- display: block;
289
- overflow: hidden;
290
- padding: 8px 12px 0;
291
- padding-right: 30px;
292
- white-space: nowrap;
293
- margin: 0;
294
- text-decoration: none;
295
- border-radius: 5px;
296
- /* border: 1px solid #e8e8e8; */
297
- cursor: pointer;
298
- }
299
-
300
- .multiselect__select {
301
- line-height: 16px;
302
- display: block;
303
- position: absolute;
304
- box-sizing: border-box;
305
- /* width: 40px; */
306
- /* height: 38px; */
307
- right: 1px;
308
- top: 1px;
309
- padding: 4px 8px;
310
- margin: 0;
311
- text-decoration: none;
312
- text-align: center;
313
- cursor: pointer;
314
- transition: transform 0.2s ease;
315
- padding-top: calc(var(--input-height) / 2 - 0.7rem);
316
-
317
- }
318
-
319
- .multiselect__select::before {
320
- position: relative;
321
- background-size: contain;
322
- transform: scale(0.5);
323
- color: var(--bgl-black);
324
- content: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='%23b7b7b7' height='24' viewBox='0 -960 960 960' width='24'><path d='M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z'/></svg>");
325
- }
326
-
327
- .multiselect__placeholder {
328
- color: var(--placeholder-color);
329
- display: inline-block;
330
- margin-bottom: 10px;
331
-
332
- }
333
-
334
- .multiselect--active .multiselect__placeholder {
335
- display: none;
336
- }
337
-
338
- .multiselect__content-wrapper {
339
- position: absolute;
340
- display: block;
341
- background: #fff;
146
+ padding: 0.7rem;
147
+ color: var(--input-color);
342
148
  width: 100%;
343
- max-height: 240px;
344
- overflow: auto;
345
- box-shadow: 0 0 10px #00000012;
346
- border-top: none;
347
- border-bottom-left-radius: 5px;
348
- border-bottom-right-radius: 5px;
349
- z-index: 150;
350
- -webkit-overflow-scrolling: touch;
351
- }
352
-
353
- .multiselect__content {
354
- list-style: none;
355
- display: inline-block;
356
- padding: 0;
357
- margin: 0;
358
- min-width: 100%;
359
- vertical-align: top;
360
- }
361
-
362
- .multiselect--above .multiselect__content-wrapper {
363
- bottom: 100%;
364
- border-bottom-left-radius: 0;
365
- border-bottom-right-radius: 0;
366
- border-top-left-radius: 5px;
367
- border-top-right-radius: 5px;
368
- border-bottom: none;
369
- border-top: 1px solid #e8e8e8;
370
- }
371
-
372
- .multiselect__content::-webkit-scrollbar {
373
- display: none;
374
- }
375
-
376
- .multiselect__element {
377
- display: block;
378
- }
379
-
380
- .multiselect__option {
381
- display: block;
382
- padding-inline-start: 12px;
383
- min-height: calc(var(--input-height) * 0.8);
384
- line-height: calc(var(--input-height) * 0.8);
385
- text-decoration: none;
386
- text-transform: none;
387
- position: relative;
388
- cursor: pointer;
389
- white-space: nowrap;
149
+ font-family: inherit;
390
150
  }
391
151
 
392
- .multiselect__option::after {
393
- top: 0;
394
- right: 0;
395
- position: absolute;
396
- width: calc(var(--input-height) * 0.8);
397
- height: calc(var(--input-height) * 0.8);
398
- ;
399
- text-align: center;
400
- font-size: 13px;
152
+ .selectinput-btn:disabled {
153
+ background: var(--input-disabled-bg);
154
+ color: var(--input-disabled-color);
401
155
  }
402
156
 
403
- .multiselect__option--highlight {
404
- background: var(--bgl-primary-light);
157
+ .selectinput-btn:focus {
405
158
  outline: none;
406
- color: var(--bgl-primary);
407
- }
408
-
409
- .multiselect__option--selected {
410
- background: var(--bgl-primary);
411
- color: var(--bgl-white);
412
- font-weight: bold;
413
- }
414
-
415
- .multiselect__option--selected.multiselect__option--highlight {
416
- filter: brightness(0.9);
417
- color: #fff;
418
- }
419
-
420
- .multiselect__option--selected.multiselect__option--highlight::after {
421
- content: "✕";
422
- color: var(--bgl-white);
423
- }
424
-
425
- .multiselect--disabled .multiselect__current,
426
- .multiselect--disabled .multiselect__select {
427
- background: #ededed;
428
- color: #a6a6a6;
429
- }
430
-
431
- .multiselect__option--disabled {
432
- background: #ededed !important;
433
- color: #a6a6a6 !important;
434
- cursor: text;
435
- pointer-events: none;
436
- }
437
-
438
- .multiselect__option--group {
439
- background: #ededed;
440
- color: var(--input-color);
441
- }
442
-
443
- .multiselect__option--group.multiselect__option--highlight {
444
- background: var(--input-color);
445
- color: #fff;
446
- }
447
-
448
- .multiselect__option--group.multiselect__option--highlight::after {
449
- background: var(--input-color);
450
- }
451
-
452
- .multiselect__option--disabled.multiselect__option--highlight {
453
- background: #dedede;
454
- }
455
-
456
- .multiselect__option--group-selected.multiselect__option--highlight {
457
- background: var(--bgl-red);
458
- color: #fff;
459
- }
460
-
461
- .multiselect__option--group-selected.multiselect__option--highlight::after {
462
- background: var(--bgl-red);
463
- content: attr(data-deselect);
464
- color: #fff;
465
- }
466
-
467
- .multiselect-enter-active,
468
- .multiselect-leave-active {
469
- transition: all 0.15s ease;
470
- }
471
-
472
- .multiselect-enter,
473
- .multiselect-leave-active {
474
- opacity: 0;
475
- }
476
-
477
- .multiselect__strong {
478
- margin-bottom: 8px;
479
- line-height: 20px;
480
- display: inline-block;
481
- vertical-align: top;
482
- }
483
-
484
- *[dir="rtl"] .multiselect {
485
- text-align: right;
486
- }
487
-
488
- *[dir="rtl"] .multiselect__select {
489
- right: auto;
490
- left: 1px;
491
- }
492
-
493
- *[dir="rtl"] .multiselect__tags {
494
- padding: calc(var(--input-height) / 2);
495
- padding-inline-end: 40px;
496
- padding-inline-start: 0.7rem;
497
- }
498
-
499
- *[dir="rtl"] .multiselect__content {
500
- text-align: right;
501
- }
502
-
503
- *[dir="rtl"] .multiselect__option::after {
504
- right: auto;
505
- left: 0;
506
- }
507
-
508
- *[dir="rtl"] .multiselect__clear {
509
- right: auto;
510
- left: 12px;
159
+ box-shadow: inset 0 0 10px #00000012;
511
160
  }
512
161
 
513
- *[dir="rtl"] .multiselect__spinner {
514
- right: auto;
515
- left: 1px;
162
+ .v-popper__arrow-container {
163
+ display: none;
516
164
  }
517
165
 
518
- @keyframes spinning {
519
- from {
520
- transform: rotate(0);
521
- }
522
-
523
- to {
524
- transform: rotate(2turn);
525
- }
166
+ .v-popper--theme-dropdown .v-popper__inner {
167
+ border: none;
168
+ background: transparent;
169
+ border-radius: var(--card-border-radius);
526
170
  }
527
171
  </style>
@@ -8,7 +8,6 @@ export { default as ModalForm } from './ModalForm.vue';
8
8
  export { default as AccordionItem } from './AccordionItem.vue';
9
9
  export { default as ListView } from './ListView.vue';
10
10
  export { default as ListItem } from './ListItem.vue';
11
- export { default as TabbedLayout } from './TabbedLayout.vue';
12
11
  export { default as Comments } from './Comments.vue';
13
12
  export { default as PageTitle } from './PageTitle.vue';
14
13
  export { default as TableSchema } from './TableSchema.vue';
@@ -19,7 +18,6 @@ export { default as Card } from './Card.vue';
19
18
  export { default as Avatar } from './Avatar.vue';
20
19
  export { default as Title } from './Title.vue';
21
20
  export { default as Accordion } from './Accordion.vue';
22
- export { default as ComboBox } from './ComboBox.vue';
23
21
  export { default as Alert } from './Alert.vue';
24
22
  export { default as Badge } from './Badge.vue';
25
23
  export { default as BglVideo } from './BglVideo.vue';